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

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

第七章演示如何开发一个完整的、真正意义上的Linux驱动,通过向Linux驱动发送数据可以控制LED小灯的开关。

第一节LED驱动的实现原理

       Linux驱动不是直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。I/O内存时通过各种接口连接到主机和硬件在主机内存中的映射。Linux内核的内存管理模块负责同步I/O内存与硬件中的数据。每一个连接Linux的硬件在I/O内存中都会有映射地址。开发板上的LED也有其映射的首地址。

第二节编写 LED驱动 交互方式:命令和读写设备文件

       体验LED驱动的奇妙

              LED驱动以动态驱动模块(.ko文件)的形式提供。

创建LED驱动的设备文件

       使用cdev_init函数初始化cdev

       指定设备号

       使用cdev_add函数将字符设备添加到内核中的字符设备数组中。

       使用class_create宏创建struct class

       使用device_creat函数创建设备文件

卸载LED驱动的设备文件

设置寄存器与初始化LED驱动

控制LED

LED驱动的模块参数

LED驱动的完整代码

      

 

第三节测试LED驱动

       编写测试I/O控制命令的通用程序

       使用NDK测试LED驱动

       使用Java测试LED驱动

第四节LED驱动的移植

       Linux驱动最简单的移植就是将其在不同Linux内核版本下进行编译。

       如果需要移植到另一个Linux内核,只需要修改驱动代码就可以,而不用修改测试程序就可以直接在目标开发板上运行。

       移植Linux驱动尽量不修改Linux驱动的接口,所有调用Linux驱动的程序都不需要修改,不会在成不必要的麻烦。

posted @ 2016-06-06 22:24  maxgty  阅读(90)  评论(0编辑  收藏  举报