【分享】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 详解
付汉杰 hankf@amd.com