実際にT-Engineで想定されているCPUのメモリは、外付けで32M〜128MB、後述するμT-Engineでは8KB+1M〜32MBまでがラインアップされている。T-Kernelは、T-Kernel/OS(Operating System)とT-Kernel/SM(System Manager)、T-Kernel/DS(Debugger Support)の3つから構成され、狭義のカーネルはT-Kernel/OSを指す。これらが持つ機能は以下の通りである。
これらを見れば分かる通り、開発が終わったらT-Kernel/DSは外せるかもしれないが、最低でもT-Kernel/OSとT-Kernel/SMは残ることになる。もうこの時点で結構なメモリフットプリントになることは明白で、実際にはこれにデバイスドライバやミドルウェア、通信プロトコルスタックなどが載った上でアプリケーションが動くので、そういう意味では軽量系のRTOSとは一線を画したものになる。
これは、強い標準化を目指すRTOSではやむを得ない制約なのだが、ただ実際には最小でもメモリ容量が32MBという要件は、自身の開発する機器には向いていないという声は当然出てくる。そこで、T-Kernelをベースとしつつ、よりメモリフットプリントの少ない派生型を開発することになった。これが後追いで出てくるμT-Kernelである。
μT-Kernelは、T-KernelをベースとしつつもMMU(メモリ管理ユニット)を搭載しないような小規模なCPU(当初は32ビットのみだったが16ビットも視野に入れており、後にサポートされている)をターゲットに、メモリフットプリントが少なくなるように工夫されたもので、2006年にリリースされた。T-Kernelとの最大の違いはライセンスにある。T-Kernelではコードの同一性を保つため、ソースはT-Engineフォーラムによって管理されており、改変したT-Kernelのコードを流通させることはできない(改変そのものは可能だが、改変したものはオブジェクトコードのみ流通可能)。
これに対し、μT-Kernelはソースコードの単一性は担保されない(T-Engineフォーラムからはレファレンスコードが提供される)。これにより、個々のCPUに合わせた最適化がしやすくなる。ただし、APIなどのインタフェースはT-Kernelと同一仕様としつつ、小規模なシステムでは利用しないような機能を省くことで、サポートするAPIの数はかなり少なくなっている。それでもAPIの仕様は完全に同一にしているので、T-Kernel上で動くアプリケーション(とそのサブセット)をμT-Kernelに移植する、あるいはその逆を行うことは容易になっている。なお、μT-Kernelはソースの改変が自由ではあるが、その改変したコードがレファレンスコードと同一の振る舞いをするもののみをμT-Kernel仕様のOSとして認めることで、自由な改変には一定の歯止めをかけている。
ちなみに、T-KernelもμT-Kernelもプリエンプティブなカーネル構造を持つマルチタスクRTOSである。基本はタスクの優先度に応じ、同一優先度同士だとFCFS(First Come First Serve)方式のスケジューリングが行われる仕組みである。
この後、2種類のカーネルは少し異なった方向に進んでいく。
T-Kernelは2011年にVersion 2.0がリリースされる。このVersion 2.0では64ビットCPUへの対応が図られた。ただしこの64ビットCPU、事実上は、NECがMIPS R5000を用いて開発したVR5000シリーズをベースとする製品くらいしか対応していなかった気がする(実際にT-Kernelをサポートする64ビットCPUはVR5500のみである)のだが、一応こうしたものでも64ビットモードで動作するように内部の64ビット化や高精度時間管理、デバイス管理機能の64ビット対応などの変更が行われている。
また、機能強化版としてマルチプロセッサ/マルチコアに対応したMP T-Kernelの他、拡張機能としてT2EX(T-Kernel 2.0 Extension:ネットワーク通信やファイル管理、標準C互換ライブラリ、カレンダ、プログラムロード機能、メモリ保護機能などを追加)が提供されている。T-Kernel 3.0は最終的に開発が中止になった(パーソナルメディアが自社でPMC T-Kernel 3.0という製品をリリースしているが、これは同社独自の名前であって、T-Kernel 3.0の仕様があるわけではない)。
Copyright © ITmedia, Inc. All Rights Reserved.