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