組み込みOS適材適所 《Windows Embedded CE編》(2) ―― μITRONシステムからWindows Embedded CEシステムへの移行手順
1) メイン関数の変更
作成したサブプロジェクトと同じ名前のcppファイルがSource filesツリーの下に表示されていますので,ダブル・クリックしてソース・ファイルを開きます.
int _tmain(int argc, TCHAR *argv[], TCHAR *envp[]) { _tprintf(_T("Hello World!\n")); Return 0; } |
リスト内にある_tmain関数がアプリケーション起動時に最初に呼ばれる関数です.
CEのアプリケーションを作成する際ですが,文字コードは通常UNICODEが使用されるので,注意が必要です.文字を格納する変数には,char型ではなくTCHAR型やWCHAR型が使用されますが,この型はunsigned shortで定義されているため,2バイトです.
ここでは,_tprintfの行を削除し,ITRONシステムのメイン関数での処理を移植していきます.
なお,_tprintfという関数はprintf関数のUNICODE版です.
2) ITRONシステム・コール差異吸収処理の実装
本題材では,以下のITRONシステム・コールを使用しています.Win32API関数を使用して,それぞれのシステム・コールと同じ動作をする処理を作成します.
- acre_tsk(タスク自動生成)
- sta_tsk(タスクの起動)
- dly_tsk(タスクの休止)
- acre_cyc(周期ハンドラの生成)
- sta_cyc(周期ハンドラの起動)
- acre_flg(イベントフラグの生成)
- set_flg(イベントの発行)
- wai_flg(イベント発行待ち処理)
- clr_flg(イベントのクリア)
3) タスク処理の移植
周期ハンドラ及びシリアル通信アプリケーション・タスクを移植します.本題材では,ソース・コードをそのまま流用します.そのため,システム・コールだけでなく,ITRONで定義されている変数の型や列挙型(enum)なども移植します.
ただし,ITRON準拠OSの実装は各OSベンダに依存します.稀に変数の型などが,本来のITRONの仕様から変更されていることがありますので,注意します(例えば,システムの制約上,2バイト変数の型が1バイトで定義されている等).
タスク処理の移植が完了したら、[ビルド]メニューからソリューションのビルドを選択し,OSイメージを作成します.以上で移行作業は完了です.
* * *
次回は,ターゲット上で動作させたOSイメージの検証を行います.
なかた・よしたか
安川情報システム(株) ソリューション技術本部 組込ソリューション事業部 新規推進部
http://www.ysknet.co.jp/