Simple Peripheral Bus (SPB)
Note
この記事には、Microsoft が使用しなくなった "スレーブ" という用語への言及が含まれています。 ソフトウェアからこの用語が削除された時点で、この記事から削除します。
このトピックでは、Windows 10 のシンプルな周辺機器バスに関する推奨事項について説明します。Windows には、(i ² c) および (i ² c) のような低電力の単純なバス、およびカーネルモードドライバーフレームワーク (kmdf) アーキテクチャのフレームワーク拡張を使用した単純な周辺機器 (SPI) のサポートが含まれます。 コントローラー ドライバーは、ボックス内には用意されていません。 チップセット ベンダー、OEM、または IHV は、KMDF に実装されたコントローラー ドライバーを開発する必要があります。 このアーキテクチャでは、制御とデータ トランザクション用のバスの同時使用をサポートする柔軟なデバイス構成トポロジと、シグナリングおよび割り込み用の GPIO が提供されます。 完全なデバイス定義は、Advanced Configuration and Power Interface (ACPI) を使用して定義されます。
Windows では、KMDF コントローラー ドライバーを介してバスがサポートされます。 KMDF プラットフォームにより、コントローラー ドライバーを主に使用して、コントローラー機能を有効にするために必要なハードウェア固有のインターフェイスを定義します。
Windows インフラストラクチャでは、バスを共有するデバイス、同じ回線で多重化されたバス、および ACPI によるデバイス構成がサポートされています。 Windows は、デバイスの識別、構成、および制御の主な手段として、ACPI を使用します。
次の表は、単純な周辺機器バスのサポートをまとめたものです。
Bus | 受信トレイのサポート | 提供されているフレームワーク拡張 | サードパーティの許可済み | その他のサポートの詳細 |
---|---|---|---|---|
I²C | いいえ | はい | はい (SPB フレームワーク拡張機能を使用) | マスターのみ 「一般的な呼び出し」 はサポートされていません ダイレクト メモリ アクセス (DMA) チャネルをサポート |
SPI | いいえ | はい | はい (SPB フレームワーク拡張機能を使用) | マスターのみ、「一般呼び出し」 はサポートされていません 全二重サポート DMA サポート |
MIPI-HSI | いいえ | いいえ | はい (Windows Driver Foundation (WDF) を使用) | |
MIPI-SLIMbus | いいえ | いいえ | はい (WDF を使用) | |
MIPI-CSI | いいえ | いいえ | はい (WDF を使用) | |
UART | いいえ | はい | はい (Serial Framework 拡張機能を使用) (SerCx2) | DMA サポート SerCx2 でサポートされているカスタム転送モード |
SPB の設計に関する考慮事項
SPB に関する一般的な考慮事項を次に示します。
SPB はプラグ アンド プレイ バスではありません。 通常、周辺機器は SPB との接続が固定されていて、削除できません。 システム製造元は、プラグアンドプレイ マネージャー用の SPB 接続の周辺機器を列挙し、各デバイス専用のハードウェア リソースを指定するために、ACPI で正確な情報を確認する必要があります。
SPB の帯域内割り込みはサポートされていません。 ほとんどの周辺機器は、独立した割り込み (多くの場合は GPIO ベース) メカニズムによるデバイス信号をサポートし、ACPI で正確にマップされています。
Windows では、Windows 8 以降で SPB クラス拡張 (spbcx.sys) がサポートされています。 SoC パートナーは、適切な SPB コントローラードライバーの開発と再頒布に責任を持ちます。
SPB デバイスの周辺機器は、一般に SPB デバイスパートナーによって提供されます。 Microsoft では、I ² C (hidi2c.sys) で HID を行うために、1つのクラスドライバーを提供しています。
デバイス クラスは、次のトピックに関する HLK の要件や WEG のガイダンスを提供する場合があります。
- I ² C コントローラーを他のデバイスと共有する
- 推奨 I ² C シグナル速度
- I ² C と GPIO での電源管理とウェイクのシナリオ。
統合された回線 (I ² C): I ² C は、SPB の一部として検証されるプライマリバスであり、SoC システムで強く推奨されます。
Microsoft では、Windows ハードウェア互換性プログラムの I²C 要件を提供します。 Windows Hardware Lab Kit (HLK) を使用して、これらの要件に対してデバイスをテストします。
シンプル ペリフェラル インターフェイス (SPI): SPI のサポートはオプションであり、SoC パートナーまでサポートされています。 Windows ハードウェアの互換性プログラムには、SPI バスに固有の要件は含まれていません。
システム間での SPB のサポート
Microsoftは、Armシステムおよびx86/x64プラットフォーム (S3構成で実行) でSPBをサポートしています。 Microsoft は、コネクト スタンバイ (CS) と S3 の両方の構成で実行されているプラットフォームでの SPB をサポートしています。
ドライバーとサポートについては、プラットフォーム プロバイダーにお問い合わせください。
接続に SPB を活用するデバイスシナリオは多数あります。 I ² C は、CS および S3 の従来の電源モデルで使用できます。 最新の SoC センサー低電力コアを使用すると、必要に応じて非 I ² C ソリューションを実装できます。
また、リムーバブルドック/ポートのデバイスは、「WEG」にも記載されているドッキング シナリオに関するガイダンスに従う必要があります。 これらのデバイスの一部は、I ² C ではなく USB などのバスよりも有用になります。
SPB フレームワーク拡張機能
SPB フレームワーク拡張ライブラリは、SPB ドライバーをサポートするために Windows Driver framework を拡張したものです。 SPB フレームワークを使用すると、SPB コントローラードライバーの開発が簡素化され、周辺機器ドライバーとコントローラードライバーの間の互換性が向上します。これは、i/o 要求を処理するドライバーの「上半分」 (半分に相当し、ハードウェアを制御します) の一般的な実装を提供することによって行われます。 SPB フレームワーク拡張機能は KMDF 拡張ライブラリです。 これは、SPB 要求の前処理と、コントローラー ドライバーに渡されるシーケンスを処理します。 SPB フレームワーク拡張機能は、I ²と SPI バスをサポートするように設計されており、セマンティクスが似ている他のバスに適している場合があります。
シリアル フレームワーク拡張機能
シリアル フレームワーク拡張ライブラリは、シリアル コントローラー ドライバーをサポートするために Windows Driver Framework を拡張します。 シリアル フレームワークは、SPB フレームワークと同様に、シリアル コントローラー ドライバーの開発を簡素化し、i/o 要求を処理するドライバーの「上半分」 の一般的な実装を提供することによって、周辺機器ドライバーとコントローラードライバーの間の互換性を向上させます。 シリアル フレームワーク拡張機能は KMDF 拡張ライブラリです。 これは、シリアル API への呼び出しの前処理と、コントローラー ドライバーに渡されるシーケンスを処理します。 シリアル フレームワーク拡張機能は、最新の UART コントローラーをサポートし、コントローラードライバーの実装と診断を簡素化するように設計されています。
I ² C と UART HLK の要件
I²CおよびUARTコントローラーには、ハードウェア互換性プログラムの要件があります。 また、SPI の要件も今後検討されています。 ロゴの要件は、主に、バス インターフェイス ハードウェアおよび関連するコントローラー ドライバーの SoC シリコンベンダーを対象としています。 OEM と ODM は、ハードウェアまたはコントローラー ドライバーを再検証する必要はありませんが、必要に応じてテストの実行を開始します。 これらの要件を検証するには、特別なセットアップ手順を実行する必要があります。 このセットアップは、次の手順で行います。
- アクセス可能な I ²のピン/ポートを持つオープンシステム
- I ² C/UART テストデバイスをソフトウェアに公開するための ACPI での変更
- 検証の下でシステムに接続されている特定のテスト デバイス (WITT)
その他のセットアップ情報については、ハードウェア ラボ キット(HLK) のドキュメントを参照してください。
周辺機器ドライバー
周辺機器は ACPI によって列挙され、通常は静的です。 周辺機器の関数ドライバーは、フレームワーク拡張機能と対話して、適切なバス リソースを決定します。 周辺機器とコントローラーは階層的ではなく、周辺機器は複数の SPB、GPIO、シリアル、その他の高速バスを使用する場合があります。 センサー、入力デバイス、モデム、ラジオなどの埋め込みデバイスにアクセスする周辺機器ドライバーは、カーネル モードまたはユーザー モードで記述できます。 ACPI が適切に更新されている限り、これらのドライバーは異なる ODM または OEM ボード構成間で移行可能な場合があります。
ファームウェア
コントローラー ACPI 設定とバス パラメーターはベンダー固有であり、特定のコントローラーに依存します。 次の表は、コントローラーと周辺機器バスの ACPI 設定をまとめたものです。
Bus | コントローラー ACPI 設定 | 周辺機器 ACPI 設定 |
---|---|---|
I²C | コントローラーのアドレス ピン留め構成 |
バス アドレス クロック レート スレーブ モード アドレス指定モード |
SPI | コントローラーのアドレス ピン留め構成 |
チップ選択線 クロック レート クロックの極性 クロック フェーズ ワイヤ モード デバイスの選択 デバイスの選択の極度 スレーブ モード |
UART | コントローラーのアドレス / ピン 初期ボー レートを構成する |
シリアル ボー レート パリティ 開始ビットと停止ビットの長さ フロー制御方法 (ハードウェア/ソフトウェア/なし) 使用されている行 受信バッファー サイズ 送信バッファー サイズ エンディアン性 |
ACPI サンプル用に、デバイスの接続設定を取得する方法。 低電力バス上のデバイスを統合する方法の詳細については、「GPIO、I2C、および UART デバイスへのアクセス」を参照してください。
ツールとテクニカル リファレンス
リソースタイトル | コンテンツ タイプ | 説明 | リンク |
---|---|---|---|
Windows Driver Framework を使用してより優れたドライバーを構築する | ビデオ | WDF でドライバーの信頼性を向上させる方法と、省電力を実現し、Windows の複数のバージョンのデバイスにドライバーを展開する方法について説明します。 | Channel 9 |
低電力バスについて | ビデオ | 新しいバス上のデバイスを統合し、ドライバーを作成する方法を示します。 ACPI を記述して周辺機器を列挙し、周辺機器ドライバーの記述とテストを開始する方法について説明します。 | Channel 9 |
カーネルモード ドライバー フレームワーク ガイド | 記事 | カーネルモード ドライバー フレームワーク (KMDF) について説明します。 | MSDN |
UMDF 1.x 設計ガイド | 記事 | ユーザーモード ドライバー フレームワーク (UMDF) について説明します。 | MSDN |
Windows ハードウェア互換性プログラム | 記事 | Windows 認定プログラムに関する情報を提供します。 | MSDN |