核心模組總覽

核心模組分為兩種類型:無硬體 GKI 模組和硬體專屬 供應商模組。本頁將概略介紹這兩種方式 分為多個單元

GKI 模組

通用核心映像檔 (GKI) 模組可用來提供啟動非必要的核心 功能獨立於一般核心核心之外有了 GKI 模組 選擇要使用的特定核心功能,通常會縮減核心映像檔大小 以及執行階段記憶體消耗量縮減大小讓 GKI 非常適合用於 Android Go 裝置和其他資源受限的板型規格。

GKI 模組也提供機制,讓廠商 在 KMI 凍結里程碑之後,使用上游功能。內建程式碼 必須建構其他圖像才能替換,而程式碼則會 則可由其他模組取代

GKI 模組使用核心的建構時間簽署基礎架構, 在執行階段中,GKI 與其他模組間的差異允許載入未簽署的模組 只能使用顯示在許可清單中或由其他供應商提供的符號 未簽署的模組。

GKI 模組有兩種邏輯類型:受保護的 GKI 模組 以及未受保護的 GKI 模組

受保護的 GKI 模組

受保護的 GKI 模組是由 Google 提供,不會受到任何限制。 就像在載入後使用核心建構一樣。此外, 受保護的 GKI 模組具有下列特性:

  • 受保護的 GKI 模組可以存取非 KMI 核心符號 提供給供應商模組或未受保護的 GKI 模組。
  • 受保護的 GKI 模組可以匯出成 KMI 介面的符號 只要符號清單中引用這些符號即可。
  • 供應商模組無法覆寫受保護的 GKI 模組。

受保護的 GKI 模組是 GKI 模組的預設類別。所有 GKI 這些模組屬於 KMI 凍結時受到保護。

未受保護的 GKI 模組

供應商模組可覆寫未受保護的 GKI 模組。KMI 凍結後 如果 GKI 團隊,受保護的 GKI 模組可能會被歸類為未受保護的 判斷供應商需要覆寫預設導入方式 且包含上游 Linux 新功能的版本。未來 GKI 版本後,未受保護的模組在下列日期後重新歸類為受保護模組: 上游程式碼落在 Android 通用核心 (ACK) 中。未受保護的 GKI 模組 具備以下特性:

  • 未受保護的 GKI 模組可以使用與供應商相同的匯出符號存取權 模組。
  • 未受保護的 GKI 模組無法匯出受保護 GKI 匯出的符號 模組。
  • 未受保護的 GKI 模組必須保留任何 KMI 介面, 核心核心。
  • 供應商模組可以覆寫未受保護的 GKI 模組。

供應商模組

由合作夥伴提供供應商模組,用於實作專屬 SoC 和裝置專用 即便沒有技術背景,也能因這些工具的功能而受益任何現有的核心模組並未做為 GKI 核心可以用做廠商模組的形式提供。

因為 GKI 專案的主要目標之一是 硬體專屬程式碼,廠商可以預期 GKI 核心不會包含明確管理自身硬體的模組。適用對象 例如,廠商 ABC Inc. 可能會預期 「CONFIG_ABC_SOC_SUPPORT」無法啟用為內建或可載入狀態 而且不支援 GKI 模組

如果 ACK 中有某個核心驅動程式或架構,但並未做為 GKI 核心,廠商可以修改驅動程式,並以供應商的身分提供 後續課程我們將逐一介紹 預先訓練的 API、AutoML 和自訂訓練我們不建議針對非供應商專屬模組進行這類修改 因為 Pod 中的 GKI 核心可能會提供相同的功能 GKI 核心包含供應商提供的功能時 模組將無法載入供應商模組。例如: Android 11 中尚未為 GKI 設定 CONFIG_GREYBUS,因此 廠商可能會提供灰色公車供應商模組。不過,CONFIG_GREYBUS 可能是 Android 12 內建的 GKI 內建或模組, 此時系統就不會載入灰色圖標供應商模組最佳做法是使用 非供應商專屬驅動程式的上游版本 (以 端對端整合

您可以在 vendorvendor_boot 圖片。啟動程序初期所需的模組必須位於 vendor_boot。 從 vendor_boot 載入模組會產生相關的啟動時間費用。