新增 Jamboard 支援

總覽

在 Fuchsia 中,硬體支援可依架構、主機板和驅動程式劃分,請參閱 RFC-0111:Fuchsia 初始硬體平台規格。本頁未說明如何新增對新架構的支援。本頁面說明如何為新版新增支援。

請注意,x64 架構本身即為板卡 (可高度設定),因此已獲得支援,因此我們並未在此處加以說明 (但其實作方式可改善,並支援目前無法新增的更多設定)。

如要新增對新板子的支援,我們必須先新增對啟動產品設定的支援。

新增啟動建構設定支援

如要讓開發版本正常運作,您需要:

  1. 支援的架構
  2. 啟動載入器和核心支援
  3. 建構組合
  4. 已定義板卡驅動程式庫
  5. 非核心驅動程式

支援的架構

如要瞭解架構支援程序,請參閱 RFC-0111:Fuchsia 初始硬體平台規格

系統啟動載入程式和核心支援

新主機板需要一種載入核心的方式,最好是使用支援 Fuchsia 的引導程式。此外,核心必須至少支援早期偵錯機制 (例如序列埠)、中斷控制器和計時器,以核心驅動程式形式提供支援。

主機板必須包含編程機制 (例如在快閃記憶體中儲存內容)。這項操作是更新 Bootloader 的必要步驟。Fuchsia 映像檔可透過這個機制或啟動載入程式提供的支援進行編程。

系統啟動載入程式

在本文件中,Bootloader 是指最終階段的 Bootloader,也就是載入 Fuchsia 核心的啟動程序軟體元件。

系統啟動載入程式可透過多種設定載入 Fuchsia 核心:

  • 引導程式支援 Fuchsia:在引導程式中新增對 Fuchsia 的支援是最佳選項。在這種情況下,Zircon 開機映像檔 (ZBI) 規格是由 Firmware SDK 實作。例如,我們為 VIM3 的 U-Boot 新增支援
  • 如果開機載入器不支援 Fuchsia,則必須在核心中新增開機 shim 機制,讓 Fuchsia 版本與開機載入器的開機設施 (例如 Fastboot) 相容。請參閱這篇文章,瞭解 MediaTek 8167 主板的示例。這個啟動補丁會在下列項目中指定所有驅動程式。請注意,您也必須在此處列出啟動補丁。

注意:

  1. 分區對應功能需要提供足夠大的分區,以符合 Fuchsia 的需求。
  2. 您必須考量啟動載入器、Fuchsia 核心和任何安全側軟體之間的保留資源,特別是保留的記憶體區域和保留的硬體區塊。舉例來說,某些硬體可能由系統啟動載入程式設定,並受 EL3/EL2 執行的程式碼控制。透過驅動程式從 EL1/0 操控這類裝置,可能會導致行為不穩定。請務必瞭解安全監控器或虛擬機器人可能使用的硬體/周邊裝置。

核心驅動程式

在 Fuchsia 中,大多數的驅動程式都位於使用者空間,但本節所列的驅動程式必須位於核心中。

啟動新電路板時,需要使用某些早期偵錯機制,例如序列埠或 JTAG。如果是序列埠機制,則必須新增 UART 驅動程式庫 (如果核心中尚未提供),例如這裡。驅動程式也加入了 ARM 中斷控制器和計時器支援,例如 gicv3泛型計時器

所有這些驅動程式都必須設定為可供核心使用。如果核心是由支援 Fuchsia 的啟動載入程式啟動,驅動程式就會在 ZBI 中設定,例如在 此處的 U-Boot 中。如果核心是使用啟動墊片啟動,驅動程式就會在墊片中設定,例如 MediaTek 8167 主機板這裡

注意:

  1. 例如,您可以新增其他驅動程式,以便透過 PSCI 控制電源。

建構組裝

如要新增板子支援功能,請將新的板子設定新增至建構系統 (gn)。舉例來說,對於 VIM3board_bootfs_labels gn 變數 (定義請見此處) 會定義在啟動中載入的內容 (載入至

新增板卡設定後,即可指示建構系統為新板卡建立映像檔。例如:fx set bringup.vim3 後面接著 fx build (請參閱 fx 工作流程)。

完成這項設定後,即可將新電路板的啟動構建載入目標,並在序列埠中取得殼層 (如果已新增核心序列埠驅動程式庫)。下一步是新增板卡驅動程式庫及其對應的非核心驅動程式,以便提供額外功能。

板卡驅動程式庫

在為板子和建構系統組合新增核心支援後,您必須建立此處的例子,才能在執行階段新增及設定要使用的非核心驅動程式。板卡驅動程式庫會描述及設定板卡的硬體,這些硬體無法透過探測來定位/設定,這在以 ARM64 為基礎的系統中很常見。

注意:

  1. 驅動程式的設定必須在板卡驅動程式庫中完成,而非在實際驅動程式庫中,這樣才能在組裝時重複使用及模組化。

非核心驅動程式

一般非核心

注意:

  1. 有時 HW 會在 Bootloader 中刻意初始化,例如顯示標誌。這需要在一般驅動程式中計算。這方面的資訊可透過 ZBI 中的核心引數傳遞。
  2. 建立可在各個驅動程式間共用的程式庫,或讓驅動程式可從板卡驅動程式進行高度自訂,避免重複,藉此重複使用 SW。
  3. 請使用系列命名驅動程式和變數,而非特定 SoC,以便更清楚地重複使用和匯總。
  4. 請勿對引導程式所保留的硬體狀態做出假設 (除了第 1 點所述的已知情況)。硬體可能處於重設狀態,也可能不處於重設狀態。
    1. 請特別確認所有 GPIO 都處於安全狀態。
    2. 具體來說,請考量啟動載入程式可能已將 DDR、DVFS、顯示畫面等硬體留在內部,導致設定速度變慢。

新增核心建構設定支援

啟動版本運作後,您需要新增對核心版本產品設定的支援,以便建立可自行更新的系統,其中包含核心系統服務、連線和指標回報。

如要啟用核心版本,您必須擁有可運作的網路堆疊,因為核心版本可透過此方式進行系統偵錯 (例如使用 fx logfx shell)、更新 (例如使用 fx ota 的執行個體) 和指標回報 (例如使用 fx snapshot)。

新增完整的系統設定支援

核心版本運作後,您可以定義新的產品設定,整合完整的系統。舉例來說,我們已為 x64 定義 workbench_eng,其中包含網頁瀏覽器和許多其他功能。同樣地,您也可以為其他架構 (例如 ARM64 架構的系統) 新增新產品設定。