検索
連載

次世代TRONの「T-Engine」が死しても今なお息づく「μT-Kernel」と「μITRON」リアルタイムOS列伝(59)(2/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第59回は、次世代のTRONプロジェクトで開発された「T-Engine」とカーネルの「T-Kernel」「μT-Kernel」、そしてITRONの派生型RTOSを紹介する。

Share
Tweet
LINE
Hatena

強い標準化を目指すがゆえに増大したメモリフットプリント

 実際に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/OS:タスク制御、タスク間同期通信、メモリ管理、例外/割り込み制御、時間管理、サブシステム管理
  • T-Kernel/SM:システムメモリ管理、アドレス空間管理、デバイス管理、割り込み管理、I/Oポートアクセスサポート、省電力、システム構成情報管理
  • T-Kernel/DS:カーネルの内部状態の参照、実行のトレース

 これらを見れば分かる通り、開発が終わったら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)方式のスケジューリングが行われる仕組みである。

T-Kernelは64ビットCPUに対応したものの開発中止に

 この後、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.

ページトップに戻る