本章也是通过具体的实例来说明linux驱动的,控制二极管发光,主要知识点如下:
一、编写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驱动的接口。
通过本章学习让我对linux驱动开发有了更深刻的认识,为以后熟练掌握linux驱动开发的编写打下了良好的基础,让我受益匪浅。