DTS,DTC, DTB你都认识吗?

时间:2022-05-08
本文章向大家介绍DTS,DTC, DTB你都认识吗?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在现在的linux内核中都采用设备树来管理资源分配和模块装载,减少依赖性,在树莓派的内核系统中也是这样,设备树其实就是硬件资源的描述文件,代表硬件配置的节点,每一个节点又可以包括子节点和属性。设备树文件一般都是以.dts为后缀的文本文件,即我们常说的DTS(Device TreeSource), 语法有点像C语言,但还是有区别的,要注意。如下面的文件就是一个DTS文件

/dts-v1/;
/include/ "common.dtsi";
/ {
    node1 {
        a-string-property ="A string";
       a-string-list-property = "first string", "secondstring";
        a-byte-data-property= [0x01 0x23 0x34 0x56];
        cousin: child-node1{
            first-child-property;
           second-child-property = <1>;
           a-string-property = "Hello, world";
        };
        child-node2 {
        };
    };
    node2 {
        an-empty-property;
        a-cell-property =<1 2 3 4>; /* each number (cell) is a uint32 */
        child-node1 {
            my-cousin =<&cousin>;
        };
    };
};
/node2 {
   another-property-for-node2;
};

这里大家要注意一点一个DTS文件可以包含其他的DTS文件,如上图中的/include/"common.dtsi";这有点像C语言中的头文件包含。

那么这个DTS文件经过DTC(DeviceTree Compiler)编译后就变为DTB(DeviceTree Blob)文件。

关于更多DTS的语法和用法大家可以参考内核文档的booting-without-of.txtusage-model.txt文件内容。关于设备树中的节点和属性是如何来描述硬件细节的可以参考bindings文件中的文档,都有详细的说明。设备树的理解和应用也是一个难点,希望大家都理解和掌握。