組み込みOS適材適所 《Windows Embedded CE編》 (3,最終回) ―― ITRONシステムと同じ動作をするかどうか無償ツールで確認する
2.システムの検証
移行前のμITRONシステムのシーケンス図を以下に再掲します(図3).このシーケンスのように,周期ハンドラに該当するスレッドが200ms(ミリ秒)ごとに起動し,シリアル通信スレッドが起動・実行されるかを確認します.
図3 シーケンス図
●移行アプリケーションを起動
さっそく移行したアプリケーションを起動します.ターゲット機器の画面で「Start」→「Programs」→「Command Prompt」を選択してください.コマンド・プロンプトが起動するので,作成したアプリ名(ここではMigrationTestApp)を入力し,[Enter]キーを押してください.
●アプリケーション・プロセスを確認
アプリケーションが起動したかどうかを,Windows Embedded CEに標準で付属するProcess Viewerで確認します.開発用パソコンのVisual Studio 2005の「Target」→「Remote Tools」→「Process Viewer」を選択してください.CE Deviceの選択画面が起動するので,「Default Device」を選択します.ターゲットから起動しているプロセス情報を収集し,一覧が表示されます.
Processのリストを確認すると,MigrationTestAppが存在しており,アプリケーションが起動していることが分かります(図4).また,Process Vieweを使用すると,そのプロセスで起動しているスレッドやロードしているDLL(Dynamic Link Library)が分かります.
図 4 プロセスの確認
●シーケンスを確認
スレッドの状態遷移やシーケンスを,Windows Embedded CEに標準で付属するKernel Trackerで確認します.開発用パソコンのVisual Studio 2005の「Target」→「Remote Tools」→「Kernel Tracker」を選択してください.CE Deviceの選択画面が起動するので,「Default Device」を選択します.図5のような画面が起動します.
この図のMigrationTestApp.exeのスレッドを見てみると,三つのスレッドが存在します.それぞれ,ITRONシステムの以下のタスクに対応しています.
- Thread ID 0x053E0002:メイン関数が実行されるメイン・タスク
- Thread ID 0x05420002:周期ハンドラ
- Thread ID 0x053F0002:シリアル通信タスク
図 5 Kernel Tracker外観
図6はチャート部を抜き出したものです.チャートの上部にタイム・スケールが表示されています.200msごとにIdle状態から周期ハンドラが起動していることが分かります.
図6 周期の確認
ツール・バーの「Zoom Range」を変更して,シーケンスの詳細を確認します.
周期ハンドラ・スレッドは,イベントをセットしたあと,Sleep状態になります.イベント待ちをしていたシリアル通信スレッドは,周期ハンドラ・スレッドのSleep後に起動します(図7の④).その後,通信処理を行い,再度周期ハンドラ・スレッドのイベント待ち状態になります.以降,このシーケンスが繰り返され,図3に示したITRONシステムのシーケンスが実現されていることが分かります.
図7 シーケンス図の詳細
これまでの3回の連載で,μITRONからWindows Embedded CEへのシステム移行手順を説明しました.第1回では,Windows Embedded CEというOSの概要,μITRONとWindows Embedded CEの概念などの違いを説明しました.第2回では,実際にITRONのシステムをWindows Embedded CEに移行する手順を,実機を使って解説・実践しました.そして,この第3回では,実際にWindows Embedded CEに移行したシステムが,元のITRONシステムと同じ動作をしているかを,無償で提供されているツールを使用して確認しました.ここで示した例はシリアル通信処理を行う単純なシステムの移行ですが,アプリケーション的なタスクであれば,ソースを流用して簡単にシステムを移行できることが理解していただけると思います.
本稿が,読者の皆さまの開発業務に少しでも役立てれば幸いです.
なかた・よしたか
安川情報システム(株) ソリューション技術本部 組込ソリューション事業部 新規推進部
http://www.ysknet.co.jp/