在上一章中了解到驱动程序的开发步骤,并一个实列来演示如何开发一个完整的驱动。但这个驱动只是简单的演示了实现步骤。真正的驱动需要与硬件直接进行相互交互。这节完整的演示驱动程序,控制开发板上的4个led灯闪烁。在开发前我们了解下工作原理。linux驱动直接与硬件打交道,但并不是驱动直接向硬件中的内存协数据,而是本机的输入输出进行交互。系统中提供了多种交互的函数,每个系统的硬件在IO中都会有映射首地址。在使用等函数写内存是要指定这些首地址,编写驱动前了解下LED驱动功能,并在开发板上测试LED。驱动会建立一个设备文件,给文件可以控制4个等,通过向文件发送字符串来控制等。1代表开、0表示关。

创建LED驱动的设备文件,

第一步:使用cdev_init函数初始化cdev、

第二步:指定设备号、

第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中

第四步:宏创建struct class、

第五步:使用device_create函数创建设备文件,卸载驱动文件,这比之以上比较简单,需要调用device_destroy、class_destroy 和unregister_chrdev_region方法。大致了解寄存器与初始化LED驱动。控制led有两种方式,通过字符串控制,用i/o命令来控制LED。 led驱动的模块参数,前面编写LED驱动可以设置4个LED的默认状态。测试LED驱动,前面介绍了通过执行BUILD。sh脚本来编译安装LED驱动,并使用Shell命令和test_led_sh脚本来测试驱动。这些测试方式只能通过向led设备文件发送字符串来控制。LDE驱动移植,驱动移植问题一直在被讨论中,当然现如今大多数都是在做移植。系统能否正常运行,大多数是看是否能识别各种硬件。led是本书总一个真正的和硬件打交道的驱动,虽然不复杂,只是控制了四个led已经包含了驱动的所有必要部分。

http://www.cnblogs.com/ligang1307/

第七章 LED 将为我闪烁:控制发光二级管的更多相关文章

  1. 第七章 LED将为我闪烁:控制发光二极管

    该Linux驱动用来控制开发板上的4个LED灯,即通过向Linux驱动发送数据可以控制LED灯的开关.LED驱动提供两种交互方式:命令和读写设备文件. 测试LED驱动之前需用USB线连接开发板,然后打 ...

  2. 第七章 LED将为我闪烁:控制发光二级管

    LED驱动开发实验 如图所示,LED1-LED2 分别与GPC0_3.GPC0_4 相连,通过GPC0_3.GPC0_4 引脚的高低电平来控制三极管的导通性,从而控制LED 的亮灭. 根据三极管的特性 ...

  3. 第七章 LED将为我们闪烁:控制发光二极管

     第七章 LED将为我们闪烁:控制发光二极管 本章我们将会看到一个完整的linux驱动程序,通过linux驱动程序控制LED的四个小灯,通俗的说就是通过向linux驱动程序来控制LED小灯的开关.用到 ...

  4. 第7章 LED将为我闪烁:控制发光二极管

    所谓I/O内存是通过各种接口连接到主机的硬件在主机内存的映射.LED驱动还提供了两种交互方式:命令和读写设备文件. 创建设备文件的步骤: 第1步:使用cdev_init函数初始化cdev 第2步:指定 ...

  5. 第七章:LED将为我闪烁:控制发光二极管

        在之前章节了解到Linux驱动程序可以控制软硬件,可以实现软硬件之间的交互.在这章我们学习LED驱动的实现原理.Linux内核提供了多个与I/O内存交互的函数可以实现控制硬件.    编写LE ...

  6. LED将为我闪烁:控制发光二极管

      一个完整的linux驱动主要由内部处理和与硬件交互两部分组成.其中内部处理主要是指linux驱动的装载.卸载.与设备文件相关的动作处理以及业务逻辑等:与硬件交互主要是指通过iowrite32.io ...

  7. Android系统移植与驱动开发——第七章——LED驱动

    LED驱动的实现原理 编写LED驱动: 测试LED驱动之前需要用USB数据线连接开发板,然后打开电源,成功启动之后,执行build.sh脚本文件编译和安装LED驱动,顺利则会自动连接 如果有多个设备文 ...

  8. 第七章Bulk设备

    小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paul ...

  9. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

随机推荐

  1. spring+mybatis+springmvc的配置

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?><web-app version=&qu ...

  2. Android在代码中使用布局文件中的一个组件

    使用前必须要把组件与其父组件的关系断开,比如有一个组件的名称为scrollChildLayout,则可以使用下面的代码进行分离 ((ViewGroup)scrollChildLayout.getPar ...

  3. 今天遇到了批量删除 redis 某个前缀的所有 key,发现只能是这么解决。

    redis-cli KEYS "php*" | xargs redis-cli DEL 利用 linux的 管道输出命令 xargs 根据返回结果逐条 删除.   上面这条命令 可 ...

  4. PHP 捕捉错误,记录到日志

    register_shutdown_function("shutdown"); define('ERR_LOG_FILE', '/dev/shm/php_log.txt'); if ...

  5. python对XML的解析

    原文:http://blog.csdn.net/yueguanghaidao/article/details/7265246 python有三种方法解析XML,SAX,DOM,以及ElementTre ...

  6. 使用php-cs-fixer格式化你的代码

    在开发中,我们会有意识的遵行一套规范来保证团队代码的一致性.PSR是我们PHP遵循的共同规范. 在这里,推荐一个代码格式化工具php-cs-fixer,可以一键把代码格式化为PSR-2的标准. 安装: ...

  7. sql中binary_checksum(*)的用法

    sql中binary_checksum(*)的用法(转) binary_checksum(*)可以用来检查修改过的行. 同一行在update后,该行的binary_checksum(*)就不同. 如 ...

  8. python的各种编辑器-PyScripter、pycharm 、atom、vscode、Sublime Text等等

    RT,本文主要列举python的各种编辑器-PyScripter.pycharm .atom.vscode.Sublime Text等等. PyScripter 开源 免费 windows only ...

  9. kanboard邮件通知

    1. 复制config.default.php为config.php 2. 修改一下内容 define('MAIL_TRANSPORT', 'smtp');define('MAIL_SMTP_HOST ...

  10. 转载——C++控制台贪吃蛇代码

    游戏截图: 以下是3个代码文件: Snake_Class.h文件: 1 #ifndef SNAKE 2 #define SNAKE 3 4 #include<windows.h> 5 #i ...