Windows Embedded Standard 7 の 使用によるアプリケーションの 開発 展開 デバッグ 目次 概要... 2 アプリケーション... 3 目的... 3 コードと環境... 3 Windows Embedded Standard 7 のイメージの準備... 6 HelloWorld アプリケーションを静的に分析... 6 1. 依存関係を解決します... 9 2. ターゲット機器の共有フォルダーを作成します... 10 3. Visual Studio デバッガをイメージに追加します... 11 4. IBW イメージを作成します... 12 展開... 13 デバッグ... 16 まとめ... 22 1
概要 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 のツールです 2
アプリケーション 目的 この文書では コンソールに Hello World を出力する簡単なコンソールベースの C++ アプリケーションを開発する方法を示します その後 そのアプリケーションを Windows Embedded Standard 7 のコンピューターに展開してデバッグする方法を説明します この簡単なアプリケーションの展開とデバッグに関する知識は より複雑なアプリケーションにも応用できます コードと環境 アプリケーションを作成するには Visual Studio を起動します [ ファイル ] / [File] メニューで [ 新規作成 ] / [New] をポイントし [ プロジェクト ] / [Project] をクリックします [Visual C++] をクリックしてプロジェクトの種類を選択してから [Win32 コンソールアプリケーション ] / [Win32 Console Application] をクリックします ( 図 1) 3
図 1 [ 名前 ] / [Name] ボックスに HelloWorld と入力し [OK] をクリックします [ 場所 ] / [Location] ボックスに C:\ と入力します Win32 アプリケーションウィザードで [ 完了 ] / [Finish] をクリックします すると 図 2 に示すようなプロジェクトが作成されます 4
図 2 図 2 に示すように printf( Hello World\n ) というコードを入力します 動的な依存関係ができないように アプリケーションを一部変更する必要があります まず ソリューションエクスプローラで HelloWorld プロジェクトを右クリックしてから [ プロパティ ] / [Properties] をクリックします [ 構成プロパティ ] / [Configuration Properties] を展開してから [C/C++] を展開します [ コード生成 ] / [Code Generation] をクリックします ランタイムライブラリをマルチスレッドデバッグ DLL (/MDd) からマルチスレッドデバッグ (/MTd) に変更します ( 図 3) 5
図 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 のようになります 6
図 4 空の応答ファイルを作成したので HelloWorld.exe バイナリを静的に分析します [Tools] メニューで [Analyze Static Dependencies] をクリックします Windows の [ ファイルを開く ] ダイアログボックスが表示されます [Files of type arrow] をクリックし [Executables and Libraries (*.dll, *.exe)] を選択します 7
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] をクリックします 8
1. 依存関係を解決します ICE で CTRL+F5 を押してイメージの依存関係をすべて解決します メッセージペインにエラーが 1 つ表示されます このエラーをダブルクリックすると [Resolve Dependencies] ダイアログボックスが表示されます ( 図 6) 図 6 図 6 に示すオプションを選択します 9
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) 図 8 10
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) 図 9 11
リモートデバッガをインストールするために必要な手順がもう 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) 12
図 11 展開 IBW を使用してイメージを作成する前に イメージが USB キーから起動できるように キーのプライマリパーティションがアクティブに設定されていることを確認します 図 12 に示すようにディスク管理ユーティリティを使用します [Start] をクリックして Computer Management と入力し ENTER を押します コンピューター管理ユーティリティが表示されます ( 図 12) USB パーティションを右クリックし [Mark Partition as Active] をクリックします 図 12 13
USB デバイスの起動が優先されるように機器の BIOS が設定されていることを確認しま す USB キーを機器に挿入して機器を再起動します IBW が表示されます ( 図 13) 図 13 14
ライセンスに同意します 既定のオプションを使用するか 必要に応じてオプションを変更します 選択内容は このあとの手順に関係ありません イメージが展開されたら 表示が図 14 のようになります 図 14 15
デバッグ イメージが展開されたので アプリケーションをリモートで展開することは簡単です まず Visual Studio で アプリケーションをローカルに出力しないで 作成した組み込みコンピューターに出力します Visual Studio の [ プロジェクト ] / [Project] メニューで [ プロパティ ] / [Properties] をクリックします [ プロジェクトのプロパティ ] / [Project Properties] ページが表示されます ( 図 15) 図 15 16
[ 構成プロパティ ] / [Configuration Properties] を展開してから [ 全般 ] / [General] をクリックします 既定の [ 出力ディレクトリ ] / [Output Directory] を ターゲットコンピューターの temp フォルダーに変更します たとえば コンピューターの名前が Foo の場合は \\Foo\temp\$(ConfigurationName) と入力します これを図 16 に示します 図 16 17
[ 構成プロパティ ] / [Configuration Properties] リストから [ デバッグ ] / [Debugging] をクリックします Visual Studio の既定のオプションではローカルデバッガが使用されます [ リモート Windows デバッガ ] / [Remote Windows Debugger] チェックボックスをオンにして リモートデバッガを使用することを選択します ( 図 17) 図 17 18
リモートコマンドに $(OutDir)\$(ProjectName).exe と入力します これで プログラムがリモートコンピューターで起動します [ リモートサーバー名 ] / [Remote Server Name] と [ 接続 ] / [Connection] の各オプションを ターゲットイメージに使用するコンピューター名と認証に変更します これは ドメインまたはワークグループの一部に接続しているかどうかによって異なります これを図 18 に示します 図 18 19
作業はほぼ完了です ターゲットコンピューターで リモートデバッグクライアントを実行します ターゲットコンピューターで [ スタート ] をクリックし [ プログラム ] [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 20
[ デバッグ ] / [Debug] メニューで [ デバッグ開始 ] / [Start Debugging] をクリックします これで ターゲットコンピューターでアプリケーションが起動します ターゲットの Windows Embedded Standard 7 コンピューターのリモートデバッグクライアントで 外部コンピューターが接続したという通知を受け取ります ( 図 21) 図 21 アプリケーションを実行すると 開発用コンピューターで設定したブレークポイントに達します ( 図 22) 図 22 21
まとめ この文書で説明した方法は 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 で開発 展開 デバッグできるアプリケーションに制限はありません 22