PBのインストール終わったら cdrom:\eVC\setupallでeVC4.0+SP1+Standard_SDKもインストールします。 eVCのコモンフォルダ名はc:\program files\Windows CE Tools で、 再インストール時に\eVC4が付いていたら削除します。 SDKはCE.NETからはStandard_SDKという共通タイプができたので、 これでコンパイルしたバイナリは、 Standard_SDKをサポートするように作成したプラットフォームならどれでも動きます。
CEPCのデバッグ実行では、フロッピーでDOS起動して、
loadcepc.exeでカーネルローダ(eboot.bin)を読み込み、
デバッグイーサ経由でカーネル(nk.bin)をホストからダウンロードします。
CE起動後はデバッグイーサの上のKITLによりホストと通信しながらかつ、
CEOSからは仮想ミニポートとして共用されることになります。
なお、CEPC上のReleaseディレクトリはホストマシンのリリースディレクトリが
見えているのでファイルの受け渡しはここでも可能です。
※カーネルがロードされるのにデバッガが接続できない場合、
デバイスのリセットをダミーで選ぶ(実行はしない)と接続してくれることがあります。
また、カーネルロード中にIEで他のサイトとか見て回っていると
この現象が起きにくいようです。ってうちの環境だけ?
※他で使用されているためダウンロードが開始できない、とか言われた場合は、
たいてい古いcepb.exeです。
Platform builderを終了してもある程度時間がたたないと
cepb.exeが死なないようです。
ずっと死なないようならタスクマネージャから殺しましょう。
デバッグ実行している場合は、
仮想ミニポートドライバ→KITL
→eboot.bin中のデバッグイーサドライバ(DP83815/RTL8139/NE2000)
となっているためCEPCからちゃんと直接パケットが出ますが、
このままリリースビルドしてもDP83815やRTL8139のドライバは入っていないので
動きません。カタログから追加しておきます。
ISA接続のPCMCIAコントローラはカタログから追加すれば使えますが、 BIOSでIRQ11をISAにして、D0000-DFFFFを空けておきます。これは固定値で、 修正するにはplatform.bibとかC:\WINCE410\PUBLIC\COMMON\OAK\DRIVERS\PCMCIA\I82365\i82365.regとかです。
ローカルのハードディスクを見たい場合は記憶域デバイスのATAPI、PCMCIAのフラッシュを見たいならATADISKをカタログから追加します。 コアOSのファイルシステムの記憶域マネージャの中のFATもないなら追加します。 FATはFAT32もサポートしているようですが、 下の単体起動時の場合はBLDRのサポートがFAT16なので2GBまでです。 なおLinuxとかがハードディスクに入っていると飛ばしてくれたりするので注意しましょう。
通信ポートはSerial-Aは38400bpsのデバッグ出力。Serial-BがCEからCOM1ポートとして見えます。
を使うと楽です。
BLDRは標準では640x480の256色固定なので、変更するには、
set _WINCEROOT=c:\WINCE410 set _FLATRELEASEDIR=c:\myproj\mycepc\RelDir\LOADER set _PROJECTROOT=c:\myproj\mycepc\WINCE410\CEPC call c:\wince410\public\common\oak\misc\wince x86 mycepc CEPC cd c:\myproj\mycepc\LOADER c:\wince410\public\common\oak\bin\i386\buildパス名とかプロジェクト名(mycepc)は適宜読み替えてください。
#ifndef NOVIDEO
pBootArgs->ucVideoMode = 0xff;
pBootArgs->pvFlatFrameBuffer = minfo.dwPhysBasePtr;
pBootArgs->vesaMode = 0x114;
pBootArgs->cxDisplayScreen = minfo.wXResolution;
pBootArgs->cyDisplayScreen = minfo.wYResolution;
pBootArgs->cxPhysicalScreen = minfo.wXResolution;
pBootArgs->cyPhysicalScreen = minfo.wYResolution;
pBootArgs->cbScanLineLength = minfo.wBytesPerScanLine;
pBootArgs->bppScreen = minfo.ucBitsPerPixel;
pBootArgs->RedMaskSize = minfo.ucRedMaskSize;
pBootArgs->RedMaskPosition = minfo.ucRedFieldPosition;
pBootArgs->GreenMaskSize = minfo.ucGreenMaskSize;
pBootArgs->GreenMaskPosition = minfo.ucGreenFieldPosition;
pBootArgs->BlueMaskSize = minfo.ucBlueMaskSize;
pBootArgs->BlueMaskPosition = minfo.ucBlueFieldPosition;
#endif // NOVIDEO.
に変更し、startup.asmの400行目あたり、
; Check for video mode support
;
mov eax, 4f01h
mov ecx, 114h
OpPrefix
...
; Switch video mode
;
mov eax, 4f02h
mov ebx, 114h
or ebx, VESALINEAR
に変更します。114hは800x600x16bitのVESAモードです。
どの値がどんな画面モードかはgoogleで検索するか、
VESATESTを改造してvesaModeも表示するようにして調べてください。
PB4.1Jでデバッグカーネルを実行し、 eVCでプラットフォームmycepc_STANDARDを選択、 コンパイル、デバッグ実行すると、PB4.1Jで起動中のCEPC上でデバッグ実行可能です。 Platform Managerの設定はKITLトランスポートとCESHを選択します。 SDKの作成時にデフォルトも指定できます。
※eVCでのデバッグ開始時に「既定のデバイスがインストールされていません」とか出る (リモートズームインとかは問題なく接続できる)場合は、 「WCE構成」ツールバー(のデバイス選択ドロップリスト)を 画面上に表示しておいてください。 これ、WCEToolkit+VC5の時代からあるしょーもないバグなんだよなあ…