ELX-ITRON 製品紹介

ELX-ITRON
製品紹介
本書は、弊社が開発・販売している ELX-ITRON の特徴について説明するものです。
1.ELX-ITRON とは .................................................................................................................................2
2.特徴 ........................................................................................................................................................2
2.1 カーネル情報の保護...................................................................................................................2
2.2 割込み応答性..............................................................................................................................2
2.3 システムコールのパラメータチェック.....................................................................................2
2.4 カーネル機能の自動組入れ........................................................................................................2
2.5 メモリプールのメモリブロック検索.........................................................................................2
3.メンテナンス機能..................................................................................................................................3
3.1 CCT ............................................................................................................................................3
3.2 ユーティリティタスク...............................................................................................................4
3.3 警告ルーチン..............................................................................................................................7
3.4 メッセージ出力レベル...............................................................................................................7
4.ELX-ITRON シリーズ..........................................................................................................................7
4.1 ELX-neo .....................................................................................................................................7
4.2 Hyper ITRON............................................................................................................................7
TRON は The Real-time Operating system Nucleus の略称です。
ITRON は Industrial TRON の略称です。また、μITRON は、Micro Industrial TRON の略称です。
TRON および ITRON は特定の商品ないしは商品群を指す名称ではありません。
その他の本文中の会社名および製品名は各社の商標または登録商標です。
エルミック・ウェスコム株式会社
2006 年 1 月版
Copyright ©1999-2006 Elmic Wescom, Inc.
1.ELX-ITRON とは
ELX-ITRON は、μITRON3.0 仕様のレベル S に準拠し、機能拡張しているものです。
ELX-ITRON に搭載している拡張機能を示します。
・ ミューテックス:排他制御を行う際に、セマフォでは厳密な排他制御を行うことが困難なために
追加しています。
・ 入出力ドライバ:タスク処理とハードウェア制御処理を分離することで、タスクの移植性を向上
させ、ハードウェア処理プログラムの流用を可能とします。ITRON における
従来の処理も可能です。
また、ELX-ITRON の独自機能を以下に示します。
・ タイマ要求:μITRON 仕様では、タイムイベントハンドラを設けることになっていますが、プロ
グラムで必要な時に要求できるインターバルタイマ要求形式にしています。
2.特徴
2.1 カーネル情報の保護
タスクの誤動作からカーネルを保護するために、カーネルの管理情報をできるだけタスクが通常時アクセス
できる空間とは分離しています。例えば、メモリプールのメモリブロック管理情報、メイルボックスのメッ
セージ情報などがこれにあたります。タスクの誤動作により管理情報が破壊されると、カーネルが誤動作し
てしまい、原因の追求に時間がかかってしまうためです。
2.2 割込み応答性
ELX-ITRON のカーネル処理中でも割込みは許可状態で行っています。このため、割込み応答性を向上させ
ています。割込み禁止区間は、スケジューリング処理と割込み処理程度です。
2.3 システムコールのパラメータチェック
システムコールにはパラメータがあり、その正当性をチェックする必要があります。パラメータには、一度
チェックすれば以降はチェック不要なものもあります。
ELX-ITRON では、パラメータをチェックする関数とシステムコール処理を行う関数とが別になっています。
タスクの条件コンパイルにより、呼び出す関数を切り替えることができるため、静的なパラメータが正常と
判断した後は、チェックなしとすることで、約 10%程度のオーバヘッド及びメモリの削減を行うことができ
ます。このパラメータチェックは、タスクごとに行う/行わない(正確にはソースのコンパイル単位)を指
定できます。
2.4 カーネル機能の自動組入れ
ELX-ITRON では、システムコール関数内でカーネル処理を行うようにしています。
ELX-ITRON では、タスク用システムコールが 100 以上、タスク独立部用システムコールが 30 以上ありま
す。システムコール関数個々が OBJ としてライブラリに登録されているため、システムで利用したシステ
ムコール(カーネル処理)だけがリンカにより組入れられます。このことにより、カーネルの機能を削減し
てメモリを小さくするような条件設定等は不要になります。
2.5 メモリプールのメモリブロック検索
ELX-ITRON では、固定長/可変長メモリプールのメモリブロック個々を管理することができます。このこ
とにより、メモリプール中の空きメモリブロックが無くなったような場合に、メモリブロックを獲得したま
まになっているタスク(及びメイルボックスなど)を特定することができます。また、タスクが休止状態に
なるような場合、そのタスクが獲得していたメモリブロックを自動的に元のメモリプールに返却するように
しています。メモリブロックの獲得の情報については、後述のユーティリティタスクで出力します。
ELX-ITRON 独自のものとして、メモリブロックのアドレスを指定するだけで、固定長/可変長メモリプー
ルの指定や ID 番号の指定もなく、自動的に元のメモリプールに返却するシステムコールがあります。
ELX-ITRON 製品紹介
2
3.メンテナンス機能
3.1 CCT
ELX-ITRON には、メンテナンスのために特殊なタスクを提供しています。このタスクはシリアル端末での
コマンド入力により起動することができます。Windows などのターミナルソフトと使い、ターゲットとパソ
コンをシリアルで接続することで容易に利用できます。
コマンドにより、タスクの状態やメモリの状態などを参照することができるので、デッドロックなどの現象
を把握することができます。また、タスクの起動/停止を行うことができますので、ユーザが作成したタス
クの起動や停止などを行うことができます。コマンドの例を以下に示します。
コマンド
動作
SHOW コマンド
各種オブジェクトの状態を参照します。
RUN コマンド
指定タスク ID 番号のタスクを起動します。
ABORT コマンド
指定タスク ID 番号のタスクを休止します。
SUSPEND コマンド
指定タスク ID 番号のタスクを中断状態にします。
RESUME コマンド
指定タスク ID 番号の中断状態を解除します。
●タスク一覧の参照
ID No. | Status | Name
---------+------------+------------------------4 | Ready
| CCT
1 | Dormant | TASK00
2 | Dormant | TASK01
3 | Dormant | TASK02
4 | Dormant
5 | Dormant
6 | Dormant
10 | Dormant
| TASK03
| TASK04
| TASK05
| Logging Display
●指定タスクの詳細情報の参照
ID No. =
1 , Name = TASK00
TCB Adr = 0C00E274H
Status
= Dormant
Wup_count= 0
Priority
= 4 / 4 / 4
Slice
= 100 / 100
Clock
= 00000667H
<――ID番号とタスク名
<――TCBアドレス
<――タスクの状態
<――起床ネスト・カウント
<――タスク優先度(現在/ベース/初期)
<――タイムスライス(残り/初期)
<――タスク動作時間(単位 msec)
●固定長メモリプールの一覧の参照
ID No. | Count | Name
---------+---------+------------------------------4 | 16/ 16 | CCT Pool
1 | 10/ 10 | TEST Memory Pool
Count は、空きブロック数/初期ブロック数で表示しています。
ELX-ITRON 製品紹介
3
●メイルボックスの一覧の参照
ID No. | Count | Name
---------+-- -------+------------------------------4 | 0/ 16 | CCT Queue
1 | 0/ 16 | TEST Queue
Count は、登録数/最大登録数で表示しています。
3.2 ユーティリティタスク
ユーザのデバッグを支援するための各種ユーティリティタスクを提供しています。
ユーティリティタスクは、基本的に CCT から起動します。
(1)スタックチェックタスク
タスクが使用したスタック量の情報を表示するタスクです。
本タスクを起動すると、メッセージとして以下のような情報を表示します。
ID=xxxx , Base=xxxxxxxxH , Current=xxxxxxxxH , Used=xxxxxxxxH (dddddd/dddddd )
①
②
③
④
⑤
⑥
①:タスクの ID 番号
②:タスクのスタック領域のベースアドレス
③:現在のスタックポインタのアドレス
④:最大使用したアドレス
⑤:最大使用したバイト数
⑥:スタック領域として指定されたバイト数
(2)システム負荷タスク
ELX-ITRON におけるシステムの CPU 負荷率を簡易的にターミナルに表示するタスクです。このタスクは、
一定周期にタスクが動作している時間を参照し、それを負荷率としてターミナルに表示します。
本タスクを CCT から起動することにより、1秒ごとにターミナルに以下のように表示します。
■■■■■■■■■□□□□□□□□□□□
■■■■■■■■■□□□□□□□□□□□
■■■■■■■■■■■■■□□□□□□□
■■■■■■■■■□□□□□□□□□□□
■■■■■■■■□□□□□□□□□□□□
■■■■■■■■■■■□□□□□□□□□
■■■■■■■■■■■■□□□□□□□□
■■■■■■■■■□□□□□□□□□□□
1マスを5%としています。
■はタスクなどのプログラムが動作している割合で、□はアイドルの状態の割合です。
ELX-ITRON 製品紹介
4
(3)メモリブロック所有者チェックタスク
メモリプールのメモリブロックを所有しているオブジェクトの情報を表示します。
●固定長メモリプール情報
固定長メモリプールにある各メモリブロックの所有者の情報を表示します。
POOL ID No. pid ( cbcnt / ibcnt ) : xxxxxxxx
BLK No. |
ADDR
| KIND | OWNER
----------+------------+--------+------------------------------bid | AAAAAAAAH | KKKKK | oid : nnnnnnnn
bid | AAAAAAAAH | KKKKK | oid : nnnnnnnn
pid
cbcnt
ibcnt
xxxxxxxx
bid
AAAAAAAA
KKKKK
oid
nnnnnnnn
:固定長メモリプール ID 番号
:現在のメモリブロック数(負数時は待ちタスクが存在)
:登録時のメモリブロック数
:固定長メモリプール名称
:ブロック ID 番号
:ブロックアドレス(16 進表示)
:所有者種別
POOL: 自プールが所有しています
TASK: タスクが所有しています
QUEUE: メイルボックスが所有しています
DRIVER: タスク独立部が所有しています
: 所有者 ID 番号
所有者種別が POOL,DRIVER 時は表示されません
: 所有者登録名
所有者種別が POOL,DRIVER 時は表示されません
名称が登録されていない場合は表示されません
●可変長メモリプール情報
可変長メモリプール中のメモリブロックの所有者情報を表示します。
可変長メモリプールの所有者情報は、使用されているメモリブロックについてのみ表示します。
VPOOL ID No. pid ( ssssssssH ) : xxxxxxxx
ADDR | SIZE | KIND | OWNER
------------+--------+--------+---------------AAAAAAAAH | zzzzzH | KKKKK | oid : nnnnnnnn
AAAAAAAAH | zzzzzH | KKKKK | oid : nnnnnnnn
pid
ssssssss
xxxxxxxx
AAAAAAAA
KKKKK
oid
nnnnnnnn
ELX-ITRON 製品紹介
: 可変長メモリプール ID 番号
: 可変長メモリプールの全体サイズ
: 可変長メモリプール名称
: ブロックアドレス(16 進表示)
: 所有者種別
TASK : タスクが所有しています
QUEUE : メイルボックスが所有しています
DRIVER
: タスク独立部が所有しています
: 所有者 ID 番号
所有者種別が DRIVER 時は表示されません
: 所有者登録名
所有者種別が DRIVER 時は表示されません
名称が登録されていない場合は表示されません
5
●タスク情報
タスクが所有しているメモリブロックの情報を表示します。
TASK ID No. tid : nnnnnnnn
POOL ID No. | ADDR
| SIZE | POOL NAME
-------------+-----------+--------+----------------------pid
M | AAAAAAAAH | sssssH | pppppppp
pid
M | AAAAAAAAH | sssssH | pppppppp
tid
nnnnnnnn
pid
M
AAAAAAAA
sssss
pppppppp
:タスク ID 番号
:タスク名
タスク名が指定されていない場合は表示されません
:所有メモリブロックのメモリプール ID 番号
:固定長/可変長メモリプール種別
F:固定長メモリプール
V:可変長メモリプール
:所有メモリブロックのアドレス(16 進表示)
:メモリブロックのサイズ(16 進表示)
:所有メモリブロックのメモリプール登録名
名称が登録されていない場合は表示されません
●メイルボックス情報
メイルボックスに登録されているメモリブロックの情報を表示します。
Mail-Box ID No. qid (cbcnt) : nnnnnnnn
POOL ID No. | ADDR
| SIZE | POOL NAME
-------------+-----------+--------+----------------------pid
M | AAAAAAAAH | sssssH | pppppppp
pid
M | AAAAAAAAH | sssssH | pppppppp
qid
cbcnt
nnnnnnnn
pid
M
AAAAAAAA
sssss
pppppppp
ELX-ITRON 製品紹介
:メイルボックス ID 番号
:メッセージ数(負数時は待ちタスクが存在)
:メイルボックス名
メイルボックス名が指定されていない場合は表示されません。
:所有メモリブロックのメモリプール ID 番号
:固定長/可変長メモリプール種別
F:固定長メモリプール
V:可変長メモリプール
:所有メモリブロックアドレス(16 進表示)
:メモリブロックのサイズ(16 進表示)
:所有メモリブロックのメモリプール登録名
名称が登録されていない場合は表示されません。
6
3.3 警告ルーチン
ELX-ITRON の最新バージョンでは、ELX-ITRON のカーネルがシステムの動作が不安定の状態になると判
断した場合に警告ルーチンが呼び出されます。
この警告ルーチンは何も処理を行わない空関数ですが、ICE でブレークポイントを設定したり、デバッグメ
ッセージを出力したりするようにすることで、不安定な状態もしくは注意すべき状態になったことを把握す
ることができます。
警告ルーチンは、事象ごとに別になっています。警告ルーチンが呼び出される代表的な事象を以下に示しま
す。
・
・
・
・
固定長メモリプールに空きメモリブロックが無くなり、更にメモリブロックの獲得要求があった。
可変長メモリプールに要求サイズのメモリブロックを確保できなくなった。
メッセージが登録されているメイルボックスが削除された。
全てのメモリブロックが返却されていない状態の固定長/可変長メモリプールが削除された。
3.4 メッセージ出力レベル
タスクにて出力するデバッグ用のメッセージをシリアルに出力する際に出力レベルを設定することができま
す。ユーティリティタスクで設定する出力レベル以上のメッセージをターミナルに出力します。設定する出
力レベルより低いレベルのメッセージはターミナルに出力されません。
例えば、ある事象が発生した以降のデバッグメッセージをターミナルに出力したいというような場合に、該
当事象が発生した際に CCT からユーティリティタスクにて出力レベルを設定します。このようにすること
で、出力するメッセージを抑制/抑制解除することができます。
出力レベルの設定は、タスクをリコンパイルせずに、ランタイムを行うことができます。
4.ELX-ITRON シリーズ
ELX-ITRON シリーズについて紹介します。
4.1 ELX-neo
(ソフ
システムの機能ごとにグループ化し、そのグループごとの ID 番号を管理する仕組みを持っています。
トウェアグループ管理:特許審査請求中)
このことにより、
グループ内のオブジェクトは他のグループからの不正なアクセスから保護されます。
また、
ID 番号がグループ単位で行えますので、ID 番号の割付けが容易になります。この仕組みにより、ソフトウ
ェアの部品化が容易に行うことができるようになります。
4.2 Hyper ITRON
メモリ保護を追加したカーネルです。
ELX-neo と同様に、システムの機能ごとにグループ化し、そのグループ単位でメモリ保護を実現します。
仮想メモリアドレスと物理メモリアドレスとは1対1対応としているので、アドレス変換のためのオーバヘ
ッドがありません。また、グループ単位で ID 番号管理を行いますので、オブジェクトの保護を行うことが
できます。
可変長メモリプール機能およびカーネルオブジェクトの動的生成機能、警告ルーチンについては、
ELX-ITRON の最新バージョンにて追加した機能です。メッセージ出力レベル機能については、従来の
バージョンでもユーティリティタスクを登録することで利用することが可能です。
各種 CPU の対応モジュールを順次リリースする予定です。
2006年1月
ELX-ITRON 製品紹介
7
エルミック・ウェスコム株式会社
http://www.elwsc.co.jp
●製品に関するお問い合わせ先: フリーダイヤル. 0120-045-690
E-mail. [email protected]
横 浜 本 社 〒231-0011 横浜市中区太田町6-84-2 三井生命横浜桜木町ビル 3F
TEL 045-664-5171 FAX 045-650-1021
大 阪 本 社 〒556-0017 大阪市浪速区湊町1-4-38 近鉄新難波ビル 11F
TEL 06-4396-8430 FAX 06-4396-8431
名古屋営業所 〒460-0003 名古屋市中区錦1-5-32 錦KTビル 3F
TEL 052-232-8390 FAX 052-232-8380
ELX-ITRON 製品紹介
8