IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第1回は、リアルタイムOSのここ最近10年の動向について概説する。
リアルタイムOS(RTOS)は、組み込み向けシステムにおいて、既に欠くことができない重要なコンポーネントになっている、と言うと「えー」という声も聞こえそうだが、事実そういうポジションにある。
RTOSとは何か、という話は3年ほど前にもTechFactoryで一度書かせていただいているが、要するに組み込み向けに最適化した(特にリアルタイム応答性能を重視した)軽量なOSである。
先述の記事では、以下の7つの特徴をご紹介した。
おおむね、これが現在も当てはまると考えていただいて問題ない。
では何で「えー」という声が出るかと言えば、組み込み向けシステムと呼ばれるものの範囲が極端に広いためだ。端的に言えば、8/16ビットMCUでRTOSを利用するケースは非常にまれである。というのは、特に昨今の動向で言えば、8/16ビットMCUはハイパフォーマンス向けというよりは、省ピン/省パッケージを目的とする用途に広く使われており、当然ニーズとしても、非コネクテッドデバイス向けである。
それこそ低価格の(間違ってもBluetoothでどっかとつながったりしない)白色家電のコンソールとか、単にBLDCモータとかLEDドライバとかを制御するだけ(「どう制御するか」は上位のシステムから落ちてくる)、あるいはセンサーの値を読み取ってI2CなりSPIなりのインタフェースに吐き出すだけ(その先は上位システム任せ)などといった用途に現状も広く使われており、今後もこうした用途に広く使われ続けると思われる。ただこうした用途であれば、別にRTOSの必要性はなく、直接ベアメタルでコードを書けば済む。現在こうしたシステムに携わっている方からすれば、間違いなく「えー」だろう。
逆にその上位に当たるシステム以上だと、何らかのOSがないと非常に困難である。最近はいろいろなものがネットワークでつながるのが当たり前になってきており、ということはネットワークスタックをきちんと実装する必要がある。しかも昨今はセキュリティ対策が必須となっている。どこまでセキュリティを実装するかについては、当然コストとのトレードオフになるわけだが、ある程度完全に実装しようとすると、通信の暗号化は元より、実行のセキュア化(Armで言えば「TrustZone」の利用)とか、暗号鍵/証明書をセキュアストレージに格納するとか、セキュアブートの実装、さらにはリリース後のファームウェアのOTA(On th Air)アップデートなどの要件も出てくる。
これらを全てベアメタルで実装するのはあまりに効率が悪すぎる。さらに言うと、こうした上位システムは処理性能が高い分、要求される処理が多くなる。単に処理負荷が増すというだけでなく、マルチタスク処理(通信などその最たる例で、データの送受信中は他の処理が止まりますという実装は普通許されない)の要求もある。これをベアメタルで実装するとなると、ISR(割り込みハンドラ)の中で長大なディスパッチロジックを作り、そこに処理を埋めてゆくといった見通しの悪い実装になりがちである。
こうなると、実装コストがかかるだけでなくメンテナンス性も悪化する。特に、元の開発者からメンテナーにコード管理が渡った後でメンテナンスが必要になったとき、これが問題になりやすい。先にもちょっと書いたが、昨今ではファームウェアのOTAアップデートが必要になることが多い。開発当時は知られていなかった脆弱性が発見されたとか、新種の攻撃手法が開発されたとか、もちろん出荷後に不具合が露呈したなんてケースもあるだろうが、逆に言えば開発が終わってもまだコードのメンテナンスが必要になる頻度は間違いなく高まっている。しかも、その際のメンテナーはもともとの開発者で無い可能性が高い。
そういった状況では、十分に最適化されたベアメタル実装と比較すると多少リソース(フラッシュ/SRAM容量とかCPU能力とか)に無駄は出るにしても、RTOSを採用することでその無駄を打ち消して余るだけのメリットがある、と考えられるようになってきた。
Copyright © ITmedia, Inc. All Rights Reserved.