写点什么

设备树的引入与体验

作者:贾献华
  • 2022 年 7 月 30 日
  • 本文字数:771 字

    阅读完需:约 3 分钟

  1. 有 Linux 驱动开发基础的人, 可以挑感兴趣的章节观看

  2. 没有 Linux 驱动开发基础但是愿意学习的人,请按顺序全部观看,我会以比较简单的 LED 驱动为例讲解

  3. 完全没有 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 获得硬件资源


特点:易于扩展,但是有很多冗余代码(每种配置都对应一个platform_device结构体), 硬件有变动时需要重新编译内核或驱动程序。
复制代码


c.3 使用设备树指定硬件资源: 驱动程序也分为两部分(platform_driver, 设备树*.dts)在设备树*.dts 中指定硬件资源, dts 被编译为 dtb 文件, 在启动单板时会将 dtb 文件传给内核,内核根据 dtb 文件分配/设置/注册多个 platform_device


platform_driver的编写方法跟"总线设备驱动模型"一样。
特点:易于扩展,没有冗余代码硬件有变动时不需要重新编译内核或驱动程序,只需要提供不一样的dtb文件
注: dts - device tree source // 设备树源文件 dtb - device tree blob // 设备树二进制文件, 由dts编译得来 blob - binary large object
复制代码

来自:<https://www.100ask.net/>

用户头像

贾献华

关注

及时当勉励 岁月不待人 2018.06.04 加入

https://2022.iosdevlog.com

评论

发布
暂无评论
设备树的引入与体验_7月月更_贾献华_InfoQ写作社区