设备树 删除设备树节点
设备树支持删除一个节点,或者删除一个节点的属性。
在一个硬件平台的设备树文件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内核编程