最新T-Kernelの活用テクニック(1) ―― 小規模システム向けμT-Kernelとは何か
● 16ビットCPUにも対応した仕様の見直し
μT-Kernelでは一部の型について明確に32ビットの整数として定義し直しました.T-Kernelは32ビット以上のCPUを前提に仕様が決定されているため,効率を重視してint型を利用していることが多いのですが,μT-KernelではCPUのビット幅を限定していないので,より明確に仕様を定義しなければT-Kernelとの互換性がとれなくなる場合があります.
そこで,属性などT-Kernelとの互換性を確保しておかなければならない型についてはビット幅を明確に定義しました(リスト1).特に,TMOやRELTIMなどについては明確に32ビット幅にしておかないと,設定できる時間が著しく小さくなってしまうという問題が発生します.
リスト1 データ型の変更個所
(a)μT-Kernelにおけるデータ型の定義例
(b)T-Kernelにおけるデータ型の定義例
一方でイベント・フラグのビット・パターンやメッセージのサイズのようにアプリケーションによって任意に設定できる部分については効率を重視してint型のままにしてあります.その結果,int型が16ビットの処理系では,転送するメッセージのサイズの最大値などが約32Kバイトに制限されることになるので,注意が必要です(リスト2).このような個所についてはμT-Kernel仕様書に「移植ガイドライン」を記載して注意を促しています.
μT-Kernelでは,以上のような調整を行うことで,T-Kernelとの高い互換性を保ちながらも,OSが必要とするROMやRAMのサイズを極限まで抑えられるようにしました(図9,図10).
図9 ROM使用量(ARM7TDMIで計測)
一番左側がデフォルト設定のT-KernelのROM使用量を表している.中央がμT-Kernelをフルセットで動作するように設定した場合のROMの使用量である.μT-KernelはフルセットでもT-Kernelの60%程度しかROMを使用しないことが分かる.
ただし,通常はフルセットで利用されることはない.μT-Kernelでは,使用しないオブジェクトは自動的にリンクされない構成になっているので,実際のシステムではさらにROMの使用量が下がることになる.
一番右側はμT-Kernelにおいて非常に簡単なアプリケーションを実装した場合のROMの使用量である.一つのタスクでディジタルI/Oを制御するだけの単純なアプリケーションであれば,OSのROM使用量を12Kバイト程度にすることも可能.
図10 RAM使用量(ARM7TDMIで計測)
一番左側がデフォルト設定のT-KernelのRAM使用量を表している.中央がμT-Kernelをフルセットで動作するように設定した場合のRAMの使用量である.μT-Kernelはフルセットでも12.5KバイトしかRAMを使用しないことが分かる.ただし,通常はフルセットで利用されることはなく,実際のシステムではさらにRAMの使用量が下がることになる.
一番右側はμT-Kernelにおいて非常に簡単なアプリケーションを実装した場合のRAMの使用量である.一つのタスクでディジタルI/Oを制御するだけの単純なアプリケーションであれば,OSのRAM使用量を2.8Kバイト程度にすることも可能.
ここまで省資源化を進めれば,1チップ・マイコン内蔵のROMとRAMだけで,OSを搭載した状態でアプリケーション動作が可能です.小規模システムは物理的にも小規模で,コストも抑える必要があります.コストを下げるには部品数を減らすのが一番であり,それには1チップ・マイコンが非常に有効です.最近の1チップ・マイコンは100Kバイトを超える容量のフラッシュROMを搭載しているものも多く,μT-Kernelを利用すれば余裕をもってアプリケーションを実装できます.しかも,RAMの容量もだんだんと大きくなってきている上,GPIOやA-Dコンバータ,D-Aコンバータ,UART,USBなどのインターフェースまで内蔵されるようになってきています.これらを進めていけば,いずれは1チップ・マイコンだけで製品が作れるようになる可能性もあります.μT-Kernelはこのように小規模システムでも利用可能なOSなのです.