第七章
控制发光二极管:
对于大多数Linux驱动来说,需要直接与硬件交互,本章会完成一个真正意义的Linux驱动:LED驱动,该驱动用了控制开发板上的4个LED小灯,也就是说通过想Linux驱动发送数据可以控制LED小灯的开光。
编写LED驱动
1.创建LED驱动的设备文件:
第1步:使用cdev_init函数初始化cdev;
第2步:指定设备号,Linux设备文件的设备号分为主设备号和次设备号。设备号有直接在代码中指定和动态分配两种指定方法;
第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中;
第4步:使用class_create宏创建struct class;
第5步:使用device_create函数创建设备文件。
2.卸载LED驱动的设备文件,需要依次调用device_destroy、class_destroy和unregister_chrdev_region方法。
3.控制LED,LED驱动可以通过字符串和I/O命令两种方式控制LED。
小结:
通过阅读本章,我了解到LED驱动是本书第一个真正与硬件打交道的Linux驱动,虽然驱动并不复杂,只是控制4个LED,但LED驱动已经包括了Linux驱动所有的必要部分,一个完整的Linux驱动主要有内部处理和与硬件交互两部分组成。