組み込みの世界とOS~RTOS
㈱スクラムソフトウェアで組込み開発のエンジニアをやっているうりうです。今回は、私の経験から、組込み開発でよく使われているOSであるRTOSについてお話いたしと思います。
組み込み開発とOS~RTOS
RTOSって何?
組み込みシステムは、自動車や家電製品、医療機器などに組み込まれたシステムのことを言い、私たちの日常生活に欠かせない存在です。ところで、一般的にパソコンでしばしば使われるOS(オペレーションシステム)はwindowsやmacOSで、スマートフォンではandoroidやiOSがよくつかわれていますが、組込み開発ではどのようなOSが使われるのでしょうか?
実は、組込み開発では、一般的なPCやスマートフォンで使われるOSではなく、組込み開発の世界で独自に進化した、「リアルタイムオペレーティングシステム(RTOS)」というOSがしばしば使われています。ちなみに、私を含め私の周りの人はRTOSを「アールトス」と呼んでいます。
RTOSの特徴:リアルタイム性と安全性って何?
このRTOSは特に、リアルタイム性や安全性が重要なシステムで好んで利用されています。ではリアルタイム性と安全性は何なのでしょうか?
例えば、電子レンジを思い浮かべてみてください。電子レンジの一時停止ボタンを押せば、電子レンジは、必ず停止しますよね。これがボタンを押して10秒後に一時停止するのであれば、機能として成り立ちません。ちょうどいい加減で熱カンを温めているのに、10秒もレンジで放っておかれたら、もお、中のお酒は熱々です。。。このように、家電・自動車・産業機械など、ボタンを押すなどのリクエストを行い、すぐに処理を実行しなければならないケースは、RTOSの特長であるリアルタイム性が必要になっています。
また、別の例で、自動車を思い浮かべてみましょう。現在の自動車はアクセル、ブレーキ、メーターなど、ほとんどの機構は電子制御となっています。この際、自動車のアクセルやブレーキなどは万に一つでも誤作動があれば、命に危険が及んでしまいます。このような絶対に誤作動を起こしてはならないような組込み開発のケースで、RTOSの特長である安全性が必要になっています。
このように、現在の家電・産業機器・精密機器の組込み開発でなくてはならないOS、「RTOS」について、本記事で詳しく解説していきます。
組み込み開発におけるRTOSの役割
組み込み開発においてRTOSは、リアルタイム性やタスクスケジューリング、メモリ管理などの重要な機能を提供してくれます。
RTOSは、ハードウェアとソフトウェアの間のインタフェースとして機能し、複数のタスクを同時に処理するための効率的な方法を提供します。
RTOSは信頼性や安全性を確保するための機能も備えており、万が一の誤作動も許されないような組込みシステムでの使用に適しているといわれています。具体的には、RTOSは自動車部品、ロケットや宇宙探索機、飛行機の制御システムなどの超精密機器や、エアコン・テレビ・電子レンジといった家電、工場の工作機器・操作端末などの産業機器などはばひろい分野で使われています。
宇宙空間の極限状態でもしばしばRTOSは利用されており、火星の探索機にRTOSが採用された話は有名ですね。
RTOSの特徴
RTOSの特徴をいくつか挙げてみましょう。
特徴1:タイムリミットの厳守
RTOSでは、タスクやイベントの処理を時間内に完了するようにプログラミングしなければいけません。そうでなければ、実際の機器に搭載されたリアルタイムシステムでは、処理が時間枠内に収まらない場合、システムが不安定になる可能性があります。そのため、リアルタイムシステムでは、実行される処理のデッドラインを厳密に守ることが必要です。
特徴2:タスクスケジューリング
RTOSは、タスクの実行をスケジューリングするためのスケジューラを持っています。スケジューラは、タスクの優先度、実行時間、イベントの優先順位などを考慮して、タスクを適切に実行します。これにより、リアルタイム性を確保しながら、システムリソースを効率的に利用できます。例えば、センサーデータの受信などのイベントに応じて、関連するタスクを即座に実行することが可能です。
特徴3:割り込み処理
ハードウェアや外部デバイスからの割り込みは、リアルタイムシステムにとって非常に重要です。RTOSは、割り込みを適切に処理し、イベントを発生させ、リアルタイムタスクとの連携を行います。
また、RTOSは、タスクに対して一定時間内に応答する機構(仕組み)を提供します。これにより、タスクの実行タイミングが重要なアプリケーションや組込みシステムの要件を満たすことができます。
また、RTOSは効率的なタスクスケジューリング機構を備えており、リソースの最適な利用が可能です。さらに、RTOSは優先度の設定や割り込み処理の管理など、高度な制御が可能な点も利点です。
組み込み開発におけるRTOSを使ったシステム設計
組み込み開発において適切なRTOSの選択とシステム設計は非常に重要です。
RTOSの選択
TOPPERS(トッパーズ)
TOPPERSは、Toyohashi Open Platform for Embedded Real-time Systemsの略であり、トッパーズと読みます。こちらはオープンソースとなります。
VxWorks(ブイエックスワークス)
VxWorksは、アメリカ合衆国 WindRiver社が開発したRTOSです。先述の火星探索機にも使用されているなど、頑健性に定評があります。
Azure RTOS
Azure RTOSはExpress Logic社が開発したThreadX(スレッドエックス)が前身であり、Microsoftが買収したことにより、名称を「Azure RTOS」としました。比較的規模の小さい機器に使用されている印象があります。
Amazon FreeRTOS
Amazon FreeRTOSは、2017年にAmazonが買収し、その後、MITライセンスで無償公開したRTOSです。
NORTi
NORTiはミスポが開発したリアルタイムOSです。
μITRON4.0仕様に準拠したカーネルとTCP/IPプロトコルスタックより構成されます。
RTOSと設計
組み込みシステムでは、ハードウェアとソフトウェアが連携し動作をするため、この両者の連動性を念頭に置き、設計する必要があます。例えばハードウェア制御を伴うプログラムが必要なため、ハードウェアに関する知識も必要になります。加えて、多くの場合、ハードウェアの開発を同時並行で進めることが多く、両者の開発スケジューリングの調整も重要になってきます。
また、RTOSで組込み開発を行う場合、システムの要件や性能、開発リソースの可用性などを考慮する必要があります。タスクの優先度やスケジューリングポリシー、メモリ管理の方法などを検討する必要があります。
まとめ
組み込み開発とRTOSは、リアルタイム性や安全性が求められる組み込みシステムの開発において重要な要素です。
RTOSは効率的なタスクスケジューリングやリソース管理を提供し、安定性と性能を確保する役割を果たしています。
組み込み開発においては、RTOSの選択と設計に十分な注意が必要ですが、技術の進化とともにさまざまな機能やツールが進化しています。
組み込み開発者は、これらの進化を活用しながら、より高度な組み込みシステムを開発することが期待されます。
ちなみに、当社では組込み開発を始め、様々なシステム開発の相談、設計、実装を全国対応で行なっています。無料相談も実施していますので、お気軽にご相談ください。