T8 高级驱动学习方法
1.回顾
1.1字符设备驱动开发步骤
- 首先要实现模块加载(
xxx_init()
)与卸载函数(xx_exit()
)函数 - 之后申请设备号(
register_chrdev_region()
) - 注册字符设备驱动,
cdev_alloc()
,cdev_init()
,cdev_add()
- 使用udev/mdev机制创建设备文件(设备节点),
class_create
,device_create
- 硬件初始化,具体包含
- io资源映射
ioremap
,内核提供的gpio库函数- 注册中断
- 初始化等待队列
- 初始化定时器
- 构建
file_operation
结构体 - 实现硬件操作方法,
xxx_open
,xxx_read
,xxx_write
,xxx_close
等
1.2框架引入
- 为了使得驱动代码可重用,可维护,可伸缩,使得驱动代码可移植性好,进而引入总线概念