お勧めしたいThreadXのバリエーション

つぶつぶコラム

ThreadXには標準的な機能以外の実装がいくつか用意されており、ターゲットによっては非常に有効な機能が用意されています。
ここでは特にお勧めしたいいくつかのバリエーションの紹介と簡単な機能の解説を行います。

ThreadX SMP

ThreadXには対称型マルチプロセッシング(SMP)機能に対応したコンポーネントも用意されており、「Azure RTOS ThreadX SMP」と呼ばれています。Azure RTOS ThreadX SMPは組込みシステム向けのリアルタイムSMPカーネルで、対応しているMPUは限定(Cortex-AxのSMPコア製品、ARC HSのSMPコア製品およびシミュレーション環境のLinux版)されますが、複数のスレッドを複数のプロセッサコア上で同時に動作させることが可能です。
アプリケーションはシングルコアプロセッサと同様のコードで記述することができ、NetXDuo等の他のAzure RTOSコンポーネントも使用することが可能です。
ThreadX SMPのアプリケーションは複数のプロセッサコアで動作するため、優先度が異なるスレッドも同時に動作する場合があります。このため「自スレッドより優先度が低いスレッドは動作していない」という前提では問題が発生する場合があり、優先度が違う複数のスレッドが同一リソースに対して「処理・操作」を行う場合には、基本的には「再入可能処理」であるか「排他制御」が行われている必要があります。
上記の注意点はあるものの、「複数のプロセッサコアを同時に動作させる機能」を簡単に導入することができます。

ThreadX Modules

ThreadX Moduleコンポーネントは、アプリケーションの常駐部分とは別に構築されたモジュールをアプリケーションが動的に読み込むための機能です。汎用OS等で言えばDynamic Linking Library(DLL)と同等の機能で、常駐するModule Managerと、動的に読み込まれ動作するアプリケーション側の各モジュールで構成されています。
残念ながら対応しているMPUは非常に限定(Cotex-Ax、Cortex-Mx、Cortex-R4、RXv2)されており、またModule Manager側にThreadX本体があり、他のAzure RTOSコンポーネントはModule Manager側に実装できるものの、アプリケーション側から各コンポーネントにアクセスするAPI等については、現時点では確認できていません。
ThreadX Moduleコンポーネントは旧ExpressLogic社としては非常に意欲的な機能として提供されており、Cortex-M3等の比較的性能が低いプロセッサにも対応しています。

ThreadX for Win32

ThreadXはMCU上で動作させる環境以外にも、Windows上で動作を確認できるThreadX for Win32が用意されています。Linux上で動作を確認できるThreadX for linuxも用意されていますが、Windows版ではGUIX等の他のAzure RTOSコンポーネントも対応しています。(注:USBXは未対応)
このThreadX for Win32は、割り込みを含めたシミュレーションが可能で、Windows上でThreadXのアプリケーション部分を作成し試すことができます。
ThreadX for Win32は、いわゆるシミュレーション環境であり、ターゲットの実機開発と並行してアプリケーション開発を行う場合や、問題点の再現を実機で行うことができない等の場合、PC上で動作を確認できるため、非常に便利な環境です。
特にGUIXの画面および動作設計の場合、主観的な要素が多いGUI開発においては、複数の設計者の個別のPC上で確認することができますので、開発の効率を向上させることができます。またNetXDuoとの組み合わせでは、WinPCAP(パケットキャプチャライブラリ)等を経由してWindows上のアプリケーションとの通信もできます(ドライバは別途必要)ので、例えばHTTPのコンテンツ開発やSNMPのMIB対応処理の開発等については、PC上で完結させることもできます。

なおグレープシステムでは、ThreadX用のμITRONライブラリを用意しています。μITRON APIを使用したアプリケーション開発をサポートする製品になりますので、ご興味がある方は当社にお問い合わせください。

AzureRTOS製品ページはこちら

前回記事はこちら