Menu Close

设备树节点属性

此文章介绍了设备树中的节点属性。

相关参考文章:SOC 教学教案

 

为了为设备树定义一个节点,它将需要跟随以下格式:

[label:]node-name[@unit-address]{
    [properties definitions]     // 属性定义
    [child nodes]                // 子节点
};

注意[label:]方括号 [] 中的部分可以留空。加上 label 使其更容易被 .dts 文件中的其他节点引用。

node-name 是节点的名字,并且可以设为任何 ASCII 字符组成的字符串。建议让名字帮助描述函数的功能,例如把一个UART1 外设节点命名为 uart1

unit-address 表示设备的地址或存储基地址,如果没有的话可以将其留空,比如 cpu@0 或 interrupt 节点。

如前所述,节点可以拥有父子关系。下面将显示一个例子。

cpus{
    #address-cells = <1>;
    #size-cells = <0>;
    cpu0:cpu@0{
        compatible = “arm,cortex-a9”;
        device_type = “cpu”;
        reg = <0>;
        clocks = <&clkc 3>;
        clock-latency = <1000>;
        cpu0-supply = <&regulator_vccpint>;
        operating-points = <
                /* kHz uV */
                666667 1000000
                333334 1000000
                >;
    };

    cpu1:cpu@1{
        compatible = “arm,cortex-a9”;
        device_type = “cpu”;
        reg = <1>;
        clocks = <&clkc 3>;
    };
};

注意第一行的cpus节点只有名字。此节点有两个属性:#address-cells 和 #size-cells,值分别为 <1> 和 <0>。

我们将在下一页开始讲述其他节点属性。

节点属性可以是以下六种类型中任意一种:

  • String(字符串)
compatible = “arm,cortex-a9”;

字符串包在双引号之间。从上面的例子中可以看到compatible的属性值为 “arm,cortex-a9”。

 

  • 32-bit unsigned integer(32位无符号整型数据)
clock-latency = <1000>;
reg = <0x00000000 0x00500000>;

无符号整型数据包在尖括号中。从上面的例子中可以看到 clock-latency 是 32 位无符号整形数据,并且值为 1000。也可以看到 reg 拥有两个数据,中间被空格隔开,因此可以将其识别为数组。

 

  • Binary(二进制)
local-mac-address = [00 0a 35 00 le 53];

二进制数据包在方括号中。从上面的例子中可以看到它是一个二进制数据组成的数组。

 

  • String array(字符串数组)
compatible = “n25q512a”,“micron,m25p80”;

注意属性也可以是字符串列表,如上所示。字符串之间被逗号分开。

 

  • Mixed values(混合值)
mixed-property = “string”,[0x01 0x23 0x45 0x67],<0x12345678>;

注意属性可以是不同类型的组合,之间用逗号分开。

 

  • Node referencing(节点引用)
clocks = <&clkc 3>;

&clkc 表示引用clkc节点,并且整个操作包在尖括号中。

Posted in 教材与教案

发表评论

相关链接