PX5 MODULES により、別々にコンパイルおよびリンクされたCアプリケーションコードの動的なインプレース実行が可能になります。アプリケーションモジュールは、位置に依存しない方法(コードとデータ)で構築することも、ファームウェアメモリ内の固定アドレスにリンクすることもできます。実行時に動的にロードすることも、ファームウェアイメージ内に永続的に常駐させることもできます。モジュールを動的にロードすることは、より広範な部分更新戦略の一部にもなります。アプリケーションモジュールには少なくとも1つのスレッドがあります(さらにスレッドを動的に作成することもできます)。モジュールは非常に軽量なプロセスと考えることができます。
各アプリケーションモジュールには独自のメモリ領域があるため、PX5 MODULESは実行中にモジュールを分離して、モジュールがそのメモリ領域にのみアクセスできるようにします。メモリ領域外にアクセスすると、エラーが発生します。PX5 MODULES は、プロセッサの MPU または MMU を利用してこの保護を提供します。また、アプリケーションモジュールスレッドに最大の優先度を適用することで、時間領域の保護も提供します。
PX5 MODULESは使い方が簡単です。PX5 RTOSと同じ業界標準の POSIX pthread APIを実装しています。RTOSコードにリンクされた一般的なアプリケーションは、実装したAPIを直接呼び出します。モジュールのコンテキストでは、トラップ命令を使用して別に実装したAPIをModule Manager(RTOSソースコードに付属)に要求します。Module Managerは、モジュールを動的にロードおよびアンロードするためのAPIも提供します。
PX5 MODULES は C (および一部のアセンブリ言語) で記述されています。モジュールからのアプリケーション API 呼び出しには、Module Manager に入るためのシステムトラップが必要です。そこから、要求が処理されます。処理が完了すると、制御は呼び出し元のアプリケーションモジュールスレッドに戻ります。この処理は、最大限の効率が得られるように最適化されています。
PX5 RTOSと同様に、 PX5 MODULES はサイズに重点を置いています。Module Managerは、ミニマムサイズは3KB 未満のフラッシュと 512 バイト未満の RAM となります。モジュールサポートの最小サイズ (1モジュールあたり) は、512 バイト未満のフラッシュと 2KB 未満の RAM です。アプリケーションモジュールで使用できる RTOS API を定義するのは簡単です。
Module Manager は1つのソースファイルで構成され、px5_module_manager.c です。このファイルはどのプロジェクトにも簡単に追加できます。唯一の追加要件は、プロジェクトのインクルードパスを設定することです。px5_Module Manager.hコンパイル中に見つけることができます。この時点で、Module Managerは操作の準備が整っており、複雑なプロジェクトやリンカー制御ファイルの変更は必要ありません。
PX5 MODULES には、px5_module.c そして px5_module_description.s ソースファイルとアプリケーションコードのみが必要です。インクルードファイル px5_module.h もパスで使用可能である必要があります。
Module Manager サンプルコード:
#include <pthread.h> #include <px5_module_manager.h> unsigned char memory[1024]; int main() { /* Start PX5 RTOS. */ px5_pthread_start(1, memory, sizeof(memory)); /* Initialize the Module Manager. */ px5_module_manager_initialize(); /* Create a module. The code for the module is already loaded at 0x8000000 and RAM at 0x64000000. */ px5_module_manager_create(0, NULL, 0, 16, 31, (void *) 0x8000000, 0x4000, (void *) 0x64000000, 0x400, NULL, 0); while(1) { sched_yield(); } }
PX5 MODULES サンプルコード:
#define PX5_MODULE_SOURCE #include <px5_module.h> /* This is the module's entry function (thread). */ void * module_entry(void * argument_area, u_long argument_size) { /* Application processing goes here! */ while(1) { sched_yield(); } } /* This is the exit function of the module, which is called before the module is terminated. */ void module_exit(void) { /* Application processing goes here! */ }
PX5 MODULES は、多くの組込みRTOSクラスのソリューションでは利用できない独自の軽量プロセスです。これにより、アプリケーションはテストがあまり行われていないソフトウェアコンポーネントを分離し、部分的なシステム更新を実行できます。
PX5 MODULES は、理解しやすいソースコードとともに提供されます。Module Managerに関連付けられた実装コードはそれに応じて名前が付けられ、px5_module_manager.c ファイルに含まれています。PX5 MODULES インフラストラクチャコードはすべて、px5_module ファイルにあります。
PX5 MODULES は ANSI C で記述されているため、すべての一般的な Arm アーキテクチャ(Cortex-A/R/M)および RISC-V を含む、Cコンパイラをサポートするあらゆるプロセッサアーキテクチャに高い移植性があります。
PX5 MODULES は、IAR、ARM、GCC などの一般的な組込み開発ツールをサポートします。
多くのオープンソースや一部の商用オプションとは異なり、PX5サポートチームが迅速に対応します。
px5rtos.comサイトにユーザーガイドを用意しています。ダウンロードしてご確認ください。
※ px5rtos.comサイトでのユーザー登録が必要になります。
フォームが表示されるまでしばらくお待ち下さい。
恐れ入りますが、しばらくお待ちいただいてもフォームが表示されない場合は、こちらまでお問い合わせください。