簡單周邊匯流排 (SPB)
注意
本文包含「從屬」一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。
本主題涵蓋Windows 10中簡單周邊匯流排的建議。Windows 包含低電源、簡單匯流排的支援,例如 Inter Integrated Circuit (IーC) 和 (IーC) 和 Simple Peripheral Interface (SPI) ,使用核心模式驅動程式架構 (KMDF) 架構的架構延伸模組。 控制器驅動程式未在內建提供。 晶片組廠商、OEM 或 IHV 必須開發在 KMDF 中實作的控制器驅動程式。 此架構提供彈性裝置組態拓撲,可同時使用匯流排進行控制和資料交易,以及用於訊號和中斷的 GPIO。 完整的裝置定義是透過進階設定和 Power Interface (ACPI) 來定義。
在 Windows 中,會透過 KMDF 控制器驅動程式支援匯流排。 利用 KMDF 平臺的協助,控制器驅動程式主要用來定義啟用控制器功能所需的硬體特定介面。
Windows 基礎結構支援共用公車的裝置、在相同線路上多工處理,以及透過 ACPI 進行裝置設定的裝置。 Windows 使用 ACPI 作為裝置識別、設定和控制的主要方式。
下表摘要說明簡單周邊匯流排的支援。
匯流排 | 收件匣支援 | 提供的架構延伸模組 | 允許的協力廠商 | 其他支援詳細資料 |
---|---|---|---|---|
I¹C | No | Yes | 是,使用 SPB Framework 擴充功能 | 僅限主圖形 不支援「一般通話」 支援的直接記憶體存取 (DMA) |
SPI | No | Yes | 是,使用 SPB Framework 擴充功能 | 僅限主圖形,不支援「一般通話」 支援全雙工 支援 DMA |
MIPI-HSI | No | No | 是,使用 Windows Driver Foundation (WDF) | |
MIPI-SLIMbus | No | No | 是,使用 WDF | |
MIPI-CSI | No | No | 是,使用 WDF | |
UART | No | Yes | 是,使用串列架構延伸模組 (SerCx2) | 支援 DMA SerCx2 支援的自訂傳輸模式 |
SPB 的設計考慮
以下是 SPB 的一些泛型考慮:
SPB 不是隨插即用匯流排。 周邊裝置通常具有 SPB 的固定連線,而且無法移除。 系統製造商必須確保 ACPI 中的精確資訊,以列舉隨插即用管理員的 SPB 連線周邊裝置,並指定每個裝置專用的硬體資源。
SPB 沒有頻內中斷支援。 大部分周邊都支援透過個別的中斷 (裝置訊號,通常是以 GPIO 為基礎的) 機制,並在 ACPI 中正確對應。
Windows 支援 spB 類別延伸模組 (spbcx.sys) Windows 8和更新版本。 SoC 合作夥伴負責開發和轉散發其適當的 SPB 控制器驅動程式。
SPB 裝置的周邊驅動程式通常是由 SPB 裝置合作夥伴提供。 Microsoft 為 SPB 裝置提供一個類別驅動程式,適用于透過 IーC 的 HID (hidi2c.sys) 。
裝置類別可能會針對下列與 IHsC 相關的主題提供 HLK 需求或 WEG 指引:
- 與其他裝置共用 I IoC 控制器
- 慣用的 I IoC 訊號速度
- 透過 I¹C 和 GPIO 的電源管理和喚醒案例。
Inter Integrated Circuit (IーC) :IーC 是作為 SPB 一部分進行驗證的主要匯流排,強烈建議在 SoC 系統上使用。
Microsoft 提供 I¹C 的Windows 硬體相容性計畫需求。 使用 Windows 硬體實驗室套件 (HLK) ,根據這些需求測試裝置。
簡單周邊介面 (SPI) :支援 SPI 是選擇性的,最多支援 SoC 合作夥伴。 Windows 硬體相容性計畫不包含 SPI 匯流排特有的任何需求。
跨系統支援 SPB
Microsoft 支援在 Arm 系統和 x86/x64 平臺上 (在 S3 組態中執行的 SPB) 。 Microsoft 支援在連線待命 (CS) 和 S3 組態中執行的平臺上執行 SPB。
請連絡您的平臺提供者以取得驅動程式和支援。
有許多裝置案例會利用 SPB 進行連線。 I¹C 適用于 CS 和 S3 傳統電源模型。 具有 On-SoC 感應器低電源核心的新式 SoC 可以視需要實作非I解決方案。
卸載式擴充座/埠上的裝置也應該遵循有關停駐案例的指引,也包含在 WEG 中。 有些裝置可能比 USB 等匯流排更合理,而不是 IUsbC。
SPB 架構延伸模組
SPB 架構延伸模組程式庫會擴充 Windows 驅動程式架構以支援 SPB 驅動程式。 SPB 架構可簡化 SPB 控制器驅動程式的開發,並藉由提供處理 I/O 要求的「上半部」驅動程式的一般實作,藉此改善周邊驅動程式與控制器驅動程式之間的相容性,此驅動程式處理 I/O 要求 (與「下半部」相較之下,由上半部驅動,並控制硬體) 。 SPB 架構延伸模組是 KMDF 擴充功能程式庫。 它會處理 SPB 要求的前置處理,以及它們傳遞給控制器驅動程式的順序。 SPB 架構延伸模組的設計目的是要支援 I}C 和 SPI 匯流排,而且可能適用于具有類似語意的其他匯流排。
序列架構延伸模組
序列架構擴充程式庫會擴充 Windows 驅動程式架構,以支援序列控制器驅動程式。 與 SPB 架構類似,序列架構可簡化串列控制器驅動程式的開發,並藉由提供處理 I/O 要求之驅動程式的「前半部」驅動程式的一般實作,來改善周邊驅動程式與控制器驅動程式之間的相容性。 序列架構延伸模組是 KMDF 延伸模組程式庫。 它會處理對序列 API 的呼叫的前置處理,以及它們傳遞給控制器驅動程式的順序。 序列架構延伸模組的設計目的是要支援新式 UART 控制器,並簡化控制器驅動程式實作和診斷能力。
IHsC 和 UART HLK 需求
I≦C和 UART 控制器有硬體相容性計畫需求。 未來也會考慮 SPI 的需求。 標誌需求主要適用于匯流排界面硬體和相關控制器驅動程式的 SoC 晶片廠商。 不需要 OEM 和 ODM 才能重新驗證硬體或控制器驅動程式,但歡迎視需要執行測試。 需要特殊的設定步驟,才能驗證這些需求。 安裝套裝程式含下列專案:
- 具有可存取 I¹C /UART 針腳/埠的開放式系統
- ACPI 中的修改,以將I/UART 測試裝置公開至軟體
- 特定測試裝置 (WITT) 附加至系統進行驗證
如需其他設定資訊,請參閱 硬體實驗室套件 (HLK) 檔。
周邊驅動程式
周邊是由 ACPI 列舉,而且通常是靜態的。 周邊函式驅動程式會與架構擴充功能互動,以判斷其適當的匯流排資源。 周邊和控制器不是階層式,周邊可能會使用數個 SPB、GPIO、序列和其他高速匯流排。 存取內嵌裝置的周邊驅動程式,例如感應器、輸入裝置、數據機和無線電,可能會以核心模式或使用者模式撰寫。 只要適當地更新 ACPI,這些驅動程式就可以跨不同的 ODM 或 OEM 面板設定進行移植。
韌體
控制器 ACPI 設定和匯流排參數是廠商特定的,且相依于特定控制器。 下表摘要說明控制器和周邊匯流排的 ACPI 設定。
匯流排 | 控制器 ACPI 設定 | 周邊 ACPI 設定 |
---|---|---|
I¹C | 控制器位址 釘選設定 |
公車位址 時脈速率 從屬模式 定址模式 |
SPI | 控制器位址 釘選設定 |
晶片選取線 時脈速率 時鐘極性 時鐘階段 線路模式 裝置選取 裝置選取極性 從屬模式 |
UART | 控制器位址/釘選 設定初始傳輸速率 |
初始傳輸速率 Parity 開始位和停止位長度 流量控制方法 (硬體/軟體/無) 使用中的行 接收緩衝區大小 傳輸緩衝區大小 Endian-ness |
如需 ACPI 範例,請參閱 如何取得裝置的連線設定。 如需如何在低電源匯流排上整合裝置的詳細資訊,請參閱 存取 GPIO、I2C 和 UART 裝置。
工具和技術參考
資源標題 | 內容類型 | 描述 | 連結 |
---|---|---|---|
使用 Windows 驅動程式架構來建置更好的驅動程式 | 影片 | 討論 WDF 如何改善驅動程式可靠性,以及如何在多個 Windows 版本上進一步實現省電和部署驅動程式。 | Channel 9 |
瞭解Low-Power匯流排 | 影片 | 示範如何在新的匯流排上整合裝置,並建立驅動程式。 您將瞭解如何撰寫 ACPI 來列舉您的周邊,並開始撰寫和測試周邊驅動程式。 | Channel 9 |
Kernel-Mode Driver Framework 設計指南 | 發行項 | 介紹 Kernel-Mode Driver Framework (KMDF) 。 | MSDN |
UMDF 1.x 設計指南 | 發行項 | 介紹User-Mode Driver Framework (UMDF) 。 | MSDN |
Windows 硬體相容性計劃 | 發行項 | 提供 Windows 認證計畫的相關資訊。 | MSDN |