エッジコンピューティングの逆襲 特集
連載
» 2022年04月06日 10時00分 公開

デバッガベンダーの商用RTOS「embOS」は古いスタイルが故に安心して使える?リアルタイムOS列伝(21)(2/3 ページ)

[大原雄介,MONOist]

商用RTOSらしくかなり古めのプラットフォームもサポート

 embOSで最新となるVersion 5のシリーズでサポートされているのは以下のプラットフォームである。

  • Cortex-M+GCC/Cortex-M+SEGGAR Embedded Studio/Cortex-M+IAR
  • Cortex-M+SEGGAR Embedded Studio
  • Cortex-M+IAR
  • 8051+IAR
  • Arm+MetaWare
  • Arm64+GCC
  • Arm 7/9/11/XScale/Cortex-A/Cortex-R+IAR
  • Arm 7/9/11/XScale/Cortex-A/R and Rowley compiler
  • CR16C+IAR
  • TI MSP430/MSP430x+IAR
  • Altera NIOS II+GNU
  • Renesas RH850+IAR
  • Renesas RX+IAR
  • RISC-V+SEGGAR Embedded Studio
  • Freescale S12Z/S12lisa
  • Simulation for Windows+MinGW
  • Simulation for Windows+Visual StudioAV

 これらより古くてもよければ「Atmel AVR/AVR32」「Infineon C16x」「Freescale HCS12/Coldfire/PowerPC」「Arm Cortex-A8」「富士通F2MC-16シリーズ/FR30/FR50/FR70」「Renesas H8/M16C/NC308/SHシリーズ/V850シリーズ」「Microchip PIC18/PIC24/PIC32」「STMicro ST7/STM8」など、もうあまり使われなくなったラインアップも引き続きサポート対象になっているあたりは、さすがに商用RTOSらしい(あと、アーキテクチャ+コンパイラ、という組み合わせでサポート対象リストができているのも興味深い)。

 さて肝心のembOSはどんなものか? である。最初のリリースが1992年で、その後も順調にバージョンアップを積み重ねてきたが、互換性を重要視しており、それもあってモノリシックカーネル構成になっている。もっとも、RTOSらしくモジュラ構造になっており、本当に最小構成だと30バイトのRAM(+スタック用の領域)と1KBのROMで起動するから、マイクロカーネル構成になっていないことが別に不利というわけでもない。

 カーネルは完全プリエンプティブ構成で、スケジューリングはプライオリティベース(同一プライオリティだとラウンドロビン)という順当な構成である。ただ以前は、プライオリティが最大255レベルと普通だったのが、最新のVersion 5だと最大42億9496万7296レベルに拡張されている。要するに、以前はプライオリティが8ビットで保持していたのが32ビットに拡張されたという話だが、さすがにここまでのプライオリティが必要なのか、ちょっと悩むところだ。時間解像度は任意に選べるが、デフォルトは1msである。ただこれも、embOS-Ultraだとμsやns、サイクル数レベルでの指定も可能になっている。

 処理そのものはタスクベースでの管理である。一応このためにTCB(Task Control Block)もあるが、実装そのものはスレッドである。このため、embOSにおいてタスク=スレッドとされている。当然ながら複数タスク(=スレッド)の実行が可能である。また、マルチプロセッサの対応も可能だが、この場合それぞれのプロセッサごとに別々のembOSが実行され、プロセッサ間の同期を取るためのスピンロック機構も用意されている。逆に言うと、1つのembOSで扱えるプロセッサは1つに限られる(もっとも、この方がRTOSを使う側としては扱いやすそうだが)。

 タスク間の通信/同期の手法としては、Event Object/Mutex/Semaphore/Reader-Writer Lock/Mailbox/Queueといった、一般的な機能は一通り用意されている。特筆すべきものとしては、当初からの省電力モードの実装と、アーキテクチャをまたいでのアプリケーションの移植などがやりやすくなっていることが挙げられるだろう。例えば、ArmのCortex-Mでオプションで提供されるNVIC(Nested Vectored Interrupt Controller)をそのまま利用することも可能だが、それとは別にembOS独自のInterrupt stackを利用することも可能となっている。

Copyright © ITmedia, Inc. All Rights Reserved.