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] > [展開およびイメージング ツール環境] の順に移動します。 管理者として、このコマンド プロンプト ウィンドウを開きます。 以下の手順で指示されているコマンドを入力するときは、このコマンド プロンプト ウィンドウを使用します。

以下のハードウェアが必要です。

  • 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 に含まれているため、個別にダウンロードする必要はありません。

ドキュメント

手順 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 ハードウェアを、次に示すように設定します。

picture of board and connections.

フラッシュ ドライブを、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 ボードをプロビジョニングする

プロビジョニングは、ドライバーの自動展開、テスト、およびデバッグのためにコンピューターを構成するプロセスです。

次に示すように、ハードウェアを設定します。

picture of board with connections for provisioning.

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 ドライバー クックブック」をご覧ください。

  1. ASL.exe の x86 バージョンを Sharks Cove ボードにコピーします。 ASL.exe は WDK に含まれています。

    例: C:\Program Files (x86)\Windows Kits\8.1\Tools\x86\ACPIVerify\ASL.exe

  2. 管理者としてコマンド プロンプト ウィンドウを開きます。 次のコマンドを入力して SSDT を逆コンパイルします。

    asl /tab=ssdt

    これにより、Ssdt.asl ファイルが作成されます。

  3. 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.
    
    }
    
  4. 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 が使用されます。

  1. Ssdt.asl に独自のデバイス エントリを追加した後で、次のコマンドを入力して Ssdt.asl をコンパイルします。

    asl ssdt.asl

    これにより、コンパイルされた出力が Ssdt.aml という名前のファイルに格納されます。

  2. Sharks Cove ボードのテスト署名が有効になっていることを確認します。

Note

テスト署名は、プロビジョニング中に自動的に有効になります。

Sharks Cove ボードで、管理者としてコマンド プロンプト ウィンドウを開きます。 このコマンドを入力します。

bcdedit /enum {current}

出力内に testsigning Yes があることを確認します。

Windows Boot Loader
-------------------
identifier              {current}
...
testsigning             Yes
...

テスト署名を手動で有効にする必要がある場合は、次の手順を実行します。

  1. 管理者としてコマンド プロンプト ウィンドウを開き、次のコマンドを入力します。

    bcdedit /set TESTSIGNING ON

  2. Sharks Cove ボードを再起動します。 ボードが再起動したら、音量を上げるボタンを押したままにします。 [デバイス マネージャー] > [システム セットアップ] > [ブート] の順に移動します。 [UEFI Security Boot] (UEFI セキュリティ ブート)[無効] に設定します。

  3. 変更を保存し、Windows のブートを続行します。

  4. 更新した 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 ボードでドライバーをテストする準備ができたら、次の手順に従います。

  1. ホスト コンピューターの Visual Studio で、パッケージ プロジェクトを右クリックし、[プロパティ] を選択します。 [Driver Install] (ドライバー インストール) > [デプロイ] の順に移動します。 [Enable Deployment] (展開を有効にする)[Remove previous driver versions before deployment] (展開前に以前のドライバー バージョンを削除する) をオンにします。 [ターゲット コンピューター名] で、Sharks Cove ボードの名前を選択します。 [Install and Verify] (インストールと検証) を選択します。

  2. 引き続きプロパティ ページで、[Driver Signing] (ドライバー署名) > [全般] の順に移動します。 [Sign Mode] (署名モード) で、[Test Sign] (署名のテスト) を選択します。 OK をクリックします。

  3. ドライバー プロジェクトで、INF ファイルを開きます。 SSDT で作成したハードウェア ID (_HID) に一致するように、ハードウェア ID を編集します。 たとえば、このデバイス エントリを SSDT に配置するとします。

    Device(SPBA)
    {
       Name(_HID, "SpbAccelerometer")
       ...
    

    この場合、INF ファイルのハードウェア ID は ACPI\SpbAccelerometer になります。

    [Standard.NT$ARCH$]
    %KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, ACPI\SpbAccelerometer
    
  4. Visual Studio の [デバッグ] メニューで、[デバッグの開始] を選択します。

  5. Microsoft Visual Studio で、まず、[出力] ウィンドウに進行状況が表示されます。 その後、デバッガーのイミディエイト ウィンドウが開き、引き続き進行状況が表示されます。

    ドライバーが Sharks Cove ボードに展開され、インストールされ、読み込まれるまで待ちます。 これには、1 ~ 2 分かかることがあります。

  6. デバッガーが自動的に中断されない場合は、[デバッグ] メニューの [すべて中断] を選択します。 ホスト コンピューター上のデバッガーは、ターゲット コンピューター (カーネル モード) または Wudfhost.exe の正しいインスタンス (UMDF) にブレイク インします。 デバッガー イミディエイト ウィンドウに、デバッガーのコマンド プロンプトが表示されます。

  7. 読み込まれたモジュールを表示するには、「lm」と入力します。 読み込まれたモジュールの一覧にドライバーが表示されていることを確認します。

WinDbg を使った Sharks Cove ボードのデバッグ

Visual Studio を使用してカーネル モード デバッグを設定する代わりに、セットアップを手動で行うことができます。

デバッグに Visual Studio を使用する代わりに、WinDbg を使用できます。

Visual Studio と WinDbg のどちらを使用するかに関係なく、以下の実践的なガイドはデバッガー コマンドの学習に役立ちます。

サンプルのドライバー コード

Simple Peripheral Bus について

Windows ドライバーが単純な周辺機器バスで動作する方法については、「単純な周辺機器バス」を参照してください。

すべてのドライバー開発者のための概念

ドライバーの開発、テスト、および展開

Windows Driver Frameworks

Windows ハードウェア デベロッパー センター

Windows 向けの WDK サンプル

テクニカル サポート