設備樹覆蓋

設備樹(DT)是命名節點和描述不可發現硬件的屬性的數據結構。操作系統(例如Android中使用的Linux內核)使用DT支持由Android驅動的設備使用的各種硬件配置。硬件供應商提供自己的DT源文件,然後Linux將其編譯為引導加載程序使用的設備樹Blob(DTB)文件。

設備樹覆蓋(DTO)使中央設備樹Blob(DTB)可以覆蓋在設備樹上。使用DTO的引導加載程序可以維護片上系統(SoC)DT,並動態覆蓋特定於設備的DT,將節點添加到樹中並更改現有樹中的屬性。

本頁詳細介紹了用於加載DT的典型引導程序工作流程,並提供了常見的DT術語列表。本節中的其他頁面描述瞭如何實現對DTO的引導加載程序支持,如何編譯,驗證和優化DTO實現以及如何使用多個DT 。您還可以獲取有關DTO語法和所需的DTO / DTBO分區格式的詳細信息

Android 9版本中的更新

在Android 9中,引導程序不得在將統一的設備樹blob傳遞給內核之前修改設備樹覆蓋中定義的屬性。

加載設備樹

在引導加載程序中加載設備樹涉及構建,分區和運行。

圖1.在引導加載程序中加載設備樹的典型實現。
  1. 建立:
    • 使用設備樹編譯器( dtc )將設備樹源( .dts )編譯為設備樹Blob( .dtb ),其格式為扁平化的設備樹。
    • .dtb文件閃存到引導加載程序運行時可訪問的位置(詳細信息如下)。
  2. 要進行分區,請確定引導加載程序在運行時可訪問且受信任的閃存中的位置,以放置.dtb 。位置示例:
    引導分區
    圖2..dtb通過附加在引導分區image.gz並通過的“ kernel ”,以mkbootimg
    唯一分區
    圖3..dtb放在唯一的分區(例如dtb分區)中。
  3. 跑步:
    • 從存儲.dtb加載到內存中。
    • 給定加載的DT的內存地址,啟動內核。

術語

本節使用以下設備樹術語:

DT設備樹
DTB設備樹Blob
DTBO覆蓋的設備樹Blob
DTC設備樹編譯器
DTO設備樹覆蓋
DTS設備樹源
FDT展平的設備樹, .dtb blob文件中包含的二進制格式