ITRONについて

μITRONとは

TRON(The Real-time Operating system Nucleus)は1984年に産業界と大学との協力のもとで、新しいコンピュータの体系を目指してスタートしたプロジェクトです。

その中にはいくつかのサブプロジェクトがあり、ITRON(Industrial TRON)は、組込みシステム用のリアルタイムOS仕様とその関連仕様に位置付けられています。

当初μITRONは8~16bitMPUを用いた小規模の組込みシステム向けにいわゆる"弱い標準化"の方針で作成されてきましたが、ハードウェアの進歩とソフトウェア移植性の向上を目的として何回か見直しが行われ、64bitMPUも対象とした第4世代に位置付けられるμITRON 4.0が1999年に公開されました。なお3.0と4.0の間は約6年間あり、その間にCPU性能が向上したので3.0時点では性能に影響があるため見送られた項目や標準化が組込まれました。

これらの仕様策定には国内のほとんどの半導体メーカが参加している関係で、ITRON仕様のOSは4.0仕様以前を含めれば、これら半導体メーカから発売されている組込み系のCPU製品にはTRON OSが開発され、使用されています。

ITRON対応のOS

現在4.0仕様に対応したITRONは現在OSメーカから提供され、それぞれ数種類のチップに対応しています。 

また、フリーソフトウェアのITRON4.0対応のOSとして、豊橋技術科学大学の高田先生を中心として組込みリアルタイム研究室が開発したTOPPERSがあります。これは現在モトローラ68040、日立のSH1,SH3,日本電気のV850などに対応していますし、ソース自体が環境依存部の部分を明確に分けた構造になっていますので、他のCPUにも対応することも可能です。またLinuxやWindows上で仮想的に動作するシミュレーションモードも用意され、μITRON 4.0を使ってみようと思っている方には最適です。

ITRONはこの様に企業や学校が作成した複数の種類が存在しています。それぞれで作成されたITRONには、その使用目的や使われるCPUの特徴や生かす目的や性能を上げるため、仕様で認められている実装依存の部分を独自に拡張していることもあります。

μITRON動作概要

ITRON 4.0仕様の詳細はPDFファイルで公開されダウンロードできますし、TRON協会から本としても出版されています。(TRON協会のホームページ)

このITRON OSは組込み系の処理に使われることが前提になっているので、一般のパソコンなどで使われる環境よりも小規模で限られたメモリ空間や、より低速なCPUでも動作することが可能です。ITRON 4.0仕様で作成されたカーネル自身の大きさは数10Kバイト程度の大きさでも実現でき、リアルタイム処理を実現する機能がサービスコールで用意されています。実機にロードされるロードモジュールはライブラリで用意されたサービスコールをリンクする形式なので、使用しないサービスコールはリンクされません。使い方により、さらに小さくなりますので、CPUに内臓の限られたROMだけでシステムを構築する時などサイズは重要なファクタになります。

ITRON 4.0仕様では全部で166のサービスコールと20の静的APIが規定されていますが、それらの中で標準的に使われる機能セットをスタンダードプロファイルと呼んでいます。スタンダードプロファイルとして規定されているのは71のサービスコールと12の静的APIで、μITRON 4.0仕様に対応と呼ばれるOSには、通常このスタンダードプロファイルの機能が実装されています。ただそれ以外に自動車のエンジン制御などでカーネルのオーバーヘッドとメモリ使用の削減を目的とした、スタンダードプロファイルのサブセットと追加機能が定義された自動車用プロファイルと呼ばれる機能セットがあります。この関係は図のようになります。

静的APIとは、ITRON OSを使ってシステムを生成する時に必要となるタスクの生成や、割込みハンドラの登録、各種の初期化ルーチンの登録などの初期情報を記述するための形式を規定したものです。この記述はCの関数とほぼ同様の書き方で行ないますが、処理プログラムの記述とは別のコンフィギュレーションファイル(通常はsystem.cfg)と呼ばれるファイルに記述し、システムを構築するときにITRON OSに付属するコンフィギュレータから参照されます。

静的APIとサービスコールの名前は”XXX_YYY“で命名され、XXXは操作の方法,、YYYは操作の対象を現し、静的APIは大文字でサービスコールは小文字で付けられています。操作の方法と、対象の一部を下記の表に示します。

方法 XXX 英語
生成 cre create
追加 att attach
削除 del delete
起動 act activate
送信 snd send
対象 YYY 英語
タスク tsk task
セマフォ sem semaphore
割込み int interrupt

例えば、CRE_TSKはタスクの生成で静的APIを表しています。割込み処理の中で使用するサービスコールには先頭に”i”のプリフィックスを付けるサービスコールもあります。