以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
设备树(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平台。