在上一章中了解到驱动程序的开发步骤,并一个实列来演示如何开发一个完整的驱动。但这个驱动只是简单的演示了实现步骤。真正的驱动需要与硬件直接进行相互交互。这节完整的演示驱动程序,控制开发板上的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. solr索引服务器的配置和solrj集成开发总结

    一.环境:solr6.2 + jdk1.8 + tomcat8   (solr不同版本需要最低的环境不同) solr6 需要至少jdk1.8   .对应的solr5+jdk1.7+tomcat7 实测 ...

  2. 繁星——jquery的data()方法

    今天在看JQuery文档的时候偶然看到了data()方法,觉得挺好用的,这里做个记录. 这个方法用于在元素上存放数据,返回jQuery对象.在文档中提到V1.4.3 新增用法NEW data(obj) ...

  3. 对jQuery ajax三级级联的简单研究

    最近写程序的时候经常遇到使用ajax获取数据的问题,刚好昨天遇到ajax写三级级联问题,自己写了一个简单的级联.对于服务端获取数据的就不多写了,客户端的ajax发送请求我在这里详细说一下,因为我也没专 ...

  4. 浅谈学习掌握linux系统的优势

    Linux系统让我们懂得了共享.开放.自由可以让人类生活的更加美好,开源精神是一种让每个从事Linux行业的技术人员从骨子里自豪的情怀,开源产品的兴盛受益于开源社区的强壮根基.Linux真的给了我很多 ...

  5. Struts2配置文件详解

    解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...

  6. 使用 VS2005 通过按钮自动上传文件到Linux

    首先去官网下载 winscp,官网地址:http://winscp.net/eng/download.php 因为我这里是做自动上传工具,所以我只下载了精简版的:Portable executable ...

  7. CSS3背景

      1.背景的五种基本属性 background-color(背景颜色) background-image(背景图片) background-repeat(背景图片展示方式) background-a ...

  8. hbase数据迁移-HDFS拷贝

    1.把数据表test从hbase下拷出 hdfs dfs -get /hbase/data/default/test /home/hadoop/hbase/test 2.文件放到新集群的系统上 scp ...

  9. flexbox实现不等宽不等高的瀑布流布局

    第一次做不等宽不等高的瀑布流布局,刚开始企图用ccs3的column属性+flexbox来实现,瞎捣鼓半天都没有能弄好, 弱鸡哭晕在厕所(┬_┬),气的午饭都没有吃. 后来逼着自己冷静下来,又捣鼓了1 ...

  10. 基于Jenkins + Git的PHP项目编译脚本

    本文针对的是了解或已经在使用Jenkins和Git的开发者或团队. 本团队使用了Jenkins作为持续集成平台,Git作为版本管理工具,而本人负责的项目是PHP项目,所谓发布项目就是复制文件. 通常有 ...