裝置樹狀結構疊加層

裝置樹狀結構 (DT) 是命名節點和屬性資料結構,用於描述無法偵測到的硬體。核心 (例如 Android 中使用的 Linux 核心) 會使用 DT 支援 Android 裝置使用的各種硬體設定。硬體供應商會提供自己的裝置樹狀結構來源 (DTS) 檔案,這些檔案會使用裝置樹狀結構編譯器編譯為 裝置樹狀結構 blob (DTB) 檔案。這些檔案隨後會由引導程式使用。DTB 檔案包含二進位格式的扁平化裝置樹狀結構

裝置樹狀結構疊加層 (DTO) 可讓中央 DTB 疊加在 DT 上 (用於疊加的裝置樹狀結構 blob (DTBO))。使用 DTO 的引導程式可以維護系統單晶片 (SoC) DT,並動態重疊裝置專屬的 DT,在樹狀結構中新增節點,並變更現有樹狀結構中的屬性。

Android 9 版本更新

在 Android 9 中,在將統一 DTB 傳遞至核心之前,Bootloader 不得修改 DTO 中定義的屬性。

載入 DT

在系統啟動載入程式中載入 DT 時,需要建構、分割及執行。

圖 1. 在系統啟動載入程式中載入裝置樹狀結構的典型實作方式。

  1. 如要建立及刷新 DTB,請按照下列步驟操作:

    1a. 使用 DTC (dtc) 將 DTS (.dts) 編譯為 DTB (.dtb)。DTB 的格式為扁平化 DT。1b. 將 .dtb 檔案刷新至系統啟動載入程式執行階段可存取的位置 (詳情請見下方)。

  2. 如要分割,請在快閃記憶體中找出可供引導程式在執行階段存取且可信的位置,以便放置 .dtb。範例地點

    圖 2. 將 .dtb 置於啟動分區中,
    附加至 image.gz,並以
    「kernel」的形式傳遞至 mkbootimg。

    圖 3. 將 .dtb 放入不重複的分區
    (例如 dtb 分區)。

  3. 如要載入 DTB 並啟動核心,請按照下列步驟操作:

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

後續步驟

本頁面詳細說明載入 DT 的一般啟動載入程式,並提供常見的 DT 術語清單。本節的其他頁面說明如何實作引導程式支援、如何編譯、驗證及最佳化 DTO,以及如何使用多個 DT。您也可以進一步瞭解 DTO 語法和必要的 DTO 和 DTBO 分區格式