新增 Jamboard 支援

總覽

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

請注意,x64 架構會視為自身的主面板 (可高設定一個架構),因此這裡並未說明此架構,因為這個架構雖然已經支援,但可以改善實作,並支援更多目前尚未新增的設定。

如要新增對新主面板的支援,首先需要對橋接建構產品設定提供支援。

新增啟動建構設定支援

要成功執行啟動版本,您需要:

  1. 支援的架構
  2. 系統啟動載入程式和核心支援
  3. 建構組合
  4. 已定義董事會驅動程式庫
  5. 非核心驅動程式

支援的架構

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

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

新的遊戲板需要載入核心的方法,最好使用支援 Fuchsia 的系統啟動載入程式。此外,核心需要至少針對早期階段偵錯機制 (例如序列埠)、中斷控制器和計時器的支援,該機制會採用核心驅動程式的形式。

主面板必須包含程式設定機制 (例如將內容儲存在 Flash 中)。您必須這麼做才能更新系統啟動載入程式。Fuchsia 映像檔可以使用這個機制,或系統啟動載入程式提供的支援進行程式設計。

系統啟動載入程式

在本文件中,系統啟動載入程式是指最終階段系統啟動載入程式,這是載入 Fuchsia 核心的啟動程序軟體元件。

有多種設定會允許系統啟動載入程式載入 Fuchsia 核心:

  • 系統啟動載入程式支援 Fuchsia:建議您在系統啟動載入程式中新增對 Fuchsia 的支援。在這種情況下,Zircon 啟動映像檔 (ZBI) 規格是由韌體 SDK 實作。例如 VIM3 的 U-Boot 即新增支援
  • 如果系統啟動載入程式不支援 Fuchsia,則必須在核心中加入啟動輔助程式機制,讓 Fuchsia 版本與系統啟動載入程式系統啟動程式 (例如 Fastboot) 相容。這裡提供 MediaTek 8167 主機板的範例。這個啟動輔助程式會指定下列項目中的所有驅動程式。請注意,您也必須在這裡列出啟動填充碼。

注意:

  1. 分區對應必須提供足夠的分區,以因應 Fuchsia 的需求。
  2. 系統啟動載入程式、Fuchsia 核心和任何安全端軟體之間保留的資源,必須涵蓋特定的保留記憶體區域和保留的 HW 區塊。舉例來說,部分硬體可能會由系統啟動載入程式設定,且可控管在 EL3/EL2 中執行的程式碼。從 EL1/0 改用驅動程式可能會使裝置運作不穩定。請務必瞭解安全的監控器或管理程序可能使用哪些硬體/週邊裝置。

核心驅動程式

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

如要啟動新的主面板,例如序列埠或 JTAG,則需要一些早期階段偵錯機制。如果序列埠是機制,如果核心中還未提供 UART 驅動程式,則必須新增 UART 驅動程式,例如這裡。驅動程式也支援 ARM 中斷控制器和計時器,例如 gicv3一般計時器

所有這些驅動程式都必須設為供核心使用。如果核心是透過支援 fuchsia 的系統啟動載入程式啟動,驅動程式就會在 ZBI 中設定,例如在這裡使用 U-Boot。如果使用啟動填充來啟動核心,系統會在填充碼本身中設定驅動程式,如這裡以 MediaTek 8167 主機板為例。

注意:

  1. 您可以新增其他驅動程式,以便使用 PSCI 控制電源。

建構組合

為了新增對新主面板的支援,您必須將新的 board 設定新增至建構系統 (gn)。 VIM3board_bootfs_labels

加入主機板設定後,您可以指示建構系統為新主面板建立映像檔。例如:fx set bringup.vim3 後面接著 fx build (請參閱「fx 工作流程」)。

在此情況下,新主面板的啟動版本可以載入至目標,我們就能在序列埠中取得殼層 (如果已新增核心序列埠驅動程式庫)。下一步是新增主機驅動程式庫及其對應的非核心驅動程式,以取得更多功能。

桌遊

主機板驅動程式庫會描述及設定無法透過探測找出位置/設定的主機的 HW,這是在 ARM64 式系統中很常見的做法。

注意:

  1. 驅動程式設定必須在實體驅動程式庫 (而非實際驅動程式庫中完成,才能在組件中重複使用及模組化。

非核心驅動程式

注意:

  1. 有時候,HW 會在系統啟動載入程式中特意初始化,以便顯示標誌。這需要考量在一般驅動程式中。這些資訊可以使用 ZBI 中的核心引數傳遞。
  2. 如要重複使用 SW,您可以建立可在不同驅動程式共用的程式庫,也能讓駕駛人能靈活自訂,避免發生重複情形。
  3. 使用系列為驅動程式和變數命名,而不是使用特定的 SoC,以便更明確的重複使用與匯總。
  4. 請勿對系統啟動載入程式左側的 HW 狀態做出假設 (除非是項目 1 中的常見情況除外)。HW 不一定會處於重設狀態。
    1. 特別確認所有 GPIO 都處於安全狀態。
    2. 具體來說,如果設定速度緩慢,導致系統啟動載入程式可能離開 DDR、DVFS、顯示等硬體。

新增核心建構設定支援

啟動版本工作後,您必須新增核心建構產品設定的支援功能,建立包含核心服務、連線和指標回報功能的自行更新系統。

如要啟用核心建構作業,您需要具備有效的網路堆疊,因為這是核心版本允許系統偵錯 (例如具有 fx logfx shell 的執行個體)、更新 (例如具有 fx ota 的執行個體) 和指標回報功能 (例如:fx snapshot)。

新增完整的系統設定支援功能

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