總覽
在 Fuchsia 中,硬體支援可依架構、主機板和驅動程式劃分,請參閱 RFC-0111:Fuchsia 初始硬體平台規格。本頁未說明如何新增對新架構的支援。
請注意,x64 架構本身被視為在 白板 (可設定高) 中,因此本文並未說明,因為我們已支援這個架構 (雖然實作可以改善,並支援更多目前未在新增的設定)。
如要新增對新板子的支援,我們必須先新增對啟動產品設定的支援。
新增啟動建構設定支援
如要讓啟動程序正常運作,您需要:
支援的架構
如要瞭解架構支援程序,請參閱 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 主板的示例。這個開機輔助程式會指定下列項目中的所有驅動程式。請注意,您也必須在這裡列出啟動補丁。
注意:
- 為滿足 Fuchsia 的需求,分區對應必須提供足夠大的分區。
- 您必須考量啟動載入器、Fuchsia 核心和任何安全側軟體之間的保留資源,特別是保留的記憶體區域和保留的硬體區塊。舉例來說,某些硬體可能會由系統啟動載入程式設定,並可能由系統控制在 EL3/EL2 執行的程式碼。透過驅動程式從 EL1/0 操控這類裝置,可能會導致行為不穩定。請務必瞭解安全監控或虛擬機器人可能使用的硬體/周邊裝置。
核心驅動程式
在 Fuchsia 中,大多數的驅動程式都位於使用者空間,但本節所列的驅動程式必須位於核心中。
啟動新電路板時,需要使用某些早期偵錯機制,例如序列埠或 JTAG。如果是序列埠機制,則必須新增 UART 驅動程式 (如果核心中尚未提供),例如這裡。系統也支援 ARM 的中斷控制器和計時器支援功能,例如 gicv3 和一般計時器。
所有這些驅動程式都必須設定為可供核心使用。如果核心是由支援 Fuchsia 的系統啟動載入程式啟動,系統就會在 ZBI 中設定驅動程式 (例如在這裡執行 U-Boot)。如果核心是使用啟動填充碼啟動,驅動程式會在填充碼本身中設定,例如 MediaTek 8167 主機板。
注意:
- 例如,您可以新增其他驅動程式,以便透過 PSCI 控制電源。
建構組件
為了新增對新 Jamboard 的支援,您需要將新的 board 設定新增至建構系統 (gn)。VIM3board_bootfs_labels
新增板卡設定後,即可指示建構系統為新板卡建立映像檔。例如:fx set bringup.vim3
後面加上 fx build
(請參閱備用工作流程)。
完成這項設定後,即可將新電路板的啟動構建載入目標,並在序列埠中取得殼層 (如果已新增核心序列埠驅動程式)。下一步是新增板卡驅動程式及其對應的非核心驅動程式,以便提供額外功能。
板卡驅動程式
在為電路板新增核心支援並完成建構系統組合後,您必須建立此處的範例,才能在執行階段新增及設定要使用的非核心驅動程式。板卡驅動程式會描述及設定板卡的硬體,這些硬體無法透過探測來定位/設定,這在以 ARM64 為基礎的系統中很常見。
注意:
- 驅動程式的設定必須在板卡驅動程式中完成,而非在實際驅動程式中,這樣才能在組裝時重複使用及模組化。
非核心驅動程式
一般非核心
注意:
- 有時 HW 會在 Bootloader 中刻意初始化,例如顯示標誌。這需要在一般驅動程式中計算。這方面的資訊可透過 ZBI 中的核心引數傳遞。
- 如要重複使用 SW,請建立能供各個驅動程式共用的程式庫,或是讓驅動程式可高度自訂,避免發生重複。
- 請使用系列命名驅動程式和變數,而非特定 SoC,以便更清楚地重複使用和匯總。
- 請勿對引導程式所遺留的硬體狀態做出假設 (除了第 1 點所述的已知情況)。HW 可能處於重設狀態,也可能不處於重設狀態。
- 請特別確認所有 GPIO 都處於安全狀態。
- 具體而言,說明系統啟動載入程式可能將硬體留在 DDR、DVFS、顯示器等硬體中的慢設定。
新增核心建構設定支援
啟動版本運作後,您需要新增對核心版本產品設定的支援,以便建立可自行更新的系統,其中包含核心系統服務、連線和指標回報。
如要啟用核心建構作業,您需要具備有效的網路堆疊,因為核心版本允許系統偵錯 (例如使用 fx log
和 fx shell
的執行個體)、更新 (例如使用 fx ota
) 和指標報告 (例如使用 fx snapshot
)。
新增完整的系統設定支援
核心版本正常運作後,只要定義新的產品設定,即可整合整個系統。舉例來說,我們已定義 x64 的 workbench_eng,當中包含網路瀏覽器和許多其他功能。同樣地,您也可以為其他架構新增新產品設定,例如以 ARM64 為基礎的系統。