- - PR -
前回は、Visual Studio 2005を利用してOSイメージを作成し、それを起動するところまでを解説しました。今回はOSのリモートデバッグおよびリモートツールの解析手法について解説します。
リモートデバッグとカーネルデバッグ
Visual StudioやeMbedded Visual C++には、開発マシンとターゲットデバイスを接続し、ビルドしたアプリケーションを開発マシンからターゲットデバイスへ転送したり、リモートデバッグする機能があります。リモートデバッグでは、PC上で動作するWindowsアプリケーションと同じように、リモートでステップ実行や変数の監視が可能です。
OSイメージもアプリケーションと同じように、リモートデバッグを行うことができます。OSイメージのデバッグを行うことを「カーネルデバッグ」と呼びます。カーネルデバッグでは、OSモジュールやデバイスドライバ、アプリケーションのデバッグが可能です。当然のことながら、ソースコード上にブレークポイントを設定してのステップ実行や変数の参照が可能です。
ターゲットデバイスとの接続はイーサネット、USB、シリアルケーブルなどを利用します。接続の際は、「KITL(Kernel Independent Transport Layer)」という機能を利用します。これは名前のとおり、OSカーネルから独立した接続レイヤで開発マシンとターゲットデバイスを接続する機能です。
カーネルデバッグ対応イメージの作成
カーネルデバッグを行うには、カーネルデバッグをサポートするOSイメージを構築する必要があります。つまり、OSイメージもアプリケーションと同じように、「リリース版」「デバッグ版」の作成が可能です。
![]() |
| 画面1 ビルド方法の選択。「Debug」「Release」の区別があることが分かる |
カーネルデバッグ対応イメージの設定は、Visual Studio 2005の[Solution Explorer]の[ワークスペース名](ここでは[MyOSImage])を右クリックし、[Properties]を選択します。
![]() |
| 画面2 Solution Explorerで開いたコンテキストメニュー |
[ワークスペース名 Properties Page]ダイアログが表示されます。左側のツリービューで[Configuration Properties]−[Build Options]を選択し、右側の[Build Options]リストで[Enable Kernel Debugger]のチェックボックスを有効にします。また、前述のKITLを有効にするために[Enable KITL]も有効にします。
![]() |
| 画面3 ビルドオプションの設定(画像をクリックすると拡大します) |
この2つのチェックボックスを有効化した状態でビルドすると、カーネルデバッグに対応したOSイメージが生成されます。
ターゲットデバイスとの接続
次に、Visual Studio 2005とターゲットデバイスを接続するための設定を行います。[Target]メニューで[Connectivity Options]を選択すると、[Target Device Connectivity Options]ダイアログが表示されます。
- [Download]コンボボックス:接続方法
- [Transport]コンボボックス:接続で利用するトランスポート
をそれぞれ設定します。ここではエミュレータに接続するため、[Download][Transport]ともに[Device Emulator(DMA)]を選択しています。なお、カーネルデバッガを利用する場合、[Debugger]コンボボックスは[KdStub]を選択します。
![]() |
| 画面4 [Target Device Connectivity Options]ダイアログ |
設定が完了したら、ターゲットデバイスと実際に接続します。[Target]メニューで[Attach Device]をクリックするとターゲットデバイスと接続し、OSイメージが転送された後にOSを起動します。
![]() |
| 画面5 OSイメージ転送中 |
カーネルデバッガを有効にしている場合は、起動時にデバッグサービスも開始されます。
![]() |
| 画面6 エミュレータ上で起動したWindows CE 6(画像をクリックすると拡大します) |
この時点でKITLとカーネルデバッガが有効になっていれば、自動的にデバッグ接続が確立され、Visual Studio 2005とターゲットデバイス間でリモートデバッグできる状態になります。画面7は、ディスプレイドライバの初期化コードにブレークポイントを設定して、ステップ実行している画面です。変数ビューにて、ブレークしている個所の変数を参照できます。
![]() |
| 画面7 リモートでステップ実行している画面(画像をクリックすると拡大します) |
組み込み開発フォーラム 新着記事
- ブロック定義図の基礎(2010/2/8)
- 微細化を超える革新が見えたアルテラ28nm FPGA(2010/2/5)
- OESFとJASAが提携、Android技術認定制度の構築へ(2010/2/5)
- ないと困る!? ファイルシステムのありがたみ(2010/2/4)
- カーエレの進化を支える組み込みソフトウェア開発(2010/2/2)
- アルテラ、28nm FPGAに向けた最先端技術を発表(2010/2/2)
- 【問題6】 高速化技術「パイプライン制御」について(2010/2/1)
- AndroidのカーネルをLinux以外のOSに置き換える(2010/2/1)
- いま振り返るFPGA普及・発展の歴史(2010/1/27)
- 割り込みテクニックでタイマを使おう(2010/1/26)
- Silverlight for Windows Embeddedの実装方法(2010/1/25)
- 【問題5】 ページング方式の「仮想記憶」について(2010/1/20)













