T-Kernelについて

T-Kernelとは、T-Engine上で動作するOSであり、ITRONを中心にシステム管理機能などを追加したような構成になっている。以下にその概要を、「T-Kernel標準ハンドブック」(T-Engineフォーラム編著 パーソナルメディア)を参考に紹介する。

【1】T-Engineの概要


1−1 背景


 ITRONは、「組み込みの世界にとにかくRTOSを普及させ開発効率を向上する」という使命のために、実装度合いやハードウェアに自由度を持たせた「弱い標準化」という方針を採ったため、組み込みの広い応用範囲で普及した反面、実装ごとの互換性が低く、ミドルウェアの流通が困難であった。近年の高度化した機器の、大規模化したアプリケーション(例:マルチメディア)開発効率化のために、ハードウェアに一定の制約を課し、デバイスドライバサポートを加え、APIも高度化させた「T-Engine」と呼ばれるプラットフォームが提唱された。

1−2 T-Engineの概要


 T-Engineは、システム規模に応じて4つの構成が規格化されている。
(1)標準T-Engine: 手のひらサイズのボード上に携帯情報機器などの高度なGUIを持たせた機器向けのプラットフォーム
(2)μT-Engine: 家電や計装装置など比較的ユーザー・インタフェースの簡易な機器
(3)nT-Engine: 照明機器やスイッチ、センサーなどユビキタス環境の最小単位となる機器に向けたプラットフォーム
(4)pT-Engine: ユビキタスIDチップなど、非能動的なもの
   μT-Engine、標準T-Engineでは32bit-CPUが必須とされ、さらに標準T-Engineでは、MMUの内蔵が必須とされ、仮想記憶をサポートする。

1−3 μITRONとの違い


・サブシステムの扱いが定義されている。これにより、サブシステムの追加削除や独自メモリ領域の管理などの手順が標準化され、ミドルウェア流通の基盤が整備された。
・デバイスドライバの扱いが定義され、標準デバイスドライバが規定された。これにより、デバイスに依存しない汎用性の高いプログラムが書きやすくなると同時に、デバイスドライバの再利用が可能になった。
・タスクなどのIDの自動割当が標準になった。これによりシステム環境に依存しない汎用性の高いプログラムが書きやすくなった。
・モニタ仕様が規定された(T-Monitor)。これにより、OS部を機種非依存にできると同時に、システム起動方法などシステムの基盤部分が標準化された。
・システムモニタ、デバッグインターフェースが標準化された。
・OS機能実装のポリシが明確化された。つまり、「実装はシステムにゆだねる」というμITRONのポリシから、「機能は全て実装しなければならない。ただし、システムの制約で実装が困難な場合は問題が起こらないように限定的に実装すること」と規定された。(例:MMUがないシステムのメモリ管理機能は、実装しないのではなく、何もせず、必ず正常終了するだけの関数として実装する)。
これにより、幅広いシステムで動作するソフトウェアの開発が可能になった。

【2】T-Engineシステムのアーキテクチャ


2−1 概要


 T-Engineのハードウェアの上に、モニタT-Monitor、RTOSのT-Kernel(デバイスドライバ含む)、アプリケーションインターフェースのT-Kernel Extensionが乗り、その上にアプリケーションやミドルウェアが載った形になっている。

2−2 T-Monitor


 T-Monitorは、スタートアップ、割り込みハンドラ、デバッグインターフェースの提供を荷い、T-KernelのブートもT-Monitorが行う。

2−3 T-Kernel


 T-Kernelは、ITRONの強化版のRTOSである。また、T-Kernel Extensionのマイクロカーネルとして動作する(ファイルシステムやネットワークプロトコルなどはT-Kernel Extensionが持つ)。 また、デバイスドライバを呼び出す機能を持つ。
μT-Engineの場合は、機能が限定されたT-Kernel Tiny Extensionが適用される。
 ミドルウェアを開発するときは、T-Kernel Extensionのシステムコールを用いる。強い標準化を行うことで、異機種間でミドルウェアのソースコード移植性を確保する。
 T-Kernelは大規模なシステムでも対応できるように規定されているので、小規模なシステムで不要な機能や実装が困難な機能は、「簡易な実装」が許されている。たとえばMMUを持たないCPUの場合、メモリ管理機能は、実装しないのではなく、「何もしないで戻ってくる」という実装が求められる。
 標準化を確実なものにするため、T-KernelのソースはT-Engineフォーラムで一元管理される。開発者がこれを入手して機能制限などの改変をすることは可能であるが、改変したソースを流通してはいけない。

【3】T-Kernel/OSの機能


3−1 デバイスドライバ


 T-Kernel標準デバイスドライバが規定されている。

3−2 アプリケーション


アプリケーションは、システムのどの階層で動くかによって3段階に規定されている。
(1)T-Kernel Extension上で動作するアプリケーション
 最上位のアプリケーションである。「プロセス」単位で動作し、T-Kernel Extensionが持つ、ファイルシステム、プロセス間通信などの機能を使用できる。
(2)T-Kernel上で動作するアプリケーション
 標準的な組み込みアプリケーション。
(3)T-Monitor上で動作するアプリケーション
 ハードウェアのテストやデバッグ用の小型で低レベルのアプリケーション

3−3 IDの動的割付


 T-kernelでは、ミドルウェアの流通プラットフォームとして機能するため、タスクIDなどのIDはT-kernelが動的生成し、アプリ中でその値をハンドルとして保持して資源にアクセスする。メモリプールやタスクのスタック領域も同様に動的に割り当てられる。

3−4 メモリ管理


 T-Kernelには、ITRONと異なりMMUをサポートするメモリ管理機能があり、PCのようなマルチベンダ、マルチタスク環境で安全にシステムを動作させるために、タスクごとのメモリの保護などの管理が可能になっている。
 MMUを使う場合は、T-Kernelのタスクは論理アドレス空間で動作する。メモリ領域は各タスクの固有空間と共通空間に別れ、他タスクの固有空間をアクセスすることはできない。
 MMUを使用しない場合は、タスク固有空間の指定は無視される(ので、すべて共通空間とみなされ、メモリ保護は働かないが、バグがなければプログラムは正常に動作する)。 T-Kernelは、仮想記憶をサポートする。メモリ領域を非常駐に指定すると、ディスクスワップされる。

3−5 タスク管理


 T-Kernelのタスク管理機能はμITRONと同等である。
 T-Kernelでは、タスク例外処理の機能が追加されている。これは、タスクの中断や再起動(HUP)などを行うため、アプリケーションにタスクの例外ハンドラを実装しそれを外部から呼ぶ機構である。

3−6 リソースグループ


 サブシステムで、リソースをグループ分けし、その所属などを管理するメモリブロック(リソース管理ブロック)を確保する。このブロックにより管理される資源のグループがリソースグループとなる。

【4】T-Kernel/SMの機能


 T-Kernel/SMは、メモリや割り込みなど機種依存のシステム管理を行うため、コードは実装ごとに異なる。
・システムメモリ管理
・アドレス空間管理
・デバイス管理
・割り込み管理
・IOポートアクセスサポート
・省電力機能
・システム構成情報管理機能
・サブシステムおよびデバイスドライバの起動

【5】T-Kernel/DSの機能


 T-Kernel/DSは、デバッガにカーネル内部情報などを開示してデバッグのサポートを行うインターフェースである。
・カーネル内部状態取得機能
 タスク、オブジェクトなどの状態取得
・実行とレース機能

【6】T-Monitorの機能


 T-Monitorは、システムのスタートアップを行い、T-Kernelをブートするローダとして機能する。また、シリアルポート経由のデバッグモニタとしても機能する。
・システム機能
 ハードウェア初期化、システム起動、割り込みハンドリング
・デバッグ機能
 デバッグモニタコマンドのサポート
・プログラムサポート機能
・ブート機能

【参考文献】


「T-Kernel標準ハンドブック」(T-Engineフォーラム編著 パーソナルメディア)