Android深度探索(卷1)HAL与驱动开发 第七章 LED将为我闪烁:控制发光二极管
第七章 LED将为我闪烁:控制发光二极管
读书心得
LED驱动的实现原理
尽管Linux驱动程序直接与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。
编写LED驱动
测试LED驱动
LED驱动的移植
在修改Linux驱动的源代码时,应尽量不要修改Linux驱动的借口。
LED驱动是本书第一个真正和硬件打交道的Linux驱动,虽然LED驱动并不复杂,只是控制了四个LED,但是LED驱动已经包括了Linux驱动所有必要的部分。一个完整的Linux驱动主要由内部处理和与硬件交互部分组成。其中内部处理主要指Linux驱动的装载、卸载、与设备文件相关的动作处理(读写设备文件、向设备文件发送I/O命令等动作)以及业务逻辑等。与硬件交互主要指通过iowrite32、ioread32 等函数与硬件中寄存器进行数据交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同Linux版本之间进行移植,主要是移植第一部分(Linux驱动的内部处理,一般Linux内核版本相差较大时,Linux内核API会有很大差别),如果在不同硬件平台的移植,主要是移植第二部分。淡然,在一些情况下,Linux驱动的移植基本上相当于重新编写一遍Linux驱动,在这种情下,就要更好了解Linux驱动的高级技术。