Windows Embedded Standard 7 の
使用によるアプリケーションの
開発、展開、デバッグ
目次
概要 ... 2 アプリケーション ... 3 目的 ... 3 コードと環境 ... 3Windows Embedded Standard 7 のイメージの準備 ... 6
HelloWorld アプリケーションを静的に分析 ... 6 1. 依存関係を解決します。 ... 9 2. ターゲット機器の共有フォルダーを作成します。... 10 3. Visual Studio デバッガをイメージに追加します。 ... 11 4. IBW イメージを作成します。 ... 12 展開 ... 13 デバッグ ... 16 まとめ ... 22
概要
Windows Embedded Standard 7 は、Windows Embedded Standard ポートフォリオにお ける次世代プラットフォームで、Windows 7 オペレーティング システムのパワー、使 いやすさ、信頼性を備えており、カスタマイズ可能なコンポーネント化された形で提供 します。この文書では、開発者が Windows Embedded Standard 7 のアプリケーション を開発する際、作業をどのように簡素化できるかについて説明します。
Windows Embedded Standard 7 のアプリケーションを開発する作業は、Windows 7 用 のアプリケーションを開発する作業とあまり変わりません。Windows 7 で開発するアプ リケーションのほとんどは Windows Embedded Standard 7 で展開できます。アプリ ケーションが正常に機能し、実行のために必要なすべてのコンポーネントにアクセスで きるようにするには、Windows Embedded Standard 7 のイメージ作成に関する考慮事項 があります。この文書では、このようなアプリケーションをゼロから開発し、ICE (Image Configuration Editor) ツール、IBW (Image Builder Wizard) ツールを使用して Windows Embedded Standard 7 に展開し、問題があった場合にアプリケーションを デバッグする方法について説明します。
こ の 文 書 で は 、 基 本 的 な 「 Hello World」アプ リケ ーションを作成 し、Windows Embedded Standard 7 イメージに展開する方法を説明します。必要なツールは、Visual Studio 2005 以降、および Windows Embedded Standard 7 のツールです。
アプリケーション
目的
この文書では、コンソールに「Hello World」を出力する簡単なコンソール ベースの C++ アプリケーションを開発する方法を示します。その後、そのアプリケーションを Windows Embedded Standard 7 のコンピューターに展開してデバッグする方法を説明し ます。この簡単なアプリケーションの展開とデバッグに関する知識は、より複雑なアプ リケーションにも応用できます。
コードと環境
アプリケーションを作成するには、Visual Studio を起動します。[ファイル] / [File] メニューで [新規作成] / [New] をポイントし、[プロジェクト] / [Project] をクリックします。 [Visual C++] をクリックしてプロジェクトの種類を選択してから、[Win32 コンソール アプリケーション] / [Win32 Console Application] をクリックします (図 1)。
図 1
[名前] / [Name] ボックスに「HelloWorld」と入力し、[OK] をクリックします。[場所] / [Location] ボックスに「C:\」と入力します。
Win32 アプリケーション ウィザードで [完了] / [Finish] をクリックします。すると、図 2
図 2
図 2 に示すように、「printf(“Hello World\n”)”」というコードを入力します。動的な依 存関係ができないように、アプリケーションを一部変更する必要があります。まず、ソ リューション エクスプローラで HelloWorld プロジェクトを右クリックしてから、[プロ パティ] / [Properties] をクリックします。[構成プロパティ] / [Configuration Properties] を展開してから、[C/C++] を展開します。[コード生成] / [Code Generation] をクリック します。ランタイム ライブラリをマルチスレッド デバッグ DLL (/MDd) からマルチス レッド デバッグ (/MTd) に変更します (図 3)。
図 3
ランタイム ライブラリを [マルチスレッド デバッグ] / [Multi-threaded Debug] に変更 すると、アプリケーションが完結し、追加 DLL の必要がなくなります。これでアプリ ケーションは完成です。CTRL+F5 を押してアプリケーションをテストします。コン ソール ウィンドウに「Hello World」と表示されます。
Windows Embedded Standard 7 のイメージの準備
アプリケーションが完成したので、このアプリケーションを展開するために必要なフッ トプリントが最小限になる Windows Embedded Standard 7 の OS イメージを作成するこ とが目標になります。イメージを作成するには、次の手順に従います。
“HelloWorld” アプリケーションを静的に分析
ICE (Image Configuration Editor) を起動するため、[スタート] をクリックし、[すべてのプロ グラム]、[Windows Embedded Standard 7] の順にポイントして、[Image Configuration
Editor] をクリックします。次に、[File] をポイントし、[Select Distribution Share] をクリッ
クして、32 ビットの配布共有を開きます。[File] メニューで [New Answer File] をクリック します。画面が、図 4 のようになります。
図 4
空の応答ファイルを作成したので、HelloWorld.exe バイナリを静的に分析します。
[Tools] メニューで [Analyze Static Dependencies] をクリックします。Windows の [ファ
イルを開く] ダイアログ ボックスが表示されます。[Files of type arrow] をクリックし、 [Executables and Libraries (*.dll, *.exe)] を選択します。
HelloWorld.exe ファイルを C:\HelloWorld\Debug フォルダーから探し、[開く] をクリッ クします。[Analyze Static Dependencies] ダイアログ ボックスが表示されます (図 5)。
図 5
必須パッケージはすでに応答ファイルにあります。
イメージを作成し、そのイメージ上でアプリケーションを実行する場合、通常は [Copy
Analyzed File(s) to a new $OEM Folders subfolder] チェック ボックスをオンにします。
現在のイメージの目標は、アプリケーションをデバッグすることなので、この手順は省 略します。アプリケーションを実際に展開する場合は、このオプションを選択します。 アプリケーションを検査し、デバッグしたら、この手順に戻り、バイナリがターゲット イメージに正しく展開されるように、このオプションを選択できます。[Copy Analyzed
File(s) to a new $OEM Folders subfolder] チェック ボックスをオフにし、[OK] をクリッ
1. 依存関係を解決します。
ICE で CTRL+F5 を押してイメージの依存関係をすべて解決します。メッセージ ペインに エラーが 1 つ表示されます。このエラーをダブルクリックすると、[Resolve Dependencies] ダイアログ ボックスが表示されます (図 6)。 図 6 図 6 に示すオプションを選択します。2. ターゲット機器の共有フォルダーを作成します。
アプリケーションをターゲット機器で実行できるようにするには、共有フォルダーを作 成 し ま す 。 [Insert] メニ ュ ー で [Synchronous Command] を ポ イン ト し 、[Pass 7
oobeSystem] をクリックします。[Create Synchronous Command] ダイアログ ボックス
が表示されます (図 7)。
図 7
[Enter a command line] に「mkdir c:\temp」と入力します。[OK] をクリックします。コ マンドが実行されると、アプリケーションの展開先フォルダーが作成されます。 プログラムをターゲット コンピューターに動的に展開するには、同期コマンドをもう 1 つ 追加します。[Insert] メニューで [Synchronous Command] をポイントし、[Pass 7
oobeSystem] をクリックします。net share temp=c:\temp /grant:EVERYONE,FULL コマン
ドを入力します (図 8)。
3. Visual Studio デバッガをイメージに追加します。
この演習の目標は、アプリケーションを実行することだけではなく、問題が発生した場 合に備えてリモート デバッグを設定することなので、Visual Studio デバッグ クライア ントをイメージにインストールする必要があります。リモート デバッグ クライアント は、Visual Studio 2005 以降のインストール メディアにあります。Visual Studio 2008 の インストール メディアでは、Remote Debugger\x86\rdbgsetup.exe にあります。この項 目 を 静 的 に 分 析 し 、 イ メ ー ジ に 追 加 し ま す 。 [Tools] メニューで [Analyze Static
Dependencies] をクリックします。
静的な分析を行うと、この項目には Windows Embedded Core パッケージ以外に必要な ものがないことがわかります。[Copy analyzed File(s) into $OEM$ Folder subfolder] チェック ボックスをオンにします。名前に「Debug」と入力し、[Add new subfolder path to OemFolderPaths] を選択します (図 9)。
リモート デバッガをインストールするために必要な手順がもう 1 つあります。[Insert] メニューで [Synchronous Command] をポイントし、[Pass 7 oobeSystem] をクリック します。[Enter a command line] に、「C:\rdbgsetup.exe」(リモート デバッガ セット アップ) と入力します。このコマンドで、イメージの最初の起動時にリモート デバッガ のセットアップが実行されます (図 10)。
図 10
4. IBW イメージを作成します。
応答ファイルを用意できたので、必要なパッケージだけの IBW イメージを作成できま す。コンピューターに USB キーを挿入します。ICE の [Tools] メニューで [Create Media] をポイントし、[Create IBW Image from Answerfile] をクリックします。[Create IBW Disk] ダイアログ ボックスが表示されます。USB キーのルート フォルダーを探します。 [OK] をクリックします。イメージの作成に必要なファイルが USB ドライブにコピーさ れます (図 11)。
図 11
展開
IBW を使用してイメージを作成する前に、イメージが USB キーから起動できるように、 キーのプライマリ パーティションがアクティブに設定されていることを確認します。 図 12 に示すようにディスク管理ユーティリティを使用します。[Start] をクリックして 「Computer Management」と入力し、ENTER を押します。コンピューター管理ユー ティリティが表示されます (図 12)。USB パーティションを右クリックし、[Mark Partition as Active] をクリックします。 図 12USB デバイスの起動が優先されるように機器の BIOS が設定されていることを確認しま す。USB キーを機器に挿入して機器を再起動します。IBW が表示されます (図 13)。
ライセンスに同意します。既定のオプションを使用するか、必要に応じてオプションを 変更します。選択内容は、このあとの手順に関係ありません。イメージが展開されたら、 表示が図 14 のようになります。
デバッグ
イメージが展開されたので、アプリケーションをリモートで展開することは簡単です。 まず Visual Studio で、アプリケーションをローカルに出力しないで、作成した組み込み コンピューターに出力します。Visual Studio の [プロジェクト] / [Project] メニューで [プロパティ] / [Properties] をクリックします。[プロジェクトのプロパティ] / [Project
Properties] ページが表示されます (図 15)。
[構成プロパティ] / [Configuration Properties] を展開してから、[全般] / [General] を クリックします。既定の [出力ディレクトリ] / [Output Directory] を、ターゲット コン ピューターの temp フォルダーに変更します。たとえば、コンピューターの名前が Foo の場合は、「\\Foo\temp\$(ConfigurationName)」と入力します。これを図 16 に示し ます。 図 16
[構成プロパティ] / [Configuration Properties] リストから [デバッグ] / [Debugging] をク リックします。Visual Studio の既定のオプションではローカル デバッガが使用されます。 [リモート Windows デバッガ] / [Remote Windows Debugger] チェック ボックスをオン にして、リモート デバッガを使用することを選択します (図 17)。
リモート コマンドに、「$(OutDir)\$(ProjectName).exe」と入力します。これで、プログ ラムがリモート コンピューターで起動します。[リモート サーバー名] / [Remote Server Name] と [接続] / [Connection] の各オプションを、ターゲット イメージに使用する コンピューター名と認証に変更します。これは、ドメインまたはワークグループの一部 に接続しているかどうかによって異なります。これを図 18 に示します。 図 18
作業はほぼ完了です。ターゲット コンピューターで、リモート デバッグ クライアント を実行します。ターゲット コンピューターで [スタート] をクリックし、[プログラム]、 [Microsoft Visual Studio 2008] の順にポイントします。[Visual Studio Tools] をポイント し、[Visual Studio 2008 リモート デバッガ] / [Visual Studio 2008 Remote Debugger] を クリックします。[Visual Studio リモート デバッグ モニタ] / [Visual Studio Remote
Debug Monitor] が表示されます (図 19)。 図 19 これで、アプリケーションを展開用コンピューターからターゲット コンピューターに 直接展開し、デバッグする準備ができました。C++ プロジェクトで、コンソールに 「Hello World」と表示される箇所にブレークポイントを設定します (図 20)。 図 20
[デバッグ] / [Debug] メニューで [デバッグ開始] / [Start Debugging] をクリックします。 これで、ターゲット コンピューターでアプリケーションが起動します。ターゲットの Windows Embedded Standard 7 コンピューターのリモート デバッグ クライアントで、 外部コンピューターが接続したという通知を受け取ります (図 21)。
図 21
アプリケーションを実行すると、開発用コンピューターで設定したブレークポイントに 達します (図 22)。
まとめ
この文書で説明した方法は、Visual C++ アプリケーションだけでなく、Windows 7 で作 成できるその他のアプリケーションすべてに応用できます。これには、ASP.NET ページ、 Windows フォーム アプリケーション、WPF (Windows Presentation Framework) アプリ ケーション、Silverlight アプリケーション、WCF (Windows Communication Framework) サービスなどが含まれます。また、ここでは詳細を省きますが、Windows 7 で実行でき るサード パーティやオープン ソースのテクノロジも Windows Embedded Standard 7 で 実行できます。正しい依存関係がターゲット イメージに与えられるため、Windows Embedded Standard 7 で開発、展開、デバッグできるアプリケーションに制限はありま せん。