英语

设备树动态解析器注释

本文档描述了内核中设备树解析器的实现,该解析器位于 drivers/of/resolver.c 中。

解析器如何工作

解析器的输入是一个使用正确的 dtc 选项编译的任意树,并具有 /plugin/ 标签。 这会生成相应的 __fixups__ 和 __local_fixups__ 节点。

解析器按以下步骤顺序工作

  1. 从活动树中获取最大设备树 phandle 值 + 1。

  2. 将要解析的树的所有本地 phandle 调整该值。

  3. 使用 __local__fixups__ 节点信息,按相同的量调整所有本地引用。

  4. 对于 __fixups__ 节点中的每个属性,在活动树中找到它引用的节点。 这是用于标记节点的标签。

  5. 检索修复目标的 phandle。

  6. 对于属性中的每个修复,找到 node:property:offset 位置并将其替换为 phandle 值。