VS2005の組み込み開発機能オーバービュー

〜 組み込み開発環境としてのVisual Studio 2005(前編) 〜

VS2005の組み込み開発機能オーバービュー

松井 俊訓/杉本 拓也(Microsoft MVP 2005 - Windows Embedded)
 株式会社富士通ソフトウェアテクノロジーズ 2005/12/6

- PR -

VS2005によるマネージド/ネイティブコード開発

 Windows CEのアプリケーションには、「マネージドコードアプリケーション」と「ネイティブコードアプリケーション」の2種類が存在する。

 マネージドコードアプリケーションは.NET Frameworkのサブセットであるモバイル端末向けの「.NET Compact Framework」上で動作するアプリケーションである。実行モジュールには、「IL」と呼ばれる中間コードが格納されている。この中間コードは、.NET Compact Frameworkの「CLR」(Common Language Runtime)によって各ハードウェア固有のネイティブコードに変換された後に実行される。Windows CEでは前述の4種類のCPU(x86、ARM、SHx、MIPS)をサポートしているが、このCLRによってCPU命令の違いを吸収しているため、CPUごとに実行モジュールを用意する必要がない。それに対してネイティブコードアプリケーションは、サポートするプロセッサごとに実行モジュールを用意する必要がある。

 またマネージドコードアプリケーションは、.NET Compact Frameworkで提供されるクラス群やCLRのガベージコレクションによるメモリリソース管理が利用できるという利点がある。ただし、利用できるのはNET Compact Frameworkが提供している機能のみであるため、例えばデバイス固有の処理など.NET Compact Frameworkでは提供されていない機能については、Plaform Invoke(P/Invoke)サービスなどを介してネイティブコードを呼び出して利用することになる。

eMbedded Visual C++の統合

 これまでのVisual StudioとVS2005との大きな違いとして、ツールの構成が挙げられる。

 「Visual Studio .NET 2003」(以下VS.NET2003)においては、Visual C#とVisual Basicが利用可能であった。Visual C#とVisual Basicでは、マネージドコードアプリケーションの開発が可能だ。Visual C++を利用する場合は、VS.NET2003とは別ツールとして用意されていた「eMbedded Visual C++」を使うことになる。ネイティブコードアプリケーションを開発できるのは、eMbedded Visual C++だけだった。

 VS2005では、このeMbedded Visual C++がVisual Studioに統合されたことにより、Visual C#、Visual Basic、Visual C++が利用可能となった。こうして、VS2005単体でマネージド/ネイティブコードアプリケーションが開発できるようになった。

 なお、マネージドコードアプリケーション開発では、.NET Compact Frameworkのバージョン1.0と2.0をサポートしている。デフォルトでSmartphone 2003、PocketPC 2003をサポートしているほか、いくつかの新しいコントロールが追加されている。

 ネイティブコードアプリケーション開発では、既存のeMbedded Visual C++(3.0/4.0)プロジェクトをVS2005のVisual C++プロジェクトに変換するウィザードが追加されている。VS2005のVisual C++ IDEのメニューで[ファイル]−[開く]−[プロジェクト/ソリューション]をクリックし、既存のeMbedded Visual C++プロジェクトを選択するとそれがVS2005ワークスペースに変換される。

関連リンク:
eMbedded Visual C++
http://www.microsoft.com/japan/msdn/vstudio/device/eVC/
What's New in Managed Device ProjectsのNew Controls and Components in Toolbox
http://msdn2.microsoft.com/en-us/library/se5b5fex

Mixed Mode Solutionsの実現

 VS.NET2003では、すでにWindows XPなどのアプリケーション開発においてはマネージドコードアプリケーションとネイティブコードアプリケーションのプロジェクトを1つのソリューション内で管理できた。それに対してWindows CEのアプリケーション開発では、前述したようにeMbedded Visual C++とVisual Studioが統合されていなかったため、1つのソリューション内でマネージドコードアプリケーションとネイティブコードアプリケーションのプロジェクトを管理することはできなかった。

 eMbedded Visual C++の統合でこの点も改善され、1つのソリューション内で両コードの管理(Mixed Mode Solutions)が可能となった。

画面2 マネージドコード/ネイティブコードの統合管理(画像をクリックすると拡大します)

VS2005の組み込み開発機能

エミュレータの使用と操作

 Visual Studioには、物理的なターゲットデバイスを用いず、開発マシン(PC)上のエミュレータでWindows CE用のアプリケーションを実行する機能がある。VS2005では、インストール時点でPocket PC 2003 SEとSmartphone 2003エミュレータが利用可能となっている。このほかにも、Platform BuilderでエクスポートしたSDKに格納されているエミュレータも利用可能である。

 また、Visual Studio IDEの[ツール]−[デバイス エミュレータ マネージャ]メニューで、「デバイス エミュレータ マネージャ」ダイアログボックスが表示される。このダイアログボックスでは、利用できるすべてのエミュレータの状態参照、エミュレータの起動、接続、リセットなどの操作が可能だ。

画面3 [デバイス エミュレータ マネージャ]ダイアログボックス

リモートデバッグとリモートツール

 Visual Studioでは、ターゲットデバイスをPCに接続し、PC上からリモートでデバッグを行うことができる。この、PCとターゲットデバイスの接続について補足する。

 VS.NET2003までは、イーサネットとシリアルポートが主な接続方法だった。これに対し、VS2005からはUSB、Wireless、IrDA、Bluetoothが利用できるようになった。接続方法はActiveSync、KITL、Platform Managerマニュアルサーバを利用する方法が考えられる。

 eMbedded Visual C++やPlatform Builderには、Windows CEデバイスに接続して、リモートでデバイスの状態を監視するツールが同梱されている。Visual Studioにも、VS2005から以下のツールが追加された。

ツール
概要
リモートファイルビューア ターゲットデバイスに格納されているファイルの一覧を参照できる。また、ファイルをターゲットデバイスからダウンロードしたり、PCからアップロードすることも可能
リモートヒープウォーカ ターゲットデバイスのヒープ状態を参照できる
リモートプロセスビューア ターゲットデバイス上で実行されているプロセスの情報を参照できる。また、起動しているスレッドについてもプロセスごとに参照できる
リモートレジストリエディタ ターゲットデバイス上のレジストリ操作ができる。また、ターゲットデバイスへレジストリ情報をアップロードしたり、ターゲットデバイス上のレジストリ情報を編集できる
リモートスパイ ターゲットデバイス上に表示されているウィンドウのメッセージやイベントの状態を監視できる
リモートズームイン ターゲットデバイスの画面出力をPCの画面上に表示できる
表1 VS2005のリモートツール

 これらのツールを利用して、PCからデバイス上のアプリケーションの動作確認やデバッグ作業が行える。

 前編では、VS2005の新機能や組み込み開発用の機能を紹介した。後編では、マネージドコードおよびネイティブコードアプリケーションそれぞれの開発の流れを多くのスクリーンショットとともに解説する。

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -