Clone BSPの作成(Platform Builder 6.0)
WinCEの開発で、新しいBSPを作る際、フォルダをコピーしてあれこれ直して作るという方法があります。それでも構わないのですが、ファイル名を変更したりするのは結構面倒という話があります。そこでClone BSPを作成し、基となるBSPの構成をそっくりコピーしてしまうのがお勧めです。
Clone BSPを作るのは簡単ですが落とし穴がありますので、そこを含めて説明します。
まず“Tools:Platform Builder for CE 6.0:Clone BSP」を選択しClone BSP作成のためのWizardを起動します。

Clone BSPウィンドウが開きますので、必要な名前を入力して“Clone”ボタンをクリックしてください。以下の例ではオリジナルのBSPとして「Device Emulator: ARMV4I」を指定しています。そしてこの時の“Name”と“Platform directory”が新しいBSPの名前となります。ここで変な名前を付けると後悔しますから注意ですね。

するといとも簡単に新しいBSPのディレクトリが“C:\WinCE600\Platform”以下にできているのを見ることができます。
落とし穴
さあここでいつものように新しいOSデザインを作成すればビルドができるはずです。いつものように“File:New:Project...”を選択し新しいOSデザインを作ります。OS Design Wizardの途中で出てくるBSPの選択画面で、先ほどクローンとして作成した新しいBSPが有効になっていることがわかります。今回はこのTrainingBSP01を選択してMobile Handheldをデフォルトで作成してみます。そしてビルドです。

すべてデフォルトのままやっていますので、本来はそのままビルドが通るはずと思います。ところがなぜか以下のようなエラーが出てしまうのです。
Error: Could not find file 'C:\WINCE600\OSDesigns\MyOSDesign01\MyOSDesign01\RelDir\TrainingBSP01_ARMV4I_Debug\kitl.dll' on disk
kitl.dll C:\WINCE600\OSDesigns\MyOSDesign01\MyOSDesign01\RelDir\TrainingBSP01_ARMV4I_Debug\kitl.dll NK SHZ
Error: failed setting line
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
簡単に言うとkitl.dllが見つからないというエラーです。なんでデフォルトのままビルドしてkitl.dllが見つからないのか?これは結構困ります。オリジナルのBSPではkitl.dllはそのままリンクできますので、この原因がどこにあるか調査するのは難しそうです。もしかするとオリジナルのフォルダから、このkitl.dllをコピーして持ってくれば良いのでは?という不埒な考えも浮かびますが、正しい解決方法がもちろんあるのです。
解決編
ということで、このエラーの解決編です。本当は問題が出る前にClone BSP作成の手順としてきちんとやっておけば最初からエラーは出ません。
- Clone BSPを作成します。
- “C:\WINCE600\PLATFORM\TrainingBSP01\FILES”に移動します。
- deviceemulator-preri.batを確認し、TrainingBSP01-preri.batとリネームします。すなわち“deviceemulator”の部分をディレクトリの名前にすることになります。
- ビルドします。
- 出来上がり。
このBATファイル名のリネームですが、PB6.0 SP1のインストールで対策されているようです。(5/29追記)
このような手順でClone BSPを作ることが出来ます。Clone BSPはオリジナルのBSPと異なるディレクトリに存在します。オリジナルを間違って修正してしまうこと無しに、ターゲットデバイスに合わせたソースの修正が可能になるわけです。

Comments