RTXCは、当初はMCU向けのRTOSだったようだが、途中からこのDSPの扱いが増えてきた結果として、複数のカーネルを用意し、これを組み合わせる格好で構成されている。具体的には、RTXC/ssと呼ぶ省フットプリントのカーネルと、RTXC/msと呼ばれる多機能なマルチタスクカーネルおよび両者を組み合わせたRTXC/dm(Dual-mode)があり、DSPコアにはRTXC/ssを、MCUコアにはRTCX/msをそれぞれ割り当てるという形でConverged Processorをカバーしていた(図2)。
RTXC/ssの機能は以下のようになかなか割り切った構成になっている。
一方のRTXC/msは、以下のように多機能となっている。
当然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/OTG、File Systemなどが用意されている。開発環境としては、もともとRTXCgenと呼ばれるKernel/Application Generatorがあったが、DebuggerやTrace/Profilerも加わっている。
Copyright © ITmedia, Inc. All Rights Reserved.