Sharks Cove ハードウェア開発ボード
警告
Sharks Cove ハードウェア開発ボードは、Windows IoT Core ではサポートされなくなっています。 現在サポートされているボードの一覧については、「SoCs and custom boards (SoC とカスタム ボード)」をご覧ください。
Sharks Cove は、Windows 用のハードウェアとドライバーの開発に使用できるハードウェア開発ボードです。
Intel Sharks Cove ボードは、GPIO、I2C、I2S、UART、SDIO、USB など、さまざまなインターフェイスを使用するデバイスのドライバー開発をサポートしています。 Sharks Cove ボードを使用して、カメラやタッチ スクリーン用のドライバーを開発することもできます。
開始する前に
ここで説明する手順では、Windows 10、Windows 8.1、または Windows 7 を実行している必要があります。 これらの手順は、Windows 8 を実行している場合は機能しません。
Windows 7 を実行している場合は、PowerShell 4.0 をインストールする必要があります。また、Windows ADK のダウンロードとインストールも必要です。 次に、[スタート] メニューで、[すべてのプログラム] > [Windows Kits] > [Windows ADK] > [展開およびイメージング ツール環境] の順に移動します。 管理者として、このコマンド プロンプト ウィンドウを開きます。 以下の手順で指示されているコマンドを入力するときは、このコマンド プロンプト ウィンドウを使用します。
手順 1: ボードと関連ハードウェアを入手する
以下のハードウェアが必要です。
- Sharks Cove ボードと付属の電源コードおよびアダプター。
- USB ハブ
- USB キーボード
- USB マウス
- USB ネットワーク アダプター
- モニターと HDMI ケーブル (場合によってはアダプター)
Sharks Cove ボードは、RCS コンポーネントまたは Kynix で入手できます。
手順 2: キットとツールをダウンロードする
ドライバー開発環境には、ホスト コンピュータとターゲット コンピュータの 2 つのコンピューターがあります。 ターゲット コンピューターは、テスト コンピューターとも呼ばれます。 ホスト コンピューター上の Microsoft Visual Studio で、ドライバーを開発し、ビルドします。 デバッガーはホスト コンピューター上で実行され、Visual Studio のユーザー インターフェイスで使用できます。 ドライバーをテストしてデバッグするとき、ドライバーはターゲット コンピューター上で実行されます。 この場合、Sharks Cove ボードがターゲット コンピューターです。
Sharks Cove ボード用のハードウェアとドライバーを開発するには、ホスト コンピューターに以下のキットとツールが必要です。
ホスト コンピューターで、まず Visual Studio をダウンロードし、次に WDK をダウンロードしてから、WDK テスト パックをダウンロードします。 Windows 用デバッグ ツールは、WDK に含まれているため、個別にダウンロードする必要はありません。
ドキュメント
Windows 用デバッグ ツールのドキュメントは、インストール ディレクトリの CHM ファイルとしても利用できます。 (例: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\debugger.chm)。
手順 3: Sharks Cove ボードに Windows をインストールする
Sharks Cove ボードには、次のいずれかのバージョンの Windows をインストールできます。
用語 | 説明 |
---|---|
Windows Embedded 8.1 Industry Pro Evaluation | これは 180 日間の無料試用版です。 これを評価版と呼びます。 |
Windows Embedded 8.1 Industry Pro with Update (x86) - DVD | これにはサブスクリプションが必要です。 これを完全版と呼びます。 |
評価版をインストールする場合は、使用許諾契約書の以下の修正をお読みください。
評価版ソフトウェア ライセンス条項に関する修正 (ハードウェア開発者プログラム向け)
本ソフトウェアの使用でハードウェア開発者プログラムをサポートする場合は、以下の条件が適用されます。
- お客様は、以下を除き、Windows Embedded 8.1 Industry Pro の Microsoft 評価版ソフトウェア ライセンス条項 (以下、"評価版ソフトウェア ライセンス条項") の全体に同意するものとします。
- セクション 1.b. (デモンストレーションの権利) の一部が次のように修正されました。ソフトウェアを使って開発された Windows Embedded 8.1 Industry Pro デバイス ("デモンストレーション デバイス") を、デモンストレーションの目的で合理的に必要となる数だけ使い、潜在的なユーザーに対してデモンストレーションを行ったり、デモンストレーションで使うために潜在的なユーザーに提供したりすることができます。 お客様は、非公開義務を負っていないお客様にデモンストレーション デバイスをデモンストレーションし、提供することができます。
- 上記の修正条項に直接抵触しない、1.b 項の条項はすべて適用されます。
- 本ソフトウェアを使用することにより、お客様は本ライセンス条項に同意されたものとします。 お客様が本ライセンス条項に同意せず、遵守しない場合、お客様は本ソフトウェアまたはその機能を使用することはできません。
Windows Embedded 8.1 Industry (x86) Pro Evaluation または Windows Embedded 8.1 Industry Pro with Update (x86) - DVD をダウンロードします。 ダウンロードしたファイルを見つけます。 たとえば、 にします。
9600.17050.WINBLUE_REFRESH...X86FRE_EN-US_DV9.ISO などです。
Sharks Cove セットアップ ファイルのルートとなるフォルダーを作ります (例: C:\SharksCoveWindows)。 このフォルダーをルートと呼びます。 ルートで、以下のサブフォルダーを作成します。
- 段取り
- SharksCoveBsp
ISO ファイルをダブルクリックして、次のファイルを Root\Setup にコピーします。
- Boot
- Efi
- ソース
- サポート
- Autorun.inf
- Bootmgr
- Bootmgr.efi
- Setup.exe
Note
Windows 7 を実行している場合は、ISO ファイルを右クリックして、[ディスク イメージの書き込み] をクリックします。 イメージを書き込み可能 DVD に書き込みます。 次に、ファイルを DVD から Root\Setup にコピーします。
Sharks Cove ボードのサポート パッケージ (BSP) を入手します。 パッケージに含まれるすべてのファイルを Root\SharksCoveBsp にコピーします。
WDK Development Boards Add-on Kit を入手します。 [SourceCode] タブを開きます。[ダウンロード] タブではなく [ダウンロード] をクリックして、キット スクリプトを取得します。 Scripts フォルダーを開き、以下の 2 つの項目を ルートにコピーします。
- Create-DevboardImage.ps1
- DevBoard フォルダー
Note
DevBoard フォルダーには、複数のスクリプトとモジュールが含まれます (DevboardImage.ps1、Devboard.psm1、enable-telnet.ps1 など)。
管理者としてコマンド プロンプト ウィンドウを開き、「Powershell」と入力します。 ルートに移動します。 Windows イメージに BSP を追加するには、次のいずれかのコマンドを入力します。
Windows の評価版を使用している場合は、次のコマンドを入力します。
.\Create-DevboardImage -SourcePath Setup\sources\install.wim -Index 2 -BspManifest SharksCoveBsp\SharksCoveBsp.xml
Windows の完全版を使用している場合は、次のコマンドを入力します。
.\Create-DevboardImage -SourcePath Setup\sources\install.wim -Index 1 -BspManifest SharksCoveBsp\SharksCoveBsp.xml
注Create-DevboardImage スクリプトを実行する前に、実行ポリシーの設定が必要になる場合があります。 次に例を示します。
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
BSP が Windows イメージに追加されました。次のフォルダーとファイルを、Root\Setup から USB フラッシュ ドライブ (FAT32) にコピーしてください。
- Boot
- Efi
- ソース
- サポート
- Autorun.inf
- Bootmgr
- Bootmgr.efi
- Setup.exe
Sharks Cove ハードウェアを、次に示すように設定します。
フラッシュ ドライブを、Sharks Cove ボードに接続されているハブに接続します。 Sharks Cove ボードを起動または再起動するときに、音量を上げるボタンを押したままにします。 音量を上げるボタンは、前の図に示されているように、ボードの左側にある 3 つのボタン セットの一番上のボタンです。 (ボードが既に起動されている場合は、電源ボタンを数秒間押し続けるとオフにできます。) ボードが起動すると、画面に EFI シェルが表示されます。
Note
場合によっては、EFI シェルに移動する必要があります。 [ブート マネージャー] > [EFI Internal Shell] (EFI 内部シェル) の順に移動します。
USB フラッシュ ドライブの名前 (たとえば fs1:) をメモしておきます。
(ここでは、USB フラッシュ ドライブの名前に fs1: を使用します。) シェル> プロンプトで、次のコマンドを入力します。
fs1:cd efi\bootdir bootia32.efi がディレクトリにあることを確認します。 次のコマンドを入力します。
bootia32.efi 画面の Windows セットアップ手順に従います。
手順 4: ドライバーの展開とテストのために Sharks Cove ボードをプロビジョニングする
プロビジョニングは、ドライバーの自動展開、テスト、およびデバッグのためにコンピューターを構成するプロセスです。
次に示すように、ハードウェアを設定します。
Sharks Cove ボードのプロビジョニングは、他のコンピューターのプロビジョニングと似ています。 Sharks Cove ボードをプロビジョニングするには、次のトピックの手順に従います。
このトピックは、オン ラインでも debugger.chm でも使用できます。
Note
Sharks Cove ボードをプロビジョニングする前に、セキュア ブートを無効にする必要があります。 Sharks Cove ボードを再起動します。 ボードが再起動したら、音量を上げるボタンを押したままにします。 [デバイス マネージャー] > [システム セットアップ] > [ブート] の順に移動します。 [UEFI Security Boot] (UEFI セキュリティ ブート) を [無効] に設定します。
手順 5: Sharks Cove ボード用のソフトウェア ドライバーを作成する
Sharks Cove ボードのデバイス ドライバーを作成する前に、ソフトウェア ドライバーを作成してドライバー開発ツールについて慣れておくと、作業が容易になります。 その手順は、他のターゲット コンピューター用のソフトウェア ドライバーを作成する場合と似ています。 まずは、次の実践的な演習を行ってください。
手順 6: セカンダリ システム記述テーブル (SSDT) を変更する
Sharks Cove ボード上の単純な周辺機器バス (SPB) に接続するデバイスのドライバーを作成する場合は、Sharks Cove ファームウェアのセカンダリ システム記述テーブル (SSDT) を更新する必要があります。 例として、I2C バス経由でデータを転送し、汎用 I/O (GPIO) ピンを介して割り込みを生成する加速度計のドライバーを作成することが挙げられます。 詳細については、「単純な周辺機器バス」を参照してください。
以下に、SSDT の変更の例を示します。 ADXL345 加速度計のテーブル エントリを追加します。
Note
SpbAccelerometer サンプル ドライバーと ADXL345 加速度計の手順ガイドについては、「SpbAccelerometer ドライバー クックブック」をご覧ください。
ASL.exe の x86 バージョンを Sharks Cove ボードにコピーします。 ASL.exe は WDK に含まれています。
例: C:\Program Files (x86)\Windows Kits\8.1\Tools\x86\ACPIVerify\ASL.exe
管理者としてコマンド プロンプト ウィンドウを開きます。 次のコマンドを入力して SSDT を逆コンパイルします。
asl /tab=ssdt
これにより、Ssdt.asl ファイルが作成されます。
Ssdt.asl を開きます (たとえば、メモ帳で)。
DefinitionBlock("SSDT.AML", "SSDT", 0x01, "Intel_", "ADebTabl", 0x00001000) { Scope() { Name(DPTR, 0x3bf2d000) Name(EPTR, 0x3bf3d000) Name(CPTR, 0x3bf2d010) Mutex(MMUT, 0x0) Method(MDBG, 0x1, Serialized) { Store(Acquire(MMUT, 0x3e8), Local0) If(LEqual(Local0, Zero)) { OperationRegion(ABLK, SystemMemory, CPTR, 0x10) Field(ABLK, ByteAcc, NoLock, Preserve) { AAAA, 128 } Store(Arg0, AAAA) Add(CPTR, 0x10, CPTR) If(LNot(LLess(CPTR, EPTR))) { Add(DPTR, 0x10, CPTR) } Release(MMUT) } Return(Local0) } } // Insert a Scope(_SB_) and a Device entry here. }
Scope(_SB_) エントリを挿入します。 スコープ エントリ内に、独自のデバイス エントリを挿入します。 ADXL345 加速度計の Scope(_SB_) エントリと Device エントリの例を次に示します。
Scope(_SB_)
{
Device(SPBA)
{
Name(_HID, "SpbAccelerometer")
Name(_UID, 1)
Method(_CRS, 0x0, NotSerialized)
{
Name(RBUF, ResourceTemplate()
{
I2CSerialBus(0x53, ControllerInitiated, 400000, AddressingMode7Bit, "\\_SB.I2C3", 0, ResourceConsumer)
GpioInt(Edge, ActiveHigh, Exclusive, PullDown, 0, "\\_SB.GPO2") {0x17}
})
Return(RBUF)
}
Method(_DSM, 0x4, NotSerialized)
{
If(LEqual(Arg0, Buffer(0x10)
{
0x1e, 0x54, 0x81, 0x76, 0x27, 0x88, 0x39, 0x42, 0x8d, 0x9d, 0x36, 0xbe, 0x7f, 0xe1, 0x25, 0x42
}))
{
If(LEqual(Arg2, Zero))
{
Return(Buffer(One)
{
0x03
})
}
If(LEqual(Arg2, One))
{
Return(Buffer(0x4)
{
0x00, 0x01, 0x02, 0x03
})
}
}
Else
{
Return(Buffer(One)
{
0x00
})
}
} // Method(_DSM ...)
} // Device(SPBA)
} // Scope(_SB_)
この例では、ResourceTemplate()
でのエントリが、加速度計が 2 つのハードウェア リソースを必要とすることを指定しています。それらは、特定の I2C バス コントローラ (I2C3) への接続 ID と GPIO 割り込みです。 割り込みでは、GPO2 という名前の GPIO コントローラーでピン 0x17 が使用されます。
Ssdt.asl に独自のデバイス エントリを追加した後で、次のコマンドを入力して Ssdt.asl をコンパイルします。
asl ssdt.asl
これにより、コンパイルされた出力が Ssdt.aml という名前のファイルに格納されます。
Sharks Cove ボードのテスト署名が有効になっていることを確認します。
Note
テスト署名は、プロビジョニング中に自動的に有効になります。
Sharks Cove ボードで、管理者としてコマンド プロンプト ウィンドウを開きます。 このコマンドを入力します。
bcdedit /enum {current}
出力内に testsigning Yes
があることを確認します。
Windows Boot Loader
-------------------
identifier {current}
...
testsigning Yes
...
テスト署名を手動で有効にする必要がある場合は、次の手順を実行します。
管理者としてコマンド プロンプト ウィンドウを開き、次のコマンドを入力します。
bcdedit /set TESTSIGNING ON
Sharks Cove ボードを再起動します。 ボードが再起動したら、音量を上げるボタンを押したままにします。 [デバイス マネージャー] > [システム セットアップ] > [ブート] の順に移動します。 [UEFI Security Boot] (UEFI セキュリティ ブート) を [無効] に設定します。
変更を保存し、Windows のブートを続行します。
更新した SSDT を読み込むには、管理者としてコマンド プロンプト ウィンドウを開き、次のコマンドを入力します。
asl /loadtable ssdt.aml
Sharks Cove ボードを再起動します。
手順 7: デバイスを Sharks Cove ボードに接続する
仕様を参照して、デバイスにどのピンを使用するかを決定します。 たとえば、ADXL345 加速度計を I2C バスに接続するとします。 仕様では、必要なピンが J1C1 ヘッダーにあることがわかります。 以下に、J1C1 ヘッダーで使用するピンの一部を示します (すべてではありません)。
ピン留めする | ピン名 | Comments | ACPI オブジェクト |
---|---|---|---|
7 | GPIO_S5[23] | 加速度計の割り込み信号 | _SB.GPO2 {0x17} |
13 | SIO_I2C2_DATA | I2C コントローラー 2 の I2C データ ライン | _SB.I2C3 |
15 | SIO_I2C2_CLK | I2C コントローラー 2 の I2C クロック ライン | _SB.I2C3 |
SSDT のデバイス エントリとの関係に注目してください。
I2CSerialBus(... "\\_SB.I2C3", , )
GpioInt(... "\\_SB.GPO2") {0x17}
手順 8: デバイス用のドライバーを作成、ビルド、および展開する
Sharks Cove ボードのデバイス ドライバーの作成は、他のコンピューターのデバイス ドライバーの作成に似ています。 Visual Studio では、ドライバー テンプレートから開始することも、ドライバー サンプルから開始することもできます。
Sharks Cove ボードでドライバーをテストする準備ができたら、次の手順に従います。
ホスト コンピューターの Visual Studio で、パッケージ プロジェクトを右クリックし、[プロパティ] を選択します。 [Driver Install] (ドライバー インストール) > [デプロイ] の順に移動します。 [Enable Deployment] (展開を有効にする) と [Remove previous driver versions before deployment] (展開前に以前のドライバー バージョンを削除する) をオンにします。 [ターゲット コンピューター名] で、Sharks Cove ボードの名前を選択します。 [Install and Verify] (インストールと検証) を選択します。
引き続きプロパティ ページで、[Driver Signing] (ドライバー署名) > [全般] の順に移動します。 [Sign Mode] (署名モード) で、[Test Sign] (署名のテスト) を選択します。 OK をクリックします。
ドライバー プロジェクトで、INF ファイルを開きます。 SSDT で作成したハードウェア ID (_HID) に一致するように、ハードウェア ID を編集します。 たとえば、このデバイス エントリを SSDT に配置するとします。
Device(SPBA) { Name(_HID, "SpbAccelerometer") ...
この場合、INF ファイルのハードウェア ID は ACPI\SpbAccelerometer になります。
[Standard.NT$ARCH$] %KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, ACPI\SpbAccelerometer
Visual Studio の [デバッグ] メニューで、[デバッグの開始] を選択します。
Microsoft Visual Studio で、まず、[出力] ウィンドウに進行状況が表示されます。 その後、デバッガーのイミディエイト ウィンドウが開き、引き続き進行状況が表示されます。
ドライバーが Sharks Cove ボードに展開され、インストールされ、読み込まれるまで待ちます。 これには、1 ~ 2 分かかることがあります。
デバッガーが自動的に中断されない場合は、[デバッグ] メニューの [すべて中断] を選択します。 ホスト コンピューター上のデバッガーは、ターゲット コンピューター (カーネル モード) または Wudfhost.exe の正しいインスタンス (UMDF) にブレイク インします。 デバッガー イミディエイト ウィンドウに、デバッガーのコマンド プロンプトが表示されます。
読み込まれたモジュールを表示するには、「lm」と入力します。 読み込まれたモジュールの一覧にドライバーが表示されていることを確認します。
WinDbg を使った Sharks Cove ボードのデバッグ
Visual Studio を使用してカーネル モード デバッグを設定する代わりに、セットアップを手動で行うことができます。
デバッグに Visual Studio を使用する代わりに、WinDbg を使用できます。
Visual Studio と WinDbg のどちらを使用するかに関係なく、以下の実践的なガイドはデバッガー コマンドの学習に役立ちます。
サンプルのドライバー コード
Simple Peripheral Bus について
Windows ドライバーが単純な周辺機器バスで動作する方法については、「単純な周辺機器バス」を参照してください。
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示