设备树 删除设备树节点

设备树支持删除一个节点,或者删除一个节点的属性。

在一个硬件平台的设备树文件board.dts中,我们通常使用C语言的预处理命令#include “cpu.dtsi”这个公共设备树头文件。

如果在你的硬件平台上,有些硬件配置有变动,此时就可以在你的board.dts文件中,来修改cpu.dtsi文件中的某些属性或者节点,或者删除某些属性、某些节点。

比如在cpu.dtsi设备树头文件中,定义了2个串口:

/dts-v1/;

/ {

    uart@0x10000000 {
        reg = <0x10000000 0x1000>;
    };
    uart@0x10001000 {
        reg = <0x10001000 0x1000>;
    };

};

在你的开发板上,只使用了其中一个,那么就没有必要再初始化另一个串口来耗电了。可以选择不初始化另一个串口设备,那么在你对应的board.dts文件中,就可以删除掉这个串口节点:

/dts-v1/;
#include "cpu.dtsi"
/ {

    uart@0x10000000 {
        /delete-property/ reg;
    };

    /delete-node/ uart@0x10001000;

};

如上,可以通过/delete-property/删除uart@0x10000000节点的reg属性;
通过/delete-node/删除了uart@0x10001000属性。
最后的board.dts文件展开后,就变成了:

/ {

    uart@0x10000000 {
    };

};
驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,内含Linux设备树课程,教你如何修改设备树文件和基于设备树接口开发驱动。详情点击:王利涛老师个人淘宝店:Linux内核编程