英语

设备树动态解析器笔记

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

解析器如何工作

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

解析器按以下步骤工作

  1. 从实时树获取设备树 phandle 最大值 + 1。

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

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

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

  5. 检索 fixup 目标的 phandle。

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