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. info@elmic.co.jp 横 浜 本 社 〒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
© Copyright 2024 Paperzz