话题引入—如何写LED驱动程序

  1. 看原理图
    1. 确定使用的哪些引脚
    2. 看芯片手册来确定如何操作引脚
  2. 写驱动
    1. 驱动程序实质上起到“封装”作用,屏蔽硬件细节
    2. 实现APP层对应的open、read、write等函数
    3. 以面向对象思想构造一个结构体,设置结构体
  3. 写测试程序

哪三种写法?

  1. 传统写法—在代码中写死
  2. 总线设备驱动模型—驱动中做硬件无关的事情,设备中指定硬件资源
  3. 设备树—指明硬件资源

以上三种写法核心不变,差别在于如何去指定硬件资源

三种写法优缺点

类型 优点 缺点
传统写法 简单粗暴 不易扩展,设备过多时会产生冗余代码
总线设备驱动 易扩展,将软硬件分离,稍复杂 稍复杂设备过多时会产生冗余代码
设备树 易扩展,无冗余代码,无需重新编译内核/驱动 稍复杂