ラボ 2: 独自のボード サポート パッケージ (BSP) を作成する
BSP には、ボードで使用されるコンポーネントやシリコンに固有のデバイス ドライバーのセットが付属します。 それらはコンポーネント ベンダーやシリコン ベンダーによって、ほとんどの場合、.inf ファイルとそれに関連付けられている .sys ファイルや .dll ファイルの形式で提供されます。
新しいボード サポート パッケージ (BSP) は、次のようなときに作成します。
新しいハードウェア設計を作成する
既存のハードウェア設計でドライバーやコンポーネントを交換する
新しい BSP を作成する場合でも、既存の BSP に変更を加える場合でも、自分がオーナーになります。 これにより、更新プログラムをボードにインストールすることを許可するかどうかを決めることができます。
このラボでは、Raspberry Pi 2 をベースに新しい BSP を作成し、既存の GPIO ドライバーを削除して、サンプルの GPIO ドライバー (GPIO KMDF デモ) に置き換えます。
新しい BSP の作業フォルダーを作成する
IoT Core シェルから、Add-IoTBSP を使用して変更を加える BSP の作業フォルダーを作成します。
Add-IoTBSP MyRPi2 (or) newbsp MyRPi2
パッケージをフィーチャー マニフェストに追加する
新しい BSP 用のフィーチャー マニフェスト ファイル
C:\MyWorkspace\Source-arm\BSP\MyRpi2\MyRpi2FM.xml
を開きます。別のウィンドウで、テンプレートとして使用する Raspberry Pi 2 のフィーチャー マニフェストを開きます。
基本パッケージ (BasePackages) を追加します。
ブート パーティション用の UEFI ドライバー (RASPBERRYPI.RPi2.BootFirmware.cab)
UpdateOS に必要なドライバー (SV.PlatExtensions.UpdateOS.cab)
必須のデバイス ドライバー (bcm2836sdhc.cab、dwcUsbOtg.cab、rpiq.cab)
独自の BSP を作成する際には、ディスプレイ ドライバーとストレージ ドライバー、場合によってはネットワーク ドライバーが求められることが一般的です。
デバイス固有のカスタマイズ
デバイス レイアウト パッケージとプラットフォーム パッケージ (DeviceLayoutPackages、OEMDevicePlatformPackages) をコピーします。
OEMDevicePlatform.xml と devicelayout.xml の両方を 1 つのパッケージにパッケージ化できることに注目してください (例: DeviceLayout.MBR4GB)。 そうすることで、その同じパッケージを両方のセクション (例:
<OEMDevicePlatformPackages>
と<DeviceLayoutPackages>
) の入力として指定できます。 詳しくは、デバイス レイアウトに関する記事をご覧ください。機能 (Features) をコピーします。
必要な機能をコピーします。 プロジェクトに適用しないものは除外します。
たとえば、既存の GPIO ドライバー以外の各ドライバーをコピーします。
<PackageFile Path="$(mspackageroot)\Retail\$(cputype)\$(buildtype)" Name="RASPBERRYPI.RPi2.GPIO.cab"> <FeatureIDs> <FeatureID>RPI2_DRIVERS</FeatureID> </FeatureIDs> </PackageFile>
注: パッケージのグループ化を容易にするために、1 つ以上の機能 ID にまとめることができます。 たとえば、Raspberry Pi 2 のオプションのすべてのドライバーには、機能 ID: RPI2_DRIVERS が使用されます。
HelloBlinky ドライバーを追加します。
<PackageFile Path="%PKGBLD_DIR%" Name="%OEM_NAME%.Drivers.HelloBlinky.cab"> <FeatureIDs> <FeatureID>BLINKY_DRIVER</FeatureID> </FeatureIDs> </PackageFile>
新しい製品フォルダーの作成
新しい製品の作業フォルダーを作成し、末尾に BSP の名前を追加します。
newproduct ProductC MyRpi2
これにより、新しい BSP にリンクされたフォルダー
C:\MyWorkspace\Source-<arch>\Products\ProductC
が作成されます。
プロジェクトの構成ファイルを更新する
Add-IoTProductFeature を使用して、製品テストの構成ファイルを更新します。
Add-IoTProductFeature ProductC Test BLINKY_DRIVER -OEM (or) addfid ProductC Test BLINKY_DRIVER -OEM
イメージをビルドしてテストする
イメージをビルドする
IoT Core シェルから、次のようにイメージを作成します。
buildimage ProductC Test
これにより、
C:\MyWorkspace\Build\<arch>\ProductC\Flash.ffu
に製品バイナリが作成されます。Windows IoT Core Dashboard を起動し、[新しいデバイスのセットアップ]>[カスタム] を選択して、イメージを参照します。
デバイスに Micro SD カードを挿入してそれを選択し、ライセンス条項に同意して、[インストール] をクリックします。 これにより、前のイメージが新しいイメージに置き換えられます。
カードを IoT デバイスに挿入し、起動します。
しばらくすると、デバイスが自動的に起動し、アプリが表示されます。
ドライバーが動作するかどうかを確認する
- Hello, Blinky! ラボのテスト手順を使用して、ドライバーをテストします。