话题引入—如何写LED驱动程序
- 看原理图
- 确定使用的哪些引脚
- 看芯片手册来确定如何操作引脚
- 写驱动
- 驱动程序实质上起到“封装”作用,屏蔽硬件细节
- 实现APP层对应的open、read、write等函数
- 以面向对象思想构造一个结构体,设置结构体
- 写测试程序
哪三种写法?
- 传统写法—在代码中写死
- 总线设备驱动模型—驱动中做硬件无关的事情,设备中指定硬件资源
- 设备树—指明硬件资源
以上三种写法核心不变,差别在于如何去指定硬件资源
三种写法优缺点
| 类型 | 优点 | 缺点 |
|---|---|---|
| 传统写法 | 简单粗暴 | 不易扩展,设备过多时会产生冗余代码 |
| 总线设备驱动 | 易扩展,将软硬件分离,稍复杂 | 稍复杂设备过多时会产生冗余代码 |
| 设备树 | 易扩展,无冗余代码,无需重新编译内核/驱动 | 稍复杂 |
