RTOSアプリケーションのIoT MCUにはどの程度のハードウェア能力が必要か?
この答を IEEE標準RTOS のμT-Kernelプログラミングコンテスト対象評価ボードから考察しました。
RTOSコンテスト対象評価ボード
MCUベンダ大手4社:インフィニティ、STマイクロ、NXP、ルネサス協賛のRTOSプログラミングコンテストが開催中です。RTOSは、IoT MCU世界標準のμT-Kernel 3.0利用がコンテスト条件です(関連投稿:前投稿)。
但し4社評価ボードは、μT-Kernel以外にもFreeRTOSやAzure RTOSでも動作可能です。そこで、これら評価ボードスペックを分析すると、RTOSアプリケーションのIoT MCUに、どの程度のMCUハードウェア能力が必要か、その目安が判ると思います。
コンテスト対象評価ボードは、ベンダ4社評価ボードと英BBC開発micro:bit、合わせて5種です。
インフィニティ:KIT_XMC72_EVK
STマイクロ:Nucleo_H723ZG
NXP:MCX N94x評価ボード(1月4日現在Coming Soon)
ルネサス:EK-RA8M1
BBC:micro:bit
評価ボードMCUコアとROM/RAM量
各評価ボードは、どれもARM Cortex-M系コアを用いています。
インフィニティとSTマイクロは、ハイパフォーマンスMCU Cortex-M7、NXPは、Trust Zone搭載MCU Cortex-M33、ルネサスは、AI/ML性能向上のArm Helium搭載MCU Cortex-M85、BBC開発micro:bitは、ベーシックなMCU Cortex-M4です。
評価ボードのCortex-Mコアと最高動作速度、ROM/RAM量が下表です。
ベンダ | Cortex-Mコア/速度 | ROM(KB) | RAM(KB) |
インフィニティ | M7/350MHz | 8192 | 1024 |
STマイクロ | M7/550MHz | 1024 | 564 |
NXP | M33/150MHz | 1024 | 1024 |
ルネサス | M85/480MHz | 2049 | 1024 |
BBC | M4/64MHz | 512 | 128 |
BBC開発micro:bitは、他に比べスペックが劣っています。
これは、μT-Kernel 3.0学習教材用でコスト最優先のためと思います。
ベンダ4社評価ボードは、RTOSコンテスト参加ハードウェアなので、どれも汎用RTOSアプリケーション開発ができるハズです。コンテストエントリー時に、応募者が第3希望まで評価ボードを選べます。
IDEはRTOSもベアメタルも同じ
ベンダ4社は、ベアメタル開発用の統合開発環境:IDEを利用し、FreeRTOSやAzure RTOS開発環境を提供中です。
例えば、STマイクロは、ベアメタル開発で使うSTM32CubeIDEに、ミドルウェアのAzure RTOS開発ツールを追加し、Azure RTOS開発環境を、ユーザ自身で構築します(関連投稿:STM32 Azure RTOS開発ツール拡充)
コンテストは、μT-Kernel 3.0 RTOS開発です。筆者は、μT-Kernel 3.0をベンダ4社評価ボード上で動作させる作業、いわゆるポーティング処理は、把握していません。
しかし、本稿主題は、RTOS IoT MCUに必要なハードウェア能力の推定です。従って、評価ボードへのμT-Kernel 3.0ポーティングは、無視します。
一方、micro:bitは、μT-Kernel 3.0で動作するEclipse IDEが提供されます。従って、どなたでも直ぐにmicro:bit上でμT-Kernelを動かすことができます。この点も、教育用に適しています。
RTOS IoT MCUハードウェア能力推定
最初の表に戻り、RTOS IoT MCUに必要なハードウェア能力を推定します。
ベンダ | Cortex-Mコア/速度 | ROM(KB) | RAM(KB) |
インフィニティ | M7/350MHz | 8192 | 1024 |
STマイクロ | M7/550MHz | 1024 | 564 |
NXP | M33/150MHz | 1024 | 1024 |
ルネサス | M85/480MHz | 2049 | 1024 |
BBC | M4/64MHz | 512 | 128 |
先ず、MCUコア能力は、micro:bitスペックから最低でもCortex-M4以上、RTOSアプリケーションを実用的に開発するには、Flash ROMは1024KB以上が必要そうです。教育用micro:bitの512KBは、排除しました。
また、RTOSは、動作タスク数に比例し使用スタック量が急増します。これは、RTOSが実行タスクを別タスクへ切替える毎に、実行タスク変数やレジスタ等の状態をスタックにプッシュするためです。タスク再実行の際には、RTOSがスタックからポップし、実行前タスク状態へ戻します。
仮に、このRTOSポップ/プッシュに対してスタック量が不足した場合は、再現し難いバグになります。このバグを避けるには、必要十分な量のスタック領域が、RAM上に必要となります。スタック量を見積もるツールは、各社のIDEに付属しています。
表から、RTOSアプリケーション開発には、RAMは、最低でも512KB、安全側評価なら1024KB程度が必要そうです。
Summary:RTOS IoT MCUハードウェア能力
RTOSアプリケーションが動作するIoT MCUに必要なハードウェア能力を、μT-Kernelプログラミングコンテスト対象評価ボードから考察した目安が下記です。
MCUコア:ARM Cortex-M4以上、Flash ROM 1024KB以上、RAM 512KB以上
RTOSアプリケーション開発時には、MCUデバイスコストと発展性の検討が必要です。
機能拡張や横展開が期待できるRTOSアプリケーションなら、IDE付属スタック見積ツールを活用し、RAMに余裕があるデバイスが、効率的で安全な開発ができそうです。
Afterword:2024年もよろしくお願いします
日本時間の毎週金曜日、MCU話題を中心に、その開発環境のWindowsや比較対象にMPU/SBCなども混ぜながら、IoT MCU開発お役立ち情報を投稿します。
「開発スピードと成果」この2つを強く求められるのが、MCUに限らず開発者の宿命です。
激変MCU環境で背反するこの2つを両立する手段の1つが、MCUテンプレートだと筆者は考えています。開発初期立上げをスムースにし、全体像の視点を持ちつつ個々の機能追加もできるからです。
RTOS MCU開発も同様だと思います。
但し、全て自作するベアメタル開発と異なり、RTOSと協調動作するのがRTOS MCU開発です。RTOSを活かすMCUタスク作成や本稿のMCUハードウェア能力を、弊社RTOSテンプレートへ反映したいと考えております。
本年もどうぞよろしくお願いいたします。
※FreeRTOS version 11.0.0は、マルチコアMCU動作が可能になりました。