組み込みOS適材適所 《Windows Embedded CE編》(2) ―― μITRONシステムからWindows Embedded CEシステムへの移行手順

中田 佳孝

tag: 組み込み

技術解説 2009年11月 6日

2.マイグレーション実践

 ここからは,実際にITRONプラットホーム上に構築されたシステムを,CEプラットホームに移行してみます.まずITRONプラットホーム上に,FA機器や計測機器などで多用されるRS232-Cによるシリアル通信処理で,コマンドやデータを送受信する簡単なシステムを構築し,その後可能な限りソース・コードを流用してCEにシステム移行します.

1) ITRONプラットホーム・システムの解析(実践)

●使用するITRONプラットホーム

 ITRONプラットホームとして,筆者が所属している安川情報システムが提供しているD2P-1000を使用しますz(図3).D2P-1000は,外部インターフェースとしてRS-232CやDIO,LANを搭載しており,RS-232C⇔LANコンバータとして利用することができます.自由にアプリケーションを変更することができ,工作機械などの遠隔監視・遠隔制御などにも利用されています.

 なお,製品詳細は「Intesse D2CoreSeries:Intesse D2P-1000」をご覧ください.



図3 D2P-1000の外観図

 

●ITRONシステムの構成

 構築したシリアル通信システムの構成を図4に示します.このシステムでは,制御対象とシリアル経由でコマンドやデータを送受信し,取得したデータをデータ・バッファに保存します.

 なお,あらかじめD2P-1000にはシリアル通信ドライバが付属しており,アプリケーション・タスクからは独自APIを通じてシリアル通信できるように実装されています.




図4  ITRONプラットホーム・システムの例


●処理シーケンス

 以下,ITRONシステムのシーケンス図を簡単に示します.周期ハンドラが200[msec]毎に発行するイベントに合わせて,シリアル通信アプリケーション・タスクが起動します.起動後,シリアル通信でデータを送受信後,データを保存して休止状態に入ります.この処理を電源断されるまで繰り返します.






図5 シーケンス図


●使用するCEプラットホーム

 移行先のCEプラットホームのシステム例として,Spark Kitとして提供されている,ICOPテクノロジー社製「eBOX-4300」を題材とします.eBOX-4300は,オフィス環境などを想定して製作されており,さまざまな外部インターフェースを持っています.

  • シリアル(RS232-C)
  • Ethernet
  • USB端子
  • Speaker端子
  • Compact Flash用スロット

 なお,eBOX-4300 Spark Kitの詳細はICOPテクノロジー社のHPをご覧ください.



図6 eBOX-4300の外観図


2) 移行方法の検討(実践)

 移行方法のイメージを図7に示します.本題材のITRONプラットホームでは,ハードウェア・アクセス部としてシリアル通信ドライバがありますが,独自APIで区切られています.また,eBOX-4300のBSPとしてシリアルドライバが提供されていますので,I/Fの差異を埋める処理を実装するだけとなります(表2).

 また,200[msec]周期ハンドラとシリアル通信アプリケーション・タスクは,そのままソース・コードを流用します.




図7 題材システムの移行方法

 


表2 シリアル通信用独自APIの移行方法例

 


●ITRONシステム・コールの差異吸収処理

 前回の記事で解説しましたが,ITRONとCEでは実行コンテキストや同期処理の概念はほぼ同等です.ただし,システム・コール仕様は異なるため,その差異を埋める必要があります.例えばITRONのタスク生成処理であるcre_tsk関数が使用されていれば,CEへ移行する際にはスレッド生成処理に置き換えます.

 本題材では,できるだけ既存ソース・コードの変更量を抑えるため,ITRONシステム・コールと同じ名前の関数を定義し,その関数内で機能を実現するためのCEシステム・コール(Win32API)を実装するよう設計します(図7のITRONシステム・コール差異吸収処理).

 以下にcre_tskの実装コード例を示します.

#define MAX_TSKID                 (8)              // タスクID 上限
static HANDLE TSKID_HANDLE_SLOT[ MAX_TSKID ];
 
// タスク生成処理
ER_ID       cre_tsk(ID tskid,const T_CTSK* pk_ctsk)
{
                   ER_ID       errid          = E_OK;
                   HANDLE hHandle   = INVALID_HANDLE_VALUE;
                   int                                i = 0;
 
                   if( INVALID_HANDLE_VALUE != TSKID_HANDLE_SLOT[tskid-1] )
                   {
                                     // IDが空いてない
                                     return E_NOID;
                   }
 
                   // スレッド生成
                   hHandle = CreateThread(       NULL,
                                                                           pk_ctsk->stksz,
                                                                           (LPTHREAD_START_ROUTINE)(pk_ctsk->task),
                                                                           NULL,
                                                                           CREATE_SUSPENDED,
                                                                           NULL);
 
                   if(NULL == hHandle)
                   {
                                     // スレッド生成失敗
                                     return E_OBJ;
                   }
 
                   // スレッド優先度を変更
                   CeSetThreadPriority(hHandle, pk_ctsk->itskpri - 1 + 248);
 
                   // ハンドルを保存
                   TSKID_HANDLE_SLOT[tskid-1] = hHandle;
 
                   return errid;
}


3) CEプラットホーム・システムの構築(実践)

 ここからは,Visual Studio2005(以後,VS2005と表記)を用いて,

  • OSデザイン
  • アプリケーション作成

という手順で作業します.

●OSデザイン
 eBOX-4300用のBSPがインストールされた状態で,Visual Studio 2005を起動し,[ファイル]メニューからプロジェクトの新規作成を選択します.「新しいプロジェクト」ダイアログが開きますので,各項目を以下のように設定し,OKをクリックします.

プロジェクトの種類:Platform Builder for CE 6.0
テンプレート:OS Design
プロジェクト名:(任意)

 OSデザインのウィザードが起動しますので,ウィザードに沿って設定を行います.本題材では,ボード用のBSPを選択したほか,デザイン・テンプレートとして[PDAデバイス]の[エンタープライズ Webパッド]を選択してOSデザインを行っています.

●アプリケーションの作成(サブプロジェクトの作成)

 ITRONシステムのタスクを移行して動作させるための,アプリケーションを作成します.VS2005の[ファイル]メニュー ⇒ 追加 ⇒ New Subprojectを選択してください.「Windwos Embedded CE Subproject Wizard」ダイアログが開きますので,各項目を以下のように設定し,OKをクリックしてください.

サブプロジェクト名:(任意)
テンプレート:WCE Console ApplicationのA typical "Hello World" application

 ソリューション・エクスプローラ上のSubprojectツリーに,作成したプロジェクトが追加されています.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日