裝置樹狀結構疊加層 (DTO) 延伸
現有
啟用扁平化裝置樹狀結構 (FDT)
使用者空間,以在執行階段修改核心中的初始 devicetree 資料,
載入其他修改原始資料的疊加層 FDT。Android 沒有
需要從使用者空間更新 DT blob 的執行階段更新,但建議使用
合作夥伴可在系統啟動載入程式中加入 devicetree 修補程式
libfdt
或 libufdt
。
Android DTO 支援
DTO 的 Android 支援會因 Android 版本而異:
- Android 7.x 以下版本不需要支援 devicetree,而且不需要 針對供應商如何將 DT blob 傳遞至核心或 儲存這些資訊
- Android 8.x 建議支援 devicetree 以供 Jamboard 使用, 與核心的 SoC 專用部分分開。
- Android 9 以上版本需要裝置樹狀結構 blob 必須有重疊 (DTBO) 分區,且至少要套用一個 DTO。
DTO 分區需求
大多數 Android 裝置會在建構時將 DT blob 附加至核心, 系統啟動載入程式從核心載入 blob。不過,由於 DT blob 是晶片系統核心的一部分,Android 並沒有 建構或儲存 DT blob 等方面的需求。裝置可以附加 DT 將 blob 儲存至核心,或是將 blob 儲存至獨立分區;唯一的 是指系統啟動載入程式知道載入 DT blob 的方式和位置
如要支援 DTO,裝置應符合下列條件:
- 每個核心映像檔一個 DTBO 分區,供 Jamboard 專屬的 DT 疊加層, 系統啟動載入程式必須知道載入 SoC 專屬 DTB 的位置和方式。 分區大小取決於執行 SoC 所需的變更次數 核心—選擇適合的尺寸,以便日後更新。通常是 8 MB 分區大小超過這個上限。
- 已針對 A/B 更新 DTO 分區 裝置。復原核心與 Android 核心相同,但 必須為 A/B 裝置設定分區,才能在無線更新中 (OTA) 更新。分區大小取決於裝置和數量 在主要 SoC 核心 DT blob 上方進行的變更。
DTO 系統啟動載入程式需求
如要支援 DTO,系統啟動載入程式應:
- 請瞭解載入 以供應商特定方式擷取的 SoC 專屬 DT blob (通常從 做為 blob 附加至核心的結尾)。
- 瞭解從供應商專屬 DT blob 載入疊加層 DT blob 的方式與位置 。
- 先使用疊加層修補主要 DT blob ,再傳遞合併的裝置 新增至核心
如要進一步瞭解如何在系統啟動載入程式中新增 DTO 支援功能,請參閱 裝置樹狀結構疊加層。