MCUとDSPのデュアルモードに対応した先進的RTOS「RTXC Quadros」の末路リアルタイムOS列伝(44)(2/3 ページ)

» 2024年03月04日 07時00分 公開
[大原雄介MONOist]

省フットプリントのカーネルと多機能なマルチタスクカーネルで構成

 RTXCは、当初はMCU向けのRTOSだったようだが、途中からこのDSPの扱いが増えてきた結果として、複数のカーネルを用意し、これを組み合わせる格好で構成されている。具体的には、RTXC/ssと呼ぶ省フットプリントのカーネルと、RTXC/msと呼ばれる多機能なマルチタスクカーネルおよび両者を組み合わせたRTXC/dm(Dual-mode)があり、DSPコアにはRTXC/ssを、MCUコアにはRTCX/msをそれぞれ割り当てるという形でConverged Processorをカバーしていた(図2)。

図2 図2 RTXC/ssはSingle Task/Multi-Thread、RTXC/msはMulti Taskのカーネルで、この2つが同期を取りつつも別々に稼働するというちょっと珍しい仕組み[クリックで拡大] 出所:Quadros System

 RTXC/ssの機能は以下のようになかなか割り切った構成になっている。

  • Multi-Threadであり、Priority制御ないしRound RobinによるSchedule管理が可能
  • Thread Priorityは固定。また同一Priority Levelの場合Context Save/Restoreの機能がなし
  • 異なるPriority LevelのThreadに関してはPreemptive Schedulingが行われる
  • Kernel ObjectはThread/Pipe/Event Source/Counter/Alarm/Exceptionの6つが、Staticで提供される(つまり動的な生成/削除はできない)
  • Single Stack(全ての動作が1つのStackで実装される)

 一方のRTXC/msは、以下のように多機能となっている。

  • Multi-Task/Multi-Thread。StackはTaskごとに1つ
  • SchedulingはPreemptive/Round RobinとTime-Slicedの3種類
  • Kernel ObjectはTask/Semaphore/FIFO Queue/Mailboxes&Messages/Memory Partitions/Mutex/Pipe/Event Source/Counter/Alarm/Execeptionの11種類。StaticとDynamicの両方に対応
  • Task/Thread間の同期/通信メカニズムとしてSemaphore/Mailbox/Queue/Pipeを提供

 当然RTXC/msのメモリおよびコードフットプリントはRTXC/ssよりも大きくなっている。

 ちなみに図2でZoneとあるのはPriority Level別の分類であり、Zone 1がHighest Priority、Zone 3がNormal Priorityで、Interrupt APIとカーネル、APIが他より高いPriorityに設定されているのはまぁ当然ではある。

 面白いのは、RTXC/msでアプリケーションはZone 3で動いているのに対し、RTXC/ssではZone 2で動いているところだろうか。ただ、これら2つのカーネルは、それぞれMCUコアとDSPコアで動いているから、RTXC/ssのTaskというかThreadがZone 2で動いているからといって、RTXC/msのZone 3で動くTaskの邪魔をするわけではないから問題はないのだが。

 ということで話をRTXC Quadrosに戻す。RTXC Quadrosも、この従来のRTXCの構造を引き継いでおり、RTXC/ss、RTXC/ms、RTXC/dmが利用できるようになっている。その意味ではネイティブでデュアルコア対応と言えなくもない。昨今で言えばワイヤレス搭載MCUなどがしばしば、アプリケーションプロセッサにCortex-M4やM7(最近だったらM33やM85などか?)とは別に、ワイヤレス制御用にCortex-M0+などを搭載する場合があり、これらはこのRTXC/dmで割とそのまま扱いやすいと思うのだが、もともとRTCX自身が8ビットのMCUから32ビットのMCU/MPUまで幅広く対応しており、特にMPUではマルチコア対応も増えてきた。そこでRTXC/msのInstanceを連携して利用できるようにするRTXC/mp(multi-processor)が用意された他、米PolyCore Softwareが提供する「Poly-Platform」と組み合わせることで、例えばLinuxやWindowsなどの汎用OSと共存する構成も可能になったとしている。

 他にIP v4/v6スタックSecurity Protocolへの対応Network Server機能図3)、USB Host/Device/OTGFile Systemなどが用意されている。開発環境としては、もともとRTXCgenと呼ばれるKernel/Application Generatorがあったが、DebuggerTrace/Profilerも加わっている。

図3 図3 といってもWebサーバやWebDAV/LUAなどだが。SQLiteは直接外部にサービスを提供するわけではなさそう[クリックで拡大] 出所:Quadros System

Copyright © ITmedia, Inc. All Rights Reserved.