組み込み制御はリアルタイムOSで
組み込みの開発効率向上を目指した「T-Kernel」
標準化の範囲を必要最小限とし、実装や適応化の自由度を多く残す、というITRONの方針は、「弱い標準化」と呼ばれています。ITRONが「弱い標準化」の方針を採ったのは、OSの標準化によるオーバーヘッドを最小限としたかったからですが、このことが原因で、ITRONを使うプログラム同士であっても互換性が十分ではなく、ソフトウエアの再利用にあたってはかなりの移植作業を要する場合がありました。
21世紀になると、組み込み機器といえどもソフトウエアの高機能化や複雑化が進み、ソフトウエア開発効率のさらなる向上が大きな課題となりました。ファイル・システムやTCP/IPなどの機能を持つ組み込み機器が増え、これらの機能を実現するプログラムも大規模なものとなってきました。そうなると、組み込み機器メーカーの社内だけですべてのソフトウエアを開発することはできず、他社が開発した既存のミドルウエアを組み込んで使用するケースが増えてきます。
こうした作業をスムーズに行うためには、リアルタイムOSの基本機能の仕様だけではなく、デバイス・ドライバ、ミドルウエア、開発環境、ライブラリなどの周辺環境にも互換性が必要になります。すなわち、ITRONの「弱い標準化」の方針ではなく、「強い標準化」が必要になります。
こういった背景から、ITRONに対して機能強化と標準化の範囲の拡大を行い、「強い標準化」を実現した新しいリアルタイムOSの仕様が「T-Kernel」です。
リアルタイムOSの基本機能に関して言えば、T-KernelとITRONではほぼ同様のAPI*1を持っており、ITRONからT-Kernelへの移行は容易です。一方、T-Kernelにはシステムマネージャの機能(T-Kernel/SM)やサブシステム管理機能が追加されています。これらの機能は、ミドルウエアやデバイス・ドライバといったシステム・プログラムの互換性や移植性を高めるために有用な機能です。
*1: T-KernelとITRONのAPIは、ほぼ同等の機能を持ちますが、詳細なAPIの一部は異なっています。この差異を吸収する開発ツールとして「I-right/TK」があり、これを使うと、ITRON上で動いていたプログラムがそのままT-Kernel上でも実行できます。
また、T-Kernelで追加されたミドルウエア向けの機能を実際に生かす形で、ファイル管理やプロセス管理、 仮想記憶などの機能を実現する基本ミドルウエアが開発されました。このミドルウエアは「T-Kernel Extension」と呼ばれ、T-Kernelと一緒に利用することができます。
T-Kernelは、単体で使った場合には制御用のリアルタイムOSですが、T-KernelにT-Kernel Extensionを組み合わせると、ほぼLinuxのカーネルに相当する機能を実現できます。T-Kernelには、小規模な制御系のシステムから高度で大規模な情報処理系のシステムまで対応可能なスケーラビリティが備わっています。
T-KernelとT-Kernel Extensionを用いた組み込み機器のソフトウエア構成を、図3に示します。
図3: T-KernelとT-Kernel Extensionを用いた組み込み機器のソフトウエア構成(クリックで拡大) |
T-Kernelと周辺環境の仕様は、半導体メーカーやソフトウエア・ベンダー、組み込み機器メーカーを中心に国内外約300社で構成する「T-Engineフォーラム」によって標準化されています。また、T-KernelやT-Kernel Extensionは、仕様書*2だけでなく、プログラム(実装)もオープンソースで提供されており、誰でも無償で製品に組み込んで利用することができます。T-Kernelは、業務用端末やカーナビ、プリンタなど、すでに多くの機器に採用されています。
*2: T-Kernelの仕様書はT-EngineフォーラムのWebサイトからダウンロードできます。また、T-Kernel用のデバイス・ドライバの仕様書や、T-Kernel Extensionなどミドルウエアの仕様書も、T-EngineフォーラムのWebサイトで公開しています。
T-Kernel用タスクトレーサ
T-Kernel用の便利な開発ツールの1つとして、「タスクトレーサ」があります。タスクトレーサは、T-Kernel上で動作する複数のタスクの遷移や、各タスクが実行したAPI(システム・コール)の発行時刻、引数、戻値などのログを記録し、これらの情報をグラフ化して開発ホスト上の画面に表示します。
組み込み機器の制御用プログラムは、多数のタスクや割り込みハンドラが高速で切り替わりながら動作しており、その動きは極めて複雑です。また、外部機器との入出力やほかの処理のタイミングに依存して動作するものが多く、一部のプログラムを止めるとシステム全体の動作が狂ってしまいます。
このため、組み込み機器の動作を解析するには、システム全体をできるだけ通常通りに動かしたまま、その中のタスクなどの動作を記録していく必要があります。タスクトレーサは、このような目的で利用することを想定した開発ツールであり、T-Kernelの持つ実行トレース機能を利用して、タスクの動作に関するログを収集します。タスクトレーサが表示するグラフや情報によって、組み込み機器の内部の動作解析、デバッグ、チューニングなどを効率よく進めることができます。
タスクトレーサは、Teamacaron*3などのT-Kernel応用製品の上で動作するオプション・ソフトとして提供しています。T-Kernel/x86評価キット*3の場合、仮想化ソフトによる開発環境とタスクトレーサを組み合わせて利用することも可能です。
*3: TeamacaronおよびT-Kernel/x86評価キットについては、連載の第3回で紹介します。
図4: タスクトレーサの実行例(クリックで拡大) |
画像認識用アプリケーションの実行タスクの遷移をグラフで表示しています。tid:47(CAMR)がカメラ入力タスク、tid:48(SCRN)が画面表示タスク、tid:49(RCGN)が画像認識タスクです。 |