• 设备树的通识


    以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。


    一、设备树是什么?

    设备树(device tree),是linux内核中采用的一种参数表示和传递技术。

    它涉及以下内容:

    (1)dts,device tree source,设备树源文件。

    (2)dtc,device tree compiler,设备树编译、反编译、调试工具。

    (3)dtb,device tree blob,二进制设备树镜像文件(dts经过dtc编译得到dtb)。


    二、为什么需要设备树?

    设备树的典型应用场景是内核设备驱动,因此我们以驱动为例分析设备树出现的意义。

    驱动源码包括2大部分,即策略(操作函数)和数据(硬件信息)。

    没有设备树技术之前,策略和数据都在kernel源码中硬编码,这导致kernel源码中充斥着大量的描述硬件信息的文件,污染内核。


    三、设备树技术如何工作?

    首先,驱动开发者根据硬件和自己的需求,编写或者改写dts。

    接着,在编译kernel时,kernel内部会先编译出dtc,然后利用dtc将dts加工成dtb。

    接着,uboot在启动kernel时,会告知kernel在哪里找dtb。

    最后,在kernel启动初期,会调用内部函数去解析dtb,得到硬件信息,并组装成数据结构,配合策略函数工作。


    四、设备树应该怎么学?

    第一层:了解级。不做具体开发。理解设备树原理和实现过程、应用情况即可。

    第二层:入门级。基本会用。第一层 + 理解dts格式和关键词、会简单修改和适配。

    第三层:深入级。全面掌握。第二层 + 深入理解dts实现的全部关键代码。

    第四层:资深级。丰富经验。第三层 + 熟悉各种芯片平台、各内核版本的设备树具体实现


    五、本系列有哪些内容?

    本课程主要内容1:设备树整个实现流程,源码级分析和梳理。

    本课程主要内容2:设备树源码dts的格式和关键词解读。

    本课程主要内容3:设备树实战验证,基于HI3516DV300平台。

  • 相关阅读:
    Hbase 迁移小结:从实践中总结出的最佳迁移策略
    恩智浦i.MX6Q开发板软硬件全开源提供核心板原理图
    SpringBoot集成mysql-connector-java数据库驱动
    【SQL 中级语法 3】三值逻辑和NULL
    JavaWeb三大组件-Filter
    【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
    每日三题 9.09
    sparksql broadcast join opt
    第9关:生成器与 yield
    技术分享 | Jenkins中,如何管理用户及其相对应权限?
  • 原文地址:https://blog.csdn.net/oqqHuTu12345678/article/details/127449309