SDMMC 驅動程式架構

SDMMC 驅動程式庫堆疊分為兩個主要元件:直接與控制器硬體通訊的平台驅動程式,以及處理通訊協定專屬裝置初始化和通訊的核心驅動程式。核心驅動程式又分為一個 SDIO 驅動程式庫和區塊驅動程式庫 (適用於 SD 和 eMMC)。每個 SDMMC 控制器都有不同的平台驅動程式庫,而核心驅動程式適用於所有平台。

網站式

使用新的 SDMMC 控制器啟動 SoC,必須編寫新的平台驅動程式庫。如果控制器實作 SDHCI 規格,此驅動程式庫應實作 fuchsia.hardware.sdhci,否則應實作 fuchsia.hardware.sdmmc。在硬體的基本功能通過驗證前,建議您透過 SdmmcHostInfoSdmmcHostPrefs 停用指定行銷區域 (DMA) 和更高的速度模式。詳情請參閱 SDHCI 和 SDMMC 通訊協定定義。

SD/eMMC 核心驅動程式

SD/eMMC 區塊驅動程式庫會建立一個裝置,用於實作使用者資料分區的 fuchsia.hardware.block.BlockImplfuchsia.hardware.block.partition,以及用於 boot0 和 boot1 分區的裝置 (僅限 eMMC)。如果裝置支援實作 fuchsia.hardware.rpmb,系統就會建立實作的裝置 (僅限 eMMC,根據 JEDEC 標準 JESD84-B51 第 6.6.22 節)。

SDIO 核心驅動程式

SDIO 核心驅動程式會建立實作 fuchsia.hardware.sdio 的裝置,每個 IO 函式各一個。SD/eMMC 區塊驅動程式庫唯一預期的用戶端是儲存空間堆疊,而 SDIO 驅動程式庫會根據偵測到的 SDIO 卡類型而有不同的用戶端。用戶端驅動程式會使用下表中指定的繫結變數繫結至 SDIO 核心驅動程式。使用多個 IO 函式的用戶端驅動程式應繫結至含有各功能裝置做為片段的複合裝置。請注意,組合卡可能會有多個並行 SDIO 用戶端驅動程式 (例如藍牙和 Wi-Fi 用戶端),在這種情況下,匯流排的存取可透過核心驅動程式共用。用戶端也無法直接存取函式 0,以免干擾其他用戶端。詳情請參閱 SDIO 通訊協定定義。

SDIO 用戶端繫結

繫結變數 意義
BIND_SDIO_VID 讀取 FBR 的 IO 函式製造商 ID
BIND_SDIO_PID 讀取 FBR 的 IO 函式產品 ID
BIND_SDIO_FUNCTION 從 1 到 7 的 IO 函式編號

裝置圖表

SDMMC 裝置圖表