设备树的引入与体验
有 Linux 驱动开发基础的人, 可以挑感兴趣的章节观看
没有 Linux 驱动开发基础但是愿意学习的人,请按顺序全部观看,我会以比较简单的 LED 驱动为例讲解
完全没有 Linux 驱动知识,又不想深入学习的人, 比如应用开发人员,不得已要改改驱动, 等全部录完后,我会更新本文档,那时再列出您需要观看的章节。
第一课.设备树的引入与体验第 01 节_字符设备驱动程序的三种写法 a. 驱动程序编写有 3 种方法:传统方法、使用总线设备驱动模型、使用设备树 b. 这 3 种方法也核心都是一样的: 分配、设置、注册 file_operations 结构体这个结构体中有.open, .read, .write, .ioctl 等成员驱动程序要实现这些成员,在这些成员函数中操作硬件 c. 这 3 种方法的差别在于:如何指定硬件资源,比如如何指定 LED 引脚是哪个
c.1 传统方法: 在驱动程序代码中写死硬件资源, 代码简单/不易扩展 c.2 总线设备驱动模型: 把驱动程序分为两部分(platform_driver, platform_device)在 platform_device 中指定硬件资源,在 platform_driver 中分配/设置/注册 file_operations 结构体, 并从 platform_device 获得硬件资源
复制代码
c.3 使用设备树指定硬件资源: 驱动程序也分为两部分(platform_driver, 设备树*.dts)在设备树*.dts 中指定硬件资源, dts 被编译为 dtb 文件, 在启动单板时会将 dtb 文件传给内核,内核根据 dtb 文件分配/设置/注册多个 platform_device
复制代码
评论