許多 SoC 供應商和 ODM 都支援在裝置上使用多個裝置樹狀結構 (DT),讓單一映像檔可支援多個 SKU 或設定。在這種情況下,Bootloader 會識別硬體,並在執行階段載入對應的 DT:
圖 1. 系統啟動載入程式中的多個裝置樹狀結構疊加層 (DTO)。
注意:您不一定要使用多個 DT。
設定
如要在 DTO 模型中新增對多個 DT 的支援,請設定主要 DT 清單和另一個重疊 DT 清單。
圖 2. 適用於多個 DT 的執行階段 DTO 實作。
開機載入程式應具備以下功能:
- 讀取 SoC ID,並選取對應的主 DT。
- 讀取板 ID,並據此選取一組疊加式 DT。
請只選取一個主要 DT,以便在執行階段使用。您可以選取多個疊加式資料表,但這些資料表必須與所選主要資料表相容。使用多個疊加層可避免在 DTBO 分割區中為每個電路板儲存一個疊加層,並讓系統啟動載入程式根據電路板 ID (或可能透過探測周邊裝置) 判斷所需疊加層的子集。舉例來說,板 A 可能需要由覆疊 1、3 和 5 新增的裝置,而板 B 可能需要由覆疊 1、4 和 5 新增的裝置。
分區
如要分割,請在快閃記憶體中找出可供引導程式在執行階段存取且可信的位置,用來儲存 DTB 和 DTBO (引導程式必須能夠在比對程序中找到這些檔案)。請注意,DTB 和 DTBO 無法位於相同分區。如果 DTB/DTBO 位於 dtb
/dtbo
分割區,請使用「DTB 和 DTBO 分割區格式」中詳述的資料表結構和標頭格式。
在系統啟動載入程式中執行
執行方式如下:
- 找出 SoC,並從儲存空間載入對應的 .dtb 至記憶體。
- 識別主機板,並從儲存空間載入對應的
.dtbo
至記憶體。 - 將
.dtb
與.dtbo
重疊,以便合併 DT。 - 根據合併的 DT 記憶體位址啟動核心。