設備樹覆蓋

設備樹 (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.通過附加到image.gz並作為“ kernel ”傳遞給mkbootimg.dtb放入引導分區。
    唯一分區
    圖 3..dtb放入唯一的分區(例如dtb分區)。
  3. 跑步:
    • .dtb從存儲加載到內存中。
    • 給定加載的 DT 的內存地址啟動內核。

術語

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

DT設備樹
DTB設備樹 Blob
DTBO覆蓋的設備樹 Blob
故障診斷碼設備樹編譯器
DTO設備樹覆蓋
DTS設備樹源
FDT扁平設備樹,一種包含在.dtb blob 文件中的二進制格式