使用多個 DT

許多 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 分割區格式」中詳述的資料表結構和標頭格式。

在系統啟動載入程式中執行

執行方式如下:

  1. 找出 SoC,並從儲存空間載入對應的 .dtb 至記憶體。
  2. 識別主機板,並從儲存空間載入對應的 .dtbo 至記憶體。
  3. .dtb.dtbo 重疊,以便合併 DT。
  4. 根據合併的 DT 記憶體位址啟動核心。