裝置樹狀結構 (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. 在系統啟動載入程式中載入裝置樹狀結構的典型實作方式。
如要建立及刷新 DTB,請按照下列步驟操作:
1a. 使用 DTC (
dtc
) 將 DTS (.dts
) 編譯為 DTB (.dtb
)。DTB 的格式為扁平化 DT。1b. 將.dtb
檔案刷新至系統啟動載入程式執行階段可存取的位置 (詳情請見下方)。如要分割,請在快閃記憶體中找出可供引導程式在執行階段存取且可信的位置,以便放置
.dtb
。範例地點圖 2. 將 .dtb 置於啟動分區中,
附加至 image.gz,並以
「kernel」的形式傳遞至 mkbootimg。圖 3. 將 .dtb 放入不重複的分區
(例如 dtb 分區)。如要載入 DTB 並啟動核心,請按照下列步驟操作:
- 將
.dtb
從儲存空間載入記憶體。 - 使用所載入 DT 的記憶體位址啟動核心。
- 將
後續步驟
本頁面詳細說明載入 DT 的一般啟動載入程式,並提供常見的 DT 術語清單。本節的其他頁面說明如何實作引導程式支援、如何編譯、驗證及最佳化 DTO,以及如何使用多個 DT。您也可以進一步瞭解 DTO 語法和必要的 DTO 和 DTBO 分區格式。