最新T-Kernelの活用テクニック(1) ―― 小規模システム向けμT-Kernelとは何か

由良 修二

tag: 組み込み

技術解説 2008年3月11日

● 動的ロードを前提としない

 T-Kernelでは,ミドルウェアやアプリケーションなどの上位のソフトウェアは動的なロードを前提としています.このため,OSとは別のロード・モジュールとして用意され,ソフトウェア割り込みを利用してOSとインターフェースします(図8)

zu08_01.gif
図8 ロード・モジュールの構成

 一方,μT-Kernelは,上位のソフトウェアの動的なロードを前提としていないため,OSとアプリケーションを静的にリンクして一つのロード・モジュールにすることが可能です.OSのインターフェースをT-Kernelのようなソフトウェア割り込みから,単純な関数呼び出しに変更することで,ソフトウェア割り込みのためのコードを省略,またソフトウェア割り込みのためのコードを省略できるだけでなく,ソフトウェア割り込みの処理にかかるオーバヘッドも軽減できます.さらに,ロード・モジュールをビルドするとき,実際にそのシステムで利用されるμT-Kernelの機能が確定するので,未使用の機能(関数や変数)についてはビルド時に省略できます.

 μT-Kernelでは未使用の変数や関数を自動的に削除する機能を追加することで,OSによる資源の利用量を最小限に抑えるようにしました.

 これに対してT-Kernelでは,OS側にすべての機能を実装しておく必要があり,ROMやRAMのサイズが大きくなってしまいます注4

注4;プログラムが動的にロードされるとした場合,あるプログラムにおいてどの機能が利用されるかは実行されるまで分からない.このため,OS側では仕様書にある全機能を用意しておく必要がある.

・コンフィギュレーション

 T-Kernelではカーネル・オブジェクト注5 の最大数などは別ロード・モジュールとして用意して起動時に動的に決定していましたが,μT-Kernelではこれらをマクロを利用した即値に変更しています.この変更により,起動時の処理の軽減と省資源を実現しています.また,デフォルトの最大オブジェクト数などのコンフィギュレーションについても大幅な見直しを行っています(表2)

注5;T-Kernelではカーネルが操作対象とする資源を「オブジェクト」と総称している.具体的にはタスクやセマフォなどをオブジェクトと呼んでいる(表2)

オブジェクト μT-Kernel T-Kernel
タスク 32 150
同期・通信 セマフォ イベント・フラグ メールボックス 16 16 8 100 100 20
拡張同期・通信 ミューテックス メッセージ・バッファ ランデブ・ポート 2 8 4 100 20 50
メモリ・プール管理 固定長メモリ・プール 可変長メモリ・プール 8 2 10 10
時間管理 周期ハンドラ アラーム・ハンドラ 4 8 20 40
サブシステム 4 50
デバイス 8 32
表2 デフォルトの最大オブジェクト数

 T-Kernelは大規模システムを前提としているため,デフォルトでは余裕をもった設定になっています.一方,μT-Kernelは小規模なシステムを前提としているため,デフォルト値そのものを見直しました.これにより各オブジェクトの管理領域を大幅に減らせました 注6

注6;T-Kernelでも当然同じ対応が可能.ただし,プログラムは動的なロードが前提となるので,あまりにもオブジェクト数を減らしすぎるとプログラムを正常に実行できなくなる場合があるので注意が必要.

 μT-Kernelでは,デフォルトの状態で小規模システムに合わせた調整を施してありますが,それでも開発用に多少余裕をもった設定にしてあります.このため,実際の開発時にはシステムに合わせて必要となるオブジェクト数を再度調整する必要があります.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日