Windows版iTRONサービスコールの作成
(機能紹介)

概要

組み込みソフトウェアで利用されているOS「iTRON」のサービスコールをWindows上で動作させるためのライブラリです。

iTRONのサービスコールをWindowsのAPIを利用してシュミレートしています。

iTRONのVer3.0とVer4.0のサービスコールに対応しました。

一応それらしい動作はするように作ったつもりですが、仕様とは違う動作をするかもしれません。

「最終的には実機で確認するし、机上デバッグでは、それなりに動作すれば十分」という方はご利用してみてください。

利用条件

  • 本ソフトウェアを利用して発生した、いかなる損害も、作者および、その関係団体は責任を負いません。
  • 作者および、その関係団体は、本ソフトウェアに対する不具合の改修および、機能改善のためのバージョンアップの義務を負いません。
  • 作者および、その関係団体は、本ソフトウェアに対する、いかなるサポートの義務を負いません。
  • 本ソフトウェアの一部または全部を再配布するときは、事前に作者の許可が必要です。

主な機能

iTRONで提供されるサービスコールには以下のような機能があります。

機能説明
タスク管理機能

タスクの生成・削除を管理します。

タスク付属同期機能

タスクを直接操作してスリープ・起床を管理します。

タスク例外処理機能

タスクの例外処理の実行を管理します。(本ライブラリではサポートしません。)

同期・通信機能

セマフォの管理を行います。

同期・通信機能

イベントフラグの管理を行います。

同期・通信機能

メールボックスの管理を行います。

同期・通信機能

データキューの管理を行います。

拡張同期・通信機能

ミューテックスの管理を行います。

拡張同期・通信機能

メッセージバッファの管理を行います。

拡張同期・通信機能

ランデブ・ポートの管理を行います。

メモリプール管理機能

固定長メモリプールの管理を行います。

メモリプール管理機能

可変長メモリプールの管理を行います。

時間管理機能

システム時刻の管理を行います。

時間管理機能

周期起動ハンドラの呼び出しを行います。

時間管理機能

アラーム・ハンドラの呼び出しを行います。

時間管理機能

オーバーラン・ハンドラの管理を行います。(本ライブラリではサポートしません。)

割込み管理機能

割込みハンドラの呼び出しを行います。

システム管理機能

システム状態の参照・変更を行います。

サービスコール管理機能

拡張サービスコールの管理を行います。(本ライブラリではサポートしません。)

Ver3.0とVer4.0のコンパイルについて

本ライブラリではデフォルトでVer4.0としてコンパイルするようになっています。

Ver3.0で利用する場合、コンパイルスイッチに __ITRON3__ を指定してください。

または、『wi_config.h』でコメントアウトしている「#define __ITRON3__」を有効にしてください。


    #define     __ITRON3__                  //!< Ver3.0
    #ifndef     __ITRON3__
    #ifndef     __ITRON4__
    #define     __ITRON4__                  //!< Ver4.0
    #endif  //  __ITRON4__
    #endif  //  __ITRON3__
	

本ライブラリで生成するスレッドについて

本ライブラリでは『タスク管理機能』でターゲット・プログラムから生成されるスレッドとは別に、以下のスレッドを生成しています。

  • 割り込みハンドラを呼び出すためのスレッド。
  • 周期起動ハンドラおよびアラームハンドラを呼び出すためのタイマ用スレッド。
  • サービスコール内で実行できない処理を実行する為のシステム管理スレッド。

本ライブラリを使用するアプリケーションは、Windows上の他のアプリケーションの動作を極力妨げないように、プロセスの実行レベルを通常のアプリケーションより下げています。

本ライブラリ全体の排他制御について

本ライブラリではマルチスレッドによるサービスコール内部情報の不整合を防ぐ為にWindowsのミューテックス機能を利用して排他制御を行っています。

排他制御を簡単に行う為に、基本的に全てのサービスコールの呼び出し時にミューテックスをロックし、サービスコールの実行完了時にアンロックを行います。

サービスコールによっては、タスクの実行順序が実機での実行順序と違う場合がありますので注意してください。

ユーザプログラムの起動について

本ライブラリでは、ユーザープログラムを起動するために、iTRONのタスクを優先度『1』で生成して、そのタスクから以下のユーザープログラムを呼び出しています。



    void startup_target( void )
	


ご利用になられる方は、ご自分で作られた起動処理の関数名を上記の形式に合わせるか、ライブラリ側の呼び出しをご自分の関数に合わせるように変更するかしてください。



商標に関する表示