代码改变世界

Android深度探索(卷1)HAL与驱动开发 第七章 LED将为我闪烁:控制发光二极管 读书笔记

2016-07-03 17:10  sxauzzz  阅读(241)  评论(0编辑  收藏  举报

本章的实验将会实现真正意义上的Linux驱动,会实现直接与硬件的交互。需要控制4LED灯。

7.1LED驱动的实现原理

事实上并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。

7.2编写LED驱动

1.创建LED驱动的设备文件

(1).使用cdev_init函数初始化cdev

(2).指定设备号

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

(4)使用class_create宏创建struct class

(5)使用device_create函数创建设备文件

2.卸载LED驱动的设备文件

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

4.控制LED

7.4LED驱动的移植

由于LED驱动并未调用太多的Linux内核API,而这些API丢失的可能性也不大,因此移植到内核只需要重新编译即可。移植Linux驱动有一条非常重要,就是在修改Linux驱动的源代码时,应尽量不修改Linux驱动的接口。

 

在一个完整的Linux驱动中,主要由内部处理与硬件交互两部分组成。如果在不同版本之间的Linux间移植,主要移植第一部分,在不同硬件平台上,则主要第二部分。

软件1308班31号 张帆 博客园地址: http://home.cnblogs.com/u/sxauzzz/