设备树 DTS

设备树简介

设备树的组成

设备树:由1个dts文件+n个dtsi文件组成,它们编译而成dtb(二进制的可执行文件)

dts: 在ARM Linux在,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录
dtsi: soc厂商会把soc公共的特性和多块开发板公用的特性提炼为dtsi,而dts则负责描述某个具体的产品(开发板)的特性。dts直接或间接的包含多个dtsi(类似于c语言的头文件,使用include包含),就体现了一个完整的产品(开发板)所有的特性
dtb: dtb(Device Tree Blob),dts经过dtc编译之后会得到dtb文件,dtb通过Bootloader引导程序加载到内核。所以Bootloader需要支持设备树才行;Kernel也需要加入设备树的支持

常用节点

/{
    //   "/{" 表示 根节点 ,dts最开始的地方,可以理解为程序的main入口

    //子节点
    cpu{
      // cpu节点
        name = val; // 属性名name,val是属性值。
        //val形式:
        //1  值
        //2)"string"(双引号括起来);
        //3)<u32 u32 u32> (尖括号,有多少个32位就放多少个,空格间隔);
        //4) [12 34 56](16进制单字节)。
        // val可以是这3种形式组合,如<0x123>,"abcd",[34]

        #address-cells = <1>;  
        #size-cells = <0>;  
        cpu@0 {
     
            compatible = "arm,cortex-a9";  
            reg = <0>;  
        };  
        cpu@1 {
     
            compatible = "arm,cortex-a9";  
            reg = <1>;  
        };
    };

    //子节点
    memory{
    // 内存节点
        
    };

    //子节点
    I2C{
    // I2C控制器节点
        
    };
};

注意cpus和cpus的2个cpu子结点的命名,它们遵循的组织形式为:

name(必选项)@unit-address(可选项)

name(必选项):是一个ASCII字符串,用于描述结点对应的设备类型
如3com Ethernet适配器对应的结点name宜为ethernet,而不是3com509。

unit-address(可选项)
如果一个结点描述的设备有地址,则应该给出**@unit-address**。
多个相同类型设备结点的name可以一样,只要unit-address不同即可,
如本例中含有cpu@0、cpu@1以及serial@101f0000与serial@101f2000这样的同名结点。

常用属性

例子

/ {
     
    compatible = "acme,coyotes-revenge";  
    #address-cells = <1>;  
    #size-cells = <1>;  
    interrupt-parent = <
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值