本章的实验将会实现真正意义上的Linux驱动,会实现直接与硬件的交互。需要控制4个LED灯。
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/