通過第七章的學習,使自己對驅動程序的認識更加深刻,LED燈的驅動程序幫我我學到很多,還學會了驅動的移植。
學到的知識:
一、編寫LED驅動
1、創建LED驅動的設備文件
第一步:使用cdev_init函數初始化cdev
leds_cdev.owner = TRIS_MODULE;
第二步:指定設備號
設備號指定方法:1.直接在代碼中指定;2.動態分配。
第三步:使用cdev_add函數將字符設備添加到內核中的字符設備數組中
第四步:使用class_create宏創建struct class
第五步:使用device_create函數創建設備文件
device_create(ldes_class, NULL, dev_number, NULL, DEVICE_NAME);
2、卸載LED驅動的設備文件
void device_destroy(struct class *class, dev_t devt)
void class_destroy(struct class *cls)
void unregister_chrdev_region(dev_t from, unsigned count)
3、設置寄存器與初始化LED驅動
LED的兩個引腳:GPB0和GPB1
4、控制LED
1.通過字符串控制LED
2.通過I/O命令控制LED
5、LED驅動的模塊參數
使用module_param宏指定模塊參數
6、LED驅動的完整代碼
二、測試LED驅動
1、編寫測試I/O控制命令的通用程序
LED與設備文件交互的方式:直接寫入字符串數據和I/O控制命令。
執行ioctl命令的語法格式:
ioctl <設備文件> <cmd> <arg>
2、使用NDK測試LED驅動
3、使用Java測試LED驅動
三、LED驅動的移植
移植Linux驅動時,在修改Linux驅動的源代碼時,應盡量不修改Linux驅動的接口。