英語

裝置樹動態解析器筆記

本文件描述了核心裝置樹解析器的實現,位於 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 值。