设备树 label
在设备树(Device Tree)里,label(标签)是一种标识符,可用于给设备树中的节点或者属性起一个具有描述性的名称。借助 label,你能更方便地引用设备树里的节点和属性,让设备树的可读性和可维护性得到提升。
/ {
model = "My Device";
compatible = "mycompany,mymodel";
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a9";
reg = <0>;
};
};
serial0: serial@12340000 {
compatible = "arm,pl011";
reg = <0x12340000 0x1000>;
interrupts = <0 1 4>;
};
};
在上面的例子中,cpu0 和 serial0 就是定义的 label,分别对应 cpu@0 节点和 serial@12340000 节点。
如何使用 label(标签、标号)
在设备树中,你可以使用 & 符号结合 label 来引用对应的节点,进而在其他地方对该节点的属性进行修改或者添加新属性。下面是一个使用 label 的示例:
/ {
model = "My Device";
compatible = "mycompany,mymodel";
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a9";
reg = <0>;
};
};
serial0: serial@12340000 {
compatible = "arm,pl011";
reg = <0x12340000 0x1000>;
interrupts = <0 1 4>;
};
};
&serial0 {
status = "okay";
clock-frequency = <115200>;
};
在这个例子中,&serial0 表示引用之前定义的 serial0 标签所对应的 serial@12340000 节点。之后,就可以对该节点添加新的属性 status 和 clock-frequency。
小结
可以在节点或者属性前添加以冒号结尾的名称来定义一个 label。
利用 & 符号和 label 引用对应的节点,然后对该节点的属性进行修改或者添加新属性。
借助使用 label,你能够让设备树的结构更加清晰,更易于理解和维护。
驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,内含Linux设备树课程,教你如何修改设备树文件和基于设备树接口开发驱动。详情点击:王利涛老师个人淘宝店:Linux内核编程