エッジAI導入アプローチ

市中ビデオカメラへのエッジAI応用例とどの程度TOPS能力が必要かが判る記事、STM32F3マイコンの電動自転車へのAI応用記事から、MCUとMPU/SBCのエッジAI導入アプローチの違いを説明します。

ビデオカメラのエッジAI応用例

AIビジョンプロセサHailo-15によるカメラノイズ除去、鮮明化例(出典:記事)
AIビジョンプロセサHailo-15によるカメラノイズ除去、鮮明化例(出典:記事)

上図は、左側オリジナルビデオ画像を、AI Visionプロセサ:Hailo-15を使って、ノイズ除去と鮮明化、人物認識を行った例です。

この例では、低照度下で撮影した4Kビデオ画像のノイズ除去に約100ギガオペレーション/秒(GOPS)、30フレーム/秒のリアルタイムビデオストリーミングなので3 TOPS処理能力が必要です。

Hailo-15は、AI処理能力に応じて現在3製品をラインナップしており、それぞれのTOPS値が下図です。

Hailo-15ラインナップ’(出典:HAILOサイト)
Hailo-15ラインナップ’(出典:HAILOサイト)

7 TOPSのHailo-15Lでも十分なビデオカメラエッジAI処理が可能です。カメラ外付けのHailo-15は、例えば、SBC(シングルボードコンピュータ)Raspberry Pi 5と組み合わせると面白い装置が開発できると思います。

同様のビデオエッジAI処理をMCUで実現する場合は、コチラの投稿で示したCortex-M85コア搭載RA8D1があります。

電動自転車のエッジAI応用例

2024年4月3日、STマイクロは、電動自転車搭載の汎用MCU STM32F3(Cortex-M4/72MHz、Flash/128KB)へ、無償エッジAI開発ツールSTM32Cube.AIを使って、自転車タイヤの空気圧を推定、空気を入れるタイミングを示すAI機能を実装しました。

STM32F3は、上記AI機能の他にも自転車本体の電動アシスト量制御やモータ制御も行っています。つまり、空気センサなどの追加ハードウェア無しでエッジAI機能が低コストで実装できた訳です。

STM32F3へのエッジAI応用例(出典:STマイクロ)
STM32F3へのエッジAI応用例(出典:STマイクロ)

STマイクロのMCUソフトウェアは、HAL(Hardware Abstraction Layer)APIを使って開発すると、同社の異なるMCUコアでも移植性の高いソフトウェアが作れます。

最新40nmプロセス製造のSTM32F3上位機種が、汎用STM32G4(Cortex-M4/170MHz)です。STM32G4ソフトウェア開発をご検討中の方は、弊社STM32G0x(Cortex-M0+/64MHz)テンプレートをご活用ください。
また、より低価格低消費電力なSTM32C0(Cortex-M0+/48MHz)へもG0xテンプレートが適用可能です。
詳細は、info@happytech.jpへお問い合わせください。

Summary:エッジAI導入の2アプローチ

エッジAI導入の2アプローチ
エッジAI導入の2アプローチ

実際のエッジAI応用例から、MCUとMPU/SBCではエッジAI導入アプローチが異なる事を示しました。

MCUは、STM32F3例が示すように、「追加ハードウェア無し低コストAI実装アプローチ」です。STM32Cube.AIを使い、実装MCUへソフトウェアのみでAI機能追加を行います。

MPU/SBCは、外付けHailo-15H/M/Lを使ってエッジAI処理を行います。「拡張性重視のAI実装アプローチ」です。

ユーザが求めるAI機能は、今後益々増えます。エッジAI処理増加により、より高い電力効率で高性能な処理コアが求められるのは、MCUもMPU/SBCも同じです。

製品開発には、ある程度の期間が必要です。この期間中に増加するエッジAI処理増に耐えられる製品の処理コア選定は、重要検討ポイントになるでしょう。

関連投稿:MCUとMPUの違い

Afterword:ビデオエッジAI処理プロセス

ビデオエッジAI処理プロセス(出典:HAILO記事)
ビデオエッジAI処理プロセス(出典:HAILO記事)

最初の記事に、ビデオエッジAI処理プロセスが良く判る図があります。これを見ると、エッジAI処理がハードウェアの並列処理に向いていることも判ります。

ハードウェアは、製品化後、簡単に追加ができないため、どの程度の余力を製品ハードウェアに持たせるかは、コストとの兼ね合いで「永遠の課題」です。これは、ソフトウェアのみでAI機能を実装するSTM32Cube.AIでも同じです。製品実装済みMCUの余力を上回るAI機能追加はできないからです。

つまり、当面の安心をMCU開発者へ与えるには、最新MCUの製品利用がBetterということです。


Cortex-M85搭載RA8シリーズ説明

前投稿MCUとMPUの違いで紹介したルネサスRAファミリ最新MCUのRA8シリーズを説明します。
RA8は、従来Cortex-M7クラスの高性能MPUが必要なAI処理を、低コスト・低消費電力なAI MCUで実現します。

Cortex-M85コア

Cortex-M85特性比較(出典:ARM)
Cortex-M85特性比較(出典:ARM)

ARM Cortex-M系コアの比較表がコチラにあります。本ブログ関連を抽出したのが上表で、右側へ行くほど新しいコアになります。

Cortex-M85が、MPUのCortex-M7を超えるコア性能を持つことが判ります。

RA8シリーズ

RA8シリーズMCUポートフォリオとパーツ番号
RA8シリーズMCUポートフォリオとパーツ番号

Cortex-M85コア搭載のルネサスRAファミリMCUが、RA8シリーズです。今日現在、RA8シリーズは、RA8D1RA8M1RA8T1の3種類が発売中で、それぞれに評価ボードも提供中です。

RA8シリーズMCUポートフォリオとパーツ番号を示します。RA8xyのxが想定アプリケーション、yが改版数を示します。アプリケーションには、顔検出やモータ故障検出などのAI機能も含まれます。

AI顔検出が解りやすいので、以下、ディスプレイアプリケーションのRA8D1 MCU評価ボードを使ってAI MCU実例を示します。

評価ボード:EK-RA8D1

EK-RA8D1
EK-RA8D1

RA8D1(Cortex-M85/480MHz、ROM/2MB、RAM/1MB)評価ボードEK-RA8D1です。4.3インチカラー液晶と3MピクセルCMOSカメラも付属しています。RA8 Series Evaluation Kits Demo Overviewで解説動画を見ることができます。

クイックスタートガイドユーザーズマニュアルがダウンロードできます。

サンプルコード:EK-RA8D1 Example Project Bundle

EK-RA8D1のサンプルコードは、EK-RA8D1 Example Project Bundle(要ログイン)です。この中の_quickstartプロジェクトが、評価ボード実装済みサンプルコードです。

評価ボードと液晶、カメラ装着後、初めて電源投入すると_quickstart が動作します。この_quickstartサンプルコードが、Summaryで示すAI顔認証やオブジェクト検出を行います。

_quickstartのソースコード一覧です。FreeRTOSで開発されています。従って、ソースコードの移植性は高いと思います(関連投稿:FSP利用FreeRTOSアプリの作り方)。

_quickstart_ek_ra8d1_epのソースコード一覧
_quickstart_ek_ra8d1_epのソースコード一覧

Summary:Cortex-M85搭載RA8シリーズ説明

高性能MPUのAI処理を、低コスト・低消費電力MCUで実行するDSPやAI/ML性能強化Cortex-M85コアを説明し、同コア搭載RA8シリーズ最新MCUのRA8D1(Cortex-M85/480MHz、ROM/2MB、RAM/1MB)評価ボードEK-RA8D1と付属_quickstartサンプルコードを説明しました。

AI MCUアプリケーション例として、評価ボードへ液晶パネルとカメラを接続すれば、AIによるカメラ内顔検出、オブジェクト検出ができます。

AI MCUのカメラ内の顔検出とオブジェクト検出(出典:クイックスタートガイド )
AI MCUのカメラ内の顔検出とオブジェクト検出(出典:クイックスタートガイド )

Afterword:AI MCUアプリケーション開発方法

MCU開発能力に加え、幅広いAI知識もAI MCUアプリケーション開発に必要です。

AI MCUアプリケーションを開発する時は、本稿評価ボードとサンプルコードによる顔検出やオブジェクト検出AIサンプルコードをベースに、目的とする顧客AIアプリへ修正・変更を加えながらAIを習得することも効率的・効果的な方法だと思います。


評価ボード活用MCU製品開発

MCUの正常動作には、安定したクロック供給が最重要です。これは、ソフト/ハード、どちらの開発者も知っておくべき基本です。デジタルデバイスの動作保証は、安定クロックがあってこそだからです。

ルネサスRX、RAファミリで説明しますが、全ベンダの評価ボードでも同様です。ぜひ本稿を参考にしてください。

メイン/サブクロック回路基板設計要点

2024年2月発行のRX、RAファミリ向けアプリケーションノートを使って、製品開発にベンダ評価ボード活用メリット/デメリットを説明します。

メインクロック回路、サブクロック回路のデザインガイド Rev.1.00 (PDF) (日本語)
Design Guide for Main Clock Circuit and Sub-Clock Circuit Rev.1.00 (PDF) (英語)

※アクセス時、ログインが必要な場合があります。

メインクロックとサブクロックの基板例(出典:図26)
メインクロックとサブクロックの基板例(出典:図26)

RX、RAファミリのMCUを対象に、メイン/サブクロック発振回路基板パターンやルネサス推薦発振子メーカなど、特にMCUクロック関連回路の基板設計要点をまとめたのが、上記アプリケーションノートです。

MCUの動作を決めるのがメインクロック、サブクロックはRTC(時計機能)に使います。全てのデジタルデバイスは、正確なパルス幅の安定したクロックが供給されて初めて正常に動作します。MCUは、なおさらです。

クロックが不安定な場合は、原因不明のMCUトラブルが発生します。外来ノイズにも脆弱です。このような異常状態では、デバッグなどできません。

例えが悪いですが、人間で言えば「心不全」のようなものです。メインクロックの働きを具体的に知りたい方は、コチラを参照(正常クロック供給下の解説)。

従って、クロック回路基板設計要点を守った上でのMCU製品開発が最重要です。

基板設計理想解と現実解

前章の基板設計ガイドは、クロック関連部品だけの理想的な基板、つまり、「理想解」です。

しかし、実際の基板設計は、大きさやコスト、クロック以外の他部品の配置など様々な事柄を考慮する必要があります。そして、それらの総合判断結果が「現実解」であり、実際の製品基板です。

現実解は、ベンダMCU評価ボードでも同じです。

RAファミリRA6E1評価ボードのMCU回り基板を示します。理想解と違っても部品配置、クロック配線の太さ・短さ、そのシールドなど参考にすべき基板回路を持つ現実解です。

RAファミリRA6E1のMCU周り基板現実解
RAファミリRA6E1のMCU周り基板現実解

各ベンダMCU評価ボード目的

前章のMCU評価ボード現実解は、ルネサスRX、RAファミリに限った話ではありません。

つまり、クロック要点を満たし外来ノイズにも強く、かつ、Arduinoシールドコネクタなどで拡張機能も実装済みのデバイスが、各ベンダのMCU評価ボードです。これらは、MCUベンダ自身の開発ボードですので、極めて高い製品クオリティを持っています。

ベンダMCU評価ボードとは、MCUを評価するためのボードです。しかし、同時に、MCUが正常に動作するベンダ推薦発信器や基板パターンの製品ハードウェア手本も示していると言えます。

プロトタイプ時、各ベンダ評価ボードをそのまま制御系に流用するのは、原因不明MCUトラブル(心不全)を避ける手段として有効であることが判ると思います。

評価ボード活用得失

プロトタイプにMCU評価ボードを流用するメリット/デメリットをまとめます。構成は、下記とします。

プロトタイプ構成=評価ボード+ユーザ機能ボード+ユーザソフトウェア
ボード間接続=Arduinoコネクタ

メリット

  • 高信頼制御ハードウェアが、評価ボードにより簡単に得られる
  • 制御能力過不足時、Arduinoコネクタを持つ別評価ボード交換可能
  • ユーザ機能デバッグに集中できる

デメリット

  • 製品の大きさ、コストを上げる要因になる

簡単に言うと、高信頼で載せ替え可能な制御系と引き換えに、大きさやコスト面の犠牲が生じる構成です。
しかし、筆者は、早期プロトタイプ開発に最適な方法だと思います。

製品改善アプローチ

最終製品時の大きさ、コストを改善するには、評価ボードとユーザ機能ボードを一体基板化するのがBetterです。この時も、プロトタイプに使った評価ボードMCU周りの発振子配置や配線は、手本としてそのまま製品基板へ流用可能です。

また、一体化最終製品のトラブル発生時、ユーザ機能ハードウェア起因か、または、ユーザソフトウェア起因かの切り分けも、評価ボード流用プロトタイプは容易にします。なぜなら、評価ボードは、信頼性が高いベンダ開発品だからです。

つまり、最終製品とプロトタイプの差分が原因と考えられ、一体化基板ハード、または、ユーザソフトの2つに1つとなります。同一ユーザソフトでのトラブルなら、ハード起因が疑われます。

評価ボード活用プロトタイプは、早期製品化だけでなく、様々な用途やメリットを生みます。

Summary:評価ボード活用MCU製品開発

ベンダ評価ボード活用MCU製品開発
ベンダ評価ボード活用MCU製品開発

ルネサスRX/RAファミリのメイン/サブクロック回路デザインガイドから、MCU製品開発にベンダ評価ボードをそのまま流用する早期プロトタイプ開発方法を示し、得失を明らかにしました。

評価ボード活用プロトタイプは、大きさ、コストを改善する基板パターンの手本となるだけでなく、最終MCU製品トラブル原因が、ハードウェア起因かソフトウェア起因かを切り分ける手段にも使えるなど、メリットが大きいことを示しました。

Afterword:プロトタイプソフトウェア開発に弊社テンプレート

評価ボードがハードウェア手本なら、ベンダ開発サンプルコードは、ソフトウェアの手本です。

弊社テンプレートは、各ベンダの代表的MCU評価ボードに対応済みです。テンプレートは、ベンダサンプルコードを流用・活用し、プロトタイプ向けソフトウェアの早期開発が可能です。

弊社テンプレートと評価ボードを使って早期プロトタイプ開発を行い、MCU製品開発に役立ててください。


RTOSアプリケーションIoT MCU能力推定

RTOSアプリケーションのIoT MCUにはどの程度のハードウェア能力が必要か?
この答を IEEE標準RTOS のμT-Kernelプログラミングコンテスト対象評価ボードから考察しました。

RTOSコンテスト評価ボード
RTOSコンテスト評価ボード

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開発ツール拡充

現代的ユーザMCU開発の例(出展:The ST blog)
現代的ユーザMCU開発の例(出展:The ST blog)

コンテストは、μ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スタック動作(出展:ウィキペディア)
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動作が可能になりました。


μT-Kernelプログラミングコンテスト

μT-Kernalプログラミングコンテスト(出典:TRONフォーラム)
μT-Kernalプログラミングコンテスト(出典:TRONフォーラム)

2023年12月11日から、インフィニティ、STマイクロ、NXP、ルネサス、4社協賛のμT-Kernelプログラミングコンテストが開催されます。

IoT MCU世界標準RTOSのμT-Kernelを用いたアプリ、ミドルウェア、開発環境/ツールの3部門で競い、対象は国内外技術者と学生、賞金総額500万円、1次審査合格者には評価ボードが無償提供されます。

Summary:エントリ:12月11日~2024年2月29日、提出:2024年3月11日~6月30日

コンテスト詳細は、12月7日、東京ミッドタウンホールの2023 TRON Symposiumで発表されます。

賞金総額500万円のコンテスト応募期間は、2023年12月11日から2024年2月29日。1次審査合格者は、内容に応じて評価ボードが無償提供され、応募プログラムの提出期限は、2024年3月11日~6月30日です。

世界標準MCU RTOS:μT-Kernel 3.0

クラウドへ接続するIoT MCUは、RTOSが必須です。FreeRTOSやAzure RTOSが有名です。

μT-KernelもIoT MCU RTOSの1つです。μT-KernelのIEEE標準規格:IEEE2050-2018完全準拠版がμT-Kernel 3.0です。つまり、μT-Kernel 3.0は、世界標準IoT MCU RTOSです。

さらに、μT-Kernel 3.0は、GitHub公開のオープンソースソフトウェアで、協賛MCUベンダ各社のBSP(ボードサポートパッケージ)もあり、RTOS開発が容易になりました。

※評価ボード毎に異なるBSPにより、ユーザ開発アプリのハードウェア依存性を無くすことがBSPの目的。STマイクロ例が下図(説明投稿はコチラ)。

BSPとMCU Firmwareによりハードウェア依存性が無いHAL APIsが提供
BSPとMCU Firmwareによりハードウェア依存性が無いHAL APIsが提供

協賛4社:STマイクロ、NXP、ルネサス、インフィニティ

μT-Kernelプログラミングコンテスト協賛4社の評価ボードは、上記BSPが提供中です。2023 TRON Symposium会場で、各社評価ボードでμT-Kernel 3.0動作のIoT MCU実機デモが開催されるでしょう。

大手MCUベンダ4社のμT-Kernel 3.0への力の入れ方やRTOS開発のし易さが、実際に評価ボードで判ると思います。

μT-Kernel 3.0学習教材

micro:bit は、入力、出力、センサー、無線通信機能が搭載済み学習ボード(出典:micro bitサイト)
micro:bit は、入力、出力、センサー、無線通信機能が搭載済み学習ボード(出典:micro bitサイト)

英BBC開発の教育向けMCU、micro:bit上で動くリアルタイムOSマイクロ学習キットが販売中です。キットと言っても、入力センサ/スイッチ/LED搭載済みのmicro:bitとPCをUSB接続するだけでRTOS動作します。

RTOSにμT-Kernel 3.0を使用し、タスク動作をビジュアル表示できるタスクトレーサやμT-Kernel日本語解説資料付きです。μT-Kernel 3.0のスケジューリングやセマフォが、ご自分のペースで学習できます。

Afterword:今年最後の投稿、次回1月5日予定

寒暖差のせいか、このごろ体調不調です。流行中のインフルエンザかもしれません。かなり早いのですが、本稿を今年最後の投稿にしたいと思います。次回は、2024年1月5日(金)投稿予定です。

今年も本ブログをご覧いただき、ありがとうございました。皆様、よいお年をお迎えください🤞。


ベアメタルかRTOS開発か?

弊社MCUテンプレートご購入者様から、ベアメタルかRTOS、どちらの開発が良いかについてご質問がありました。
ご質問者同意を得ましたので、筆者回答を一部修正、抜粋して示します。

Summary:クラウド接続=RTOS開発、スタンドアロン=ベアメタル開発

RTOS vs. BareMetal
RTOS vs. BareMetal

AWSやAzure RTOSなどのクラウドへ接続するMCUは、RTOS(FreeRTOS/Azure RTOS)開発が必須です。クラウド接続やセキュリティ確保に、専用RTOSライブラリ利用が必要だからです。また、大規模、複数開発者の場合も、RTOS開発が向いています。

スタンドアロン動作のMCUは、ベアメタル開発をお勧めします。MCU動作を全て開発者で管理・制御できるからです。

ベンダ提供サンプルコードとMCU評価ボードを活用すると、ベアメタル/RTOSどちらの開発でも、高品質・短期間で製品のプロトタイプ開発ができます。弊社MCUテンプレートは、サンプルコード活用プロトタイプ開発に適しています。

クラウド接続MCU:割込みベースRTOSタスク開発

AWS (Amazon Web Services)やAzure (Microsoft Azure Cloud Services)へ接続するMCUは、クラウド接続用に、FreeRTOSやAzure RTOS接続ライブラリの利用が前提条件です。また、高度なセキュリティ対策が求められますので、クラウド側提供セキュリティライブラリを使うことも求められます。

従って、クラウド接続MCUは、必然的にRTOS開発となります。

通信やセキュリティ以外の処理は、タクス(スレッドとも言うが、以下タスクと略)の開発が、ユーザ開発内容です。

タスクは、移植性が高い単位に機能分割し、割込みベースで作成します。複数タスクの割込み処理や優先順位を管理・処理するのが、RTOSの役目です。

RTOSが優先順位に基づいて個々のタスクをMCUに割当てることで、複数タスクの並列処理が進みます。シングルコアMCUの場合、一度に実行するタスクは1個です。従って、タスクは時分割処理です。分割タイミングが短く、しかも優先順位に基づいたタスク処理ですので、複数タスクが並列処理しているように見えます。

タスクは、別タスクのことを考慮せず独立性、移植性高く開発可能です。その代償として、RTOSが複数タスク間優先制御を行うセマフォ/ミューテックス/イベントフラグなど、また、タスク間通信を行うメッセージバッファ/メールボックスなどのRTOS独自機能を、開発タスクに組込む必要があります。

関連投稿:RTOS習得

移植性や独立性が高い開発済タスクは、ベアメタル比、ソフトウェア資産として他プロジェクトへもそのまま使えるメリットがあります。また、ソフトウェア規模が大きく、複数開発者で共同開発する時も、機能完全分離RTOS開発の方が優れると言われます。

スタンドアロンMCU:ポーリングベースベアメタル開発

RTOSが行う周辺回路の割込み処理や優先制御を、全てユーザが行うのがベアメタル開発です。

但し、デバッグや処理開発のし易さを考慮すると、ポーリングベース開発をお勧めします。

つまり、周辺回路の割込みフラグを、一旦、割込み処理待ちフラグへ置換え、この割込み処理待ちフラグをポーリングすることで処理を実行する方法です。割込み処理待ちフラグは、RAMへ展開されますので、開発処理もRAMフラグで制御でき、割込みを直接扱うよりも単体デバッグが容易になります。

ベアメタル開発は、単体デバッグ済みの複数処理を、MCU全体で上手く実行する制御部分も必要です。弊社ベアメタルMCUテンプレート英語版MCUテンプレートは、この制御部分を提供します。

サンプルコード活用プロトタイプ開発

サンプルコード活用プロトタイプ開発
サンプルコード活用プロトタイプ開発

RTOSはタスク、ベアメタルは周辺回路制御のソフトウェア開発が必要です。

但し、ベンダは、周辺回路制御の参考となるソフトウェアを、サンプルコードとしてMCU評価ボードと共に提供します。サンプルコードは、ベンダ専門家が開発した評価ボード動作確認済み高品質コードですので、これをユーザが利用しない手はありません。

現在サンプルコードは、ベアメタル用のものが殆どです。しかし、RTOSタスク開発へも応用できます。サンプルを上手く利用することで、0から開発するよりも、短時間でソフトウェア開発ができます。

また、評価ボードMCU周りの部品配置やアートワーク配線は、処理性能過不足時のMCU交換や耐ノイズ性が高いハードウェア開発の参考書になります。

MCU開発を高品質・短期間で行うには、サンプルコードとMCU評価ボードを活用し、製品プロトタイプ開発がお勧めです。プロトタイプから製品へフィードバックをかければ、より良い製品化が可能です。

Afterword:ベアメタル開発からRTOSへステップアップ

IoT MCU開発者スキルの階層構造
IoT MCU開発者スキルの階層構造

Windowsアプリ開発時は、Windows APIの利用は当たり前です。多くの解説書もあります。

IoT MCU開発時も、FreeRTOSやAzure RTOSが当然になると思います。ただMCU開発には解説書が少なく、その理解には基礎知識が必要です。基礎がグラつくと、その上の積み重ねは非常に困難です。

MCU開発の基礎は、ベアメタル開発です。IoT普及でRTOS MCU開発も増えます。IoTに向けてRTOSを勉強しようと考える方も多いと思います。その場合は、ベアメタル開発の何をRTOSが代行し、何が得られ、何を失うか、RTOSオーバーヘッドはどの程度かを考えながら学習すると、より効率的にRTOS習得ができます。

例えば、RTOS開発には、セマフォやミューテックスなどのベアメタル開発に無い多くのRTOS機能を新に学ぶ必要があります。しかし、よく使う機能は少数です。ご自分のベアメタル手法を代行するRTOS機能から学び始め、それでも足りない機能はRTOS側に用意されていますので、順次増やしながらタスクを開発して行くと良いと思います。

ソフトウェア開発は、AI Copilot出現で激変への過渡期です。数年後には、ライブラリ組み換え作業などへ開発が変わり、不足がちなMCU開発解説もAIが代行してくれるかもしれません。

そんな全能AI過渡期でも、ご自分自身で獲得した基礎の重要性は、変わらないと筆者は考えます。


RA用FSP v5.0.0 e2 studio 2023-10リリース

2023年10月28日、RA用FSP v5.0.0同梱e2 studio 2023-10がGitHubからリリースされました。FSP、e2 studioどちらも最新版です。また、10月16日に18年ぶりにバージョン5となったMCU開発必須ツール:Tera Term 5.0も、GitHubにあります。

本稿は、これらソフトウェアダウンロード先(=repository)のGitHubについて説明します。

また、GitHub公開の最新FSP v5.0.0、e2 studio 2023-10、Tera Term 5.0を使った評価ボード動作例も示します。

※今週金曜は、休日(文化の日)のため、木曜に先行投稿しています。

GitHub主要3機能

GitのWebサービス版がGitHubです。※Hubは、集約点という意味。

Gitは、Linux上で「複数ソフトウェア開発者」向けの支援ツールです。複数開発者が、1つのプロジェクトを、別々の場所・作業時間で共同開発する時に便利な機能を提供します。

Gitの主要機能が、フォーク、プルリクエスト、マージの3つです。

フォーク(=派生)は、レポジトリソースコードを派生利用し、別ソフトウェアを開発する際に、オリジナルコード所有者へ通知する機能です。

プルリクエストは、レポジトリソースコードの変更を、プロジェクト開発者へ通知、マージは、プルリクエストを受けた開発者が、変更を承認するか否かの通知機能です。承認時は、変更コードがプロジェクトへマージ(=統合)されます。

Linuxツールですので、CUI(キャラクタ ユーザ インタフェース)です。複数開発者が、地球上の離れた場所・作業時間であっても、ソフトウェア開発が上手くできる仕組みをGitが持つことが判ります。

また、ソースコードをレビューするコミュニティもあります。質の高いコード作成に役立つそうです。このコミュニティに、AI活用が最近話題です。AIを使わない時と比べ、開発速度57%、タスク完遂率27%上昇など驚きの効果が報告されています。

これらGit機能を、クラウドで提供するのが、GitHubです。2023年のユーザ数は、1億人突破だそうです(Wikipediaより)。

参考資料:GitHubとは? Digital Business Sherpa (2023-08-02)

GitHubソフトウェア公開機能

GitHubのもう1つの機能が、ソフトウェア公開です。この例が、最初に示したRA用FSP v5.0.0同梱e2 studio 2023-10やTera Term 5のリリースです。

exeファイルが直接ダウンロードできます。zipファイルダウンロードが主流のWindowsと異なる点です。

最新版RA用FSP 5.0.0 with e2 studio 2023-10のGitHubレポジトリ
最新版RA用FSP 5.0.0 with e2 studio 2023-10のGitHubレポジトリ

Latestアイコンが最新版を示します。Release Notes内にダウンロードリンク、下方にあるAssetsが、実際の公開ファイルを示します。

Summary:ワールドワイド開発標準ツールGitHub

筆者は、 パーティションもない大部屋で近隣同僚と、または、1人でソフトウェア開発をしてきました。Git主要3機能は、口頭で同僚へ伝えるか、1人開発時は不要でしたので、実際にGitHub活用経験はありません。

しかし、ワールドワイドやリモートワークでの複数人ソフトウェア開発時は、GitHubが標準ツールです。普段はソフトウェアダウンロード先としてGitHubを利用している開発者も、その仕組みを知っていると今後役立つと思います。

Afterword:RA用FSP 5.0.0 with e2 studio 2023-10 & Tera Term 5動作

GitHub公開のRA用FSP v5.0.0、e2 studio 2023-10とTera Term 5を使ったFPB-RA6E1評価ボード動作例です。接続は、コチラの投稿と同じです。

RA用FSP 5.0.0 with e2 studio 2023-10とTera Term 5.0動作例
RA用FSP 5.0.0 with e2 studio 2023-10とTera Term 5.0動作例

インストールダイアログに従っていれば、従来版からのアップグレードも問題ありません。

RA用FSP v5.0.0同梱e2 studio 2023-10リリースが、他のルネサスMCUファミリのFSP v5.0.0やe2 studio 2023-10リリースより遅れるのは、 RA専用FSP同梱e2 studioのGitHubマージ作業のためと思います。

※ルネサス他MCUファミリは、FSP、e2 studioそれぞれ個別リリース。

リリースが遅れても、RAファミリ統合開発環境を、だれでも簡単に構築できるメリットを優先したためでしょう。


MCU AI現状と対策

今秋リリースWindows 11 23H2は、AIによる作業支援:Copilot機能が追加される予定です。AIがより身近になるでしょう。

AIは、MCU開発へも押し寄せつつあります。ルネサス、STマイクロのEdge MCU AI現状と対策を示します。

MCU開発者に押しよせるAI/MLの風
MCU開発者に押しよせるAI/MLの風

Edge MCU AIとWindows AIの課題数

1: MCU開発へAIをどのように実装するか、2: 実装したAIをどのようにMCU製品メリットへ変えるか、そして、3: Edge MCU AI製品をどのように顧客に活用してもらうか、MCU開発者は、これら課題解決が必要です。

一方、Windows AIは、3:相当 のPCユーザとしてどのようにWindows AIを活用するかが課題です。

Edge MCU AIは、使うだけでなく開発も必要ですので課題の数が異なります。MCUベンダ各社は、AI MCUツールを発表しています。

本稿は、特に1:AIのMCU実装についてルネサス、STマイクロの現状とMCUソフトウェア開発者の対策を示します。

ルネサス:Reality AI Toolをe2 studioへ統合

2023年9月21日、ルネサスは、Edge AI専用ツール:Reality AIを、既存MCU開発環境:e2 studioへ統合しました。これにより、AIプロジェクトとe2 studio間のデータ共有が可能となり、開発効率が上がります。

動画はコチラ

STマイクロ:NanoEdge AI Studio

NanoEdge AI Studio Workflow(出展:NANOEDGE AI STUDIO V3)
NanoEdge AI Studio Workflow(出展:NANOEDGE AI STUDIO V3)

2023年8月3日、STマイクロは、Edge AI 専用ツール:NanoEdge AI StudioとST開発ボードを使って簡単・迅速にAI/ML:Machine Learning関連データを収集・検証し、機械学習アルゴリズムをわずか数ステップで生成できると発表しました。

動画はコチラ

AI/ML必然性

既存MCU開発環境へEdge AIツール出力をライブラリとして取込むことは、ルネサス/STマイクロ共に簡単です。

しかし、非力なMCUに最適なAI出力ライブラリを得ることが簡単か否かは、現在、筆者は分かりません。多分、この判断には、多少なりともAI/ML知識が必要になるでしょう。

AI/ML担当者とEdge MCU担当者、2人いれば問題は少ないです。しかし、Edge MCU開発者が両者を兼務することが、既存MCU IDEへAIツール統合の流れとマッチすることから必然だと思います。

ハードウェアとソフトウェア担当が別れるように、AI/MLとMCUソフトウェア担当が分離することを筆者は想定しにくいです。

Summary:急増Edge MCU AI対策

Edge MCU AI製品とAIなしのMCU製品を比較したSTマイクロの動画(7:34)は、興味深いです(リンク先下方に動画あり)。AI実装有無が、MCU製品の差別化要因になることを示しています。

また、Windows AI:Copilot機能の普及は、MCU製品顧客へも大きな影響を与えると思います。PCでのAI活用事例が多くなり、AIメリットを認識する顧客が増えるからです。

MCU開発者は、Windows AI普及に合わせて増加するであろうEdge AI/ML知識も備えておく必要があります。MCUベンダ各社は、Edge AI/MLセミナを活発化します。是非参加して、基礎知識を獲得しましょう!


MCUテンプレート海外販売開始

MCUテンプレート海外販売に向けWordPressサイト多言語化を行ってきました。本日より下記MCUテンプレートの海外販売を始めます。

RA BeaeMetal、STM32G0x、STM32F0/F1、3種MCUテンプレート販売開始

既存日本語テンプレート10種のうち、第一弾は、ルネサス)RA6/4/2ベアメタルテンプレート、STマイクロ)STM32G0xテンプレートSTM32F0/F1テンプレート3種のテンプレート資料を英語化し販売します。

多言語対応ページの使い方

多言語対応ページの使い方
多言語対応ページの使い方

ブログトップを示すHomeから③テンプレート購入手順は、多言語対応済みページです。従って、サイト右上のプルダウンメニューから、お好きな言語を選べば、日本語表示から選択言語へ変換されます。

①Template list掲載の3種テンプレート説明資料の冒頭3ページは、無料ダウンロード可能です。

テンプレート利点やTipsなどは、②Template Benefits & Tipsに、Template購入方法は、③Template purchase procedureをご覧ください。

お好きな言語でテンプレート概要やメリットなどをご覧になり、MCUテンプレートのご購入を検討頂ければ幸いです。

日本語テンプレート販売は従来通り

日本語MCUテンプレート10種は、従来と同じMCUテンプレートサイトから販売中です。

第一弾の多言語MCUテンプレート3種以外をご要望の方は、日本語MCUテンプレートサイトからもご購入が可能です。

但し、テンプレート説明資料は、全て日本語表記です。ご購入後、Google翻訳などを使ってご自分で翻訳してください。なお、テンプレートソースコード内の冗長な日本語コメントは、コンパイル時に全て削除されますので、制御には無関係です。

Google翻訳の感想

Google翻訳は、便利なツールです。しかし、日本語からの英語翻訳時、英単語間に余分なスペースが挿入されます。例えば、「これはペンです。」をGoogle翻訳すると、「This__is__a__pen.」となります。

この英単語間の2スペースは、Wordなどの置換ツールを使って通常の1スペースへ一括変換できます。しかし、余分なスペースがなぜ挿入されるのかが不明です。理由がお解りの方は、弊社に教えてください。

Afterword:テンプレート役割

テンプレート付属資料の英語化は、手間が掛かりました。ただ、第一弾英語化を期に、3種説明内容を横断的に見直す良い機会にもなりました。

その結果、初心者の効率的MCU習得にテンプレートが適す、テンプレート応用例SimpleテンプレートとBaseboardテンプレートは、プロトタイプ着手時のMCUプロジェクトに適す、これらを再確認しました。

MCU習得やプロトタイプ開発に、弊社テンプレートは役立ちます。是非、ご活用ください。



過酷高温のMCU変化

最高気温が35°Cを超える猛暑日が多発しています。IoT MCU装置の動作環境も、過酷な高温になることもあるでしょう。

そこで、過酷な高温環境で、MCUの何が、どのように変わるかをソフトウェア開発者向けにまとめます。

Summary:限界温度以下のMCU運用必須

限界温度以下のMCU運用必須
限界温度以下のMCU運用必須

過酷な高温でMCUが動作すると、半導体MCU自体が部分的に破壊され、常温に復帰しても元に戻りません。その結果、MCU論理やアナログ処理の異常、消費電流過大/過少などの症状が現れることがあります。

ソフトウェア開発者が、これら見つけにくい症状をデバッグするのは困難です。フェールセーフ観点から、ADCでMCU心臓部温度をモニタし、限界温度まで十分な余裕のあるうちに動作停止などのMCU運用が必要でしょう。

参考資料

  1. Notes on RA6E1 Group High-Temperature Operation、2023年7月10日
  2. マイコンの仕様を超える条件で使ったら、何が起きる(前後編)、2022年8月12日、9月2日

RA6E1アプリケーションノート:Notes on RA6E1 Group High-Temperature Operationは、ルネサスRA6E1(Cortex-M33コア、IoT向きMCU)を使った8個のアプリケーションで、信頼性劣化を防ぐMCU心臓部限界温度の実験結果を示しています。

※本稿は、Tj:ジャンクション温度を、MCU心臓部温度と略記します。

何が起きる(前後編)は、STマイクロの技術資料です。高温、高湿、高電圧ストレスが、一般的なMCUに与える影響と、その可逆性(常温で正常に戻るかどうか)を詳しく説明しています。

過酷高温でMCUの何がどう変わるか

どちらの参考資料も、デバイス開発者向けとしては良く出来ています。

特に1は、具体的アプリケーションでの周囲温度(Ta:-40℃~105℃)とMCU動作時ジャンクション温度(Tj)の許容範囲を示しており、2の高温ストレス限界の具体例です。

しかし、ソフトウェア開発者にとっては、そのメカニズムよりも過酷高温動作の結果、MCUの何がどう変わるかをもっと端的に知りたいハズです。

過酷な高温でMCUが動作すると、半導体MCU自体が物理的、部分的に破壊され、常温に復帰しても元に戻りません。その結果、論理処理やアナログ処理の異常、消費電流過大/過少などの症状が現れることがあります。これらは、常に現れる症状ではないと筆者は思います。

ソフトウェア開発者が、通常のソフトウェアバグとは異なるこれら症状をデバッグするのは、困難です。

例えば、高温限界を超えたMCUと新品MCUとを並行動作し、たまに発生する異常症状から間接的に判断する程度でしょう。結局、新品MCUとの交換が必要です。

過酷高温環境のMCU動作がもたらす結果
過酷高温環境のMCU動作がもたらす結果

フェールセーフ

自動車は、制御系が異常を検出するとリンプモード(limp mode)、つまり、エンジン/モータやその他部品などの追加損傷をおさえつつ、最低限の走行で乗員を帰宅させるモードへ移行します。

MCU装置の場合は、先ず過酷な高温場所に設置しないこと、それでもやむを得ず限界高温に近づいた場合は、MCU破壊を避けるため動作停止などのフェールセーフが必要でしょう。

最近のMCUは、温度計を内蔵しています。ADCで自身の温度を測り、「限界温度前の十分な余裕あるうち」にフェールセーフ処理実行が可能です。

ディレーティング、10℃2倍則

高温状態で信頼性が劣化するのは、MCUだけではなく、抵抗、コンデンサ、基板などの装置デバイス全てに及びます。装置内で消費電力が最も大きいMCUに高温影響が顕著に表れ、その異常症状が他のデバイスに比べ検出し易いだけです。

そこで、多くのデバイスから構成される装置を安全に運用するには、各デバイス最大定格の50%以下で使うのが良いとされ、これをディレーティング(derating)と言います。

また、周囲温度が10℃上がると、材料寿命が半分になる10℃2倍則(10℃半減則)もあります。

これらを考慮すると、人間同様IoT MCU装置も、十分な余裕がある適温で運用してこそ本来の機能を発揮し、かつ、装置寿命も保てると言えます。適温とは、参考資料1 Table 4.1 No.3の最も厳しいTj≤85℃の50%、つまり45℃~50℃位でしょうか?

筆者は、Windowsタスクマネージャーのパフォーマンスモニタで、半導体CPU/GPU温度が50℃を超えると、処理負荷を減らすかシャットダウンするようPC運用を心がけています。