設備樹覆蓋

設備樹 (DT)是一種由命名節點和屬性組成的資料結構,用於描述不可發現的硬體。核心(例如 Android 中使用的 Linux 核心)使用 DT 來支援 Android 裝置使用的各種硬體配置。硬體供應商提供自己的設備樹源 (DTS)文件,這些文件使用設備樹編譯器編譯為設備樹 Blob (DTB)文件。然後引導程式將使用這些檔案。 DTB 檔案包含二進位格式的扁平設備樹

設備樹覆蓋 (DTO)使中央設備樹 blob (DTB) 能夠覆蓋在設備樹上。使用 DTO 的引導程式可以維護系統單晶片 (SoC) DT 並動態覆寫特定於裝置的 DT,向樹中新增節點並對現有樹中的屬性進行變更。

DTBO用於覆蓋的設備樹 Blob

Android 9 版本中的更新

在 Android 9 中,引導程式在將統一裝置樹 blob 傳遞到核心之前不得修改裝置樹覆蓋中定義的屬性。

載入設備樹

在引導程式中載入設備樹涉及建置、分區和運行。

圖 1.在引導程式中載入設備樹的典型實作。
  1. 建立並刷新設備樹 blob:

    1a.使用設備樹編譯器 ( dtc >) 將設備樹源 ( .dts ) 編譯為設備樹 blob ( .dtb )。設備樹 blob 被格式化為扁平設備樹。 1b.將.dtb檔案閃存到引導程式運行時可存取的位置(詳細資訊如下)。

  2. 若要進行分割區,請確定快閃記憶體中引導程式運行時可存取且可信任的位置來放置.dtb 。位置範例:

    引導分割區
    圖 2.透過附加到image.gz並作為「 kernel 」傳遞給mkbootimg.dtb放入引導分割區。
    獨特的分區
    圖 3..dtb放入唯一的分區(例如dtb分區)。
  3. 要載入設備樹 blob 並啟動核心:

    • .dtb從儲存載入到記憶體中。
    • 使用載入的DT的記憶體位址啟動核心。

下一步是什麼?

本頁詳細介紹了載入 DT 的典型引導程式工作流程,並提供了常見 DT 術語的清單。本節中的其他頁面描述如何實現引導程式支持,如何編譯、驗證和最佳化 DTO ,以及如何使用多個 DT 。您還可以獲得有關DTO 語法和所需的DTO/DTBO 分區格式的詳細資訊。