VMWare内でeMbedded Visual C++による開発を行うための、セットアップ方法。
ホストOS : Cent OS 5.2
ゲストOS(VMWare内) : Windows XP SP3
VMWare : VMWare Player 2.0.5 build-109488 (Linux 版)
仮想マシンのイメージは、EasyVMX! を用いて行った。作成されたファイルはこれ。
(1)セットアップの順序
セットアップの順序は、Microsoft公式ページ情報によれば、次のように行う。
Windows XPおよびSP3
ActiveSync 4.5 (Build 5096) (無償)
eMbedded Visual C++ 4.0 (無償)
eMbedded Visual C++ 4.0 SP4
Microsoft Visual Studio 2003 (C#での開発も行いたい場合) (有償)
Windows Mobile 2003 software for Pocket PC 日本語版 SDK (無償)
(2)WindowsのDEP無効化
Windowsを起動してログオンするときに、タスクトレイに次のようなメッセージが表示される。
『 'Virtual PC/Windows CE Emulator' は Windows を不安定にさせる原因となります。これらのドライバは読み込まれませんでした。 』
これはDEP機能がONになっているからであると、Googleで検索したblogに書かれている。DEPを無効化する方法は、boot.iniを修正する方法と、システム・コントロールパネルで無効化する方法の2つがあるが、今回は boot.ini を修正して無効化を行った。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional (DEP OFF)" /fastdetect /NoExecute=AlwaysOff
/NoExecute=OptIn となっているものを、/NoExecute=AlwaysOff に変更する。 (boot.iniでの設定詳細については @ITの記事を参考にした)
(3) VMWareのUSBサポートを USB2.0にする
標準ではUSB1.1相当なので、USB2.0の高速接続を可能とするため、次の変更をホストOS側で行う。
# USB settings
# This config activates USB
usb.present = "TRUE"
usb.generic.autoconnect = "TRUE"
# enable USB 2.0
ehci.present = "TRUE"
(4) 不具合事項
Pocket PC 2003 Emulator は、 VMWare内のゲストOSでは起動しない(起動しないように設定されている。マイクロソフトの説明)。
エミュレータの動作確認。
Pocket PC 2003 は起動しない。 Windows Mobile 6 は起動する。
(つまり、Visual Studio 2005 以降であれば、VMWare内でデバッグか可能ということ)
したがって、デバッグを行うためには、Pocket PC 2003の実機を、ActiveSyncで接続してやる必要がある。
eMbedded VC++ 4.0 でサポートされているデバイス一覧
今回用いた実機は、MytacのMio168(Windows Mobile 2003)。なお、より新しい HP iPAQ112 (Windows Mobile 6 Classic)を接続したところ、次のようなダイアログが表示された後、デバッグが出来ない旨警告される。(アップロードと実行のみなら可能)
(5) 稼働状況
ActiveSync接続された実機を用いてリモートデバッグしている状況のキャプチャ画像
無償ツールのみを組み合わせて利用するのも、様々な制限がわざと設けられていて苦労しますね…