【分享】Linux Devicetree的delete-node的注意事项

最近编辑Linux Devicetree后,编译时得到错误 “ Reference to non-existent node or label "hdmi_input_v_frmbuf_wr_0hdmi_input_axis_broadcaster_0" ”。可是hdmi_input_v_frmbuf_wr_0hdmi_input_axis_broadcaster_0对应的节点,已经被使用命令“/delete-node/”删除。反复检查Devicetree,没有发现明显错误。但是在反汇编的dts里检查,对应的节点确实还存在,说明删除节点的部分没有工作。

于是搜索“/delete-node/”的说明,在Device Tree Source Undocumented发现,它使用“/delete-node/”的格式如下:

/ {

	node-2@2 {
		/delete-property/ node-2-pa;
	};

	node-3@3 {
		/delete-property/ node-3-pa;
	};

	/delete-node/ node-4@4;

};

/delete-node/ &node_5_label;

按上述例子,应该在在父节点中使用节点名称(Node Name)删除节点,或者在顶层使用&和标签名称(Label)删除节点。

于是参照它的格式,改为使用节点名称(Node Name),在父节点中使用如下代码,删除了对应的节点。再在反汇编的dts里检查,对应的节点果然已经删除。

/delete-node/ axis_broadcasterhdmi_input_axis_broadcaster_0@0;

参考文档:
Devicetree Source Format version 1
Device Tree Customization
Device Tree Source Undocumented
Device Tree 详解

原文地址:https://www.cnblogs.com/hankfu/p/15065818.html