DTO 支持

設備樹覆蓋 (DTO)擴展了現有的扁平化設備樹 (FDT)實現,使用戶空間能夠在運行時透過載入修改原始資料的附加覆蓋 FDT 來修改核心中的初始設備樹資料。 Android 不需要從使用者空間對 DT blob 進行執行時間更新,但建議供應商在libfdtlibufdt的幫助下在引導程式中加入 devicetree 修補程式。

Android DTO 支持

Android 對 DTO 的支援因 Android 版本而異:

  • Android 7.x 及更早版本不需要 devicetree 支持,也不提供有關供應商如何將 DT blob 傳遞到核心或儲存它們的位置的建議。
  • Android 8.x 建議支援 devicetree,以將核心的特定於板的部分和僅 SoC 的部分分開。
  • Android 9 及更高版本要求存在裝置樹 blob 覆蓋 (DTBO) 分割區並至少套用一個 DTO。

DTO 分區要求

大多數 Android 裝置在建置時將 DT blob 附加到內核,引導程式從核心載入 blob。但是,由於 DT blob 被視為系統單晶片 (SoC) 核心的一部分,因此 Android 對於如何建置或儲存 DT blob 沒有具體要求。設備可以將 DT blob 附加到核心或將 blob 儲存在單獨的分割區中;唯一的要求是引導程式知道如何以及從何處載入 DT blob。

為了支援 DTO,設備應該具有:

  • 每個核心映像都有一個 DTBO 分割區,用於特定於板的 DT 覆蓋,引導程式必須知道在何處以及如何載入 SoC 特定的 DTB。分區大小取決於 SoC 核心所需的變更數量——選擇一個具有未來更新成長空間的大小;通常,8 MB 分割區大小就足夠了。
  • 更新了 A/B 設備的DTO 分區。恢復核心與 Android 核心相同,但必須為 A/B 裝置設定分區,以便可以透過無線 (OTA) 更新進行更新。分割區大小取決於裝置以及主 SoC 核心 DT blob 之上的變更數量。

DTO 引導程式要求

為了支援 DTO,引導程式應該:

  • 了解如何以及在何處(考慮 A/B 裝置的引導槽)以特定於供應商的方式載入 SoC 特定的 DT blob(通常在 blob 附加到核心時從核心映像的末尾提取)。
  • 了解如何以及在何處以特定於供應商的方式載入覆蓋 DT blob。
  • 在將組合設備樹傳遞到核心之前,使用覆蓋層修補主 DT blob。

有關在引導程式中添加 DTO 支援的更多詳細信息,請參閱設備樹覆蓋