低消費電力トレンド

MCU開発者は、消費電力に気を配りソフトウェア/ハードウェアを開発します。最近は、顧客の低電力指向が強くなり、全業界で電力不足対策がトレンドとなっています。

ドイツ、米国、日本、有力企業の電力不足対策記事を示し、低消費電力トレンドを活かしMCU開発すれば、顧客に好印象を与え他社差別化に寄与することを示します。

ドイツ)Volkswagen国内工場閉鎖示唆

ドイツ)フォルクスワーゲンの電力消費対策
ドイツ)フォルクスワーゲンの電力消費対策

2024年9月5日、ドイツ最大手の自動車企業Volkswagenが、国内工場閉鎖を検討しているニュースが発表されました。その主要因は、国内調達エネルギーコスト、つまり、電力コストの高騰です。

製造業の製品は、コストパフォーマンスで評価されます。同じパフォーマンスならより安い製品が顧客に売れるのは、当然です。

脱原発方針やロシアのウクライナ侵攻、中東情勢のため、ドイツ国内電力コストが従来比急上昇し、もはやドイツ製造では高いコスパ維持ができないのです。

ドイツ工場を閉鎖、代わりに電力コストの安い国外製造がドイツ)Volkswagenの取組みです。

米国)Microsoft向けスリーマイル原発再稼働

米国)Microsoftの電力対策
米国)Microsoftの電力対策

2024年9月21日、米大手電力コンステレーション・エナジーが、スリーマイル島原発1号機の再稼働を発表しました。Microsoft AIデータセンタへ、20年間電力安定供給のためです。

AIデータセンタ向け電力は、今後急増が予想されます。再生エネルギーやシェール天然ガス発電だけではAI電力需要にまね合わないため、米国各地で原発再稼働の検討が始まっています。

AI新電力需要に対し、既存(休止)設備の再利用で対処するのが米国)Microsoftの取組みです。

日本)NTT光電融合新デバイス開発

日本)光電融合デバイスによる電力対策(出典:NTT R&D Forum 2023)
日本)光電融合デバイスによる電力対策(出典:NTT R&D Forum 2023)

2024年9月20日、NTTは、AIデータセンタ消費電力増大の解決策として光回路と電気回路を組み合わせた、新しい光電融合デバイスの現在到達点と今後の展望公演を発表しました。

光電融合デバイスは、次世代ネットワーク:IOWNだけでなく、コンピューティングへも使えるとNTTは考えています。

AI新電力需要に対し、光電融合新技術で対処するのが日本)NTTの取組みです。

Summary:低消費電力トレンドとMCU開発

ドイツ、米国、日本、有力企業の電力不足の取組みを、最新記事からまとめました。

  • ドイツ)Volkswagen:ドイツ工場閉鎖、電力コストの安い国外拠点で代替
  • 米国)Microsoft:既存(休止)原発再稼働でAI新電力需要を補う
  • 日本)NTT:光電融合の新技術でネットワークとコンピューティング両方の電力不足解消を狙う

これら低消費電力トレンドは、MCU開発やその顧客へも影響を与えます。MCU単体の消費電力は僅かでも、IoT時代は数十億個ものMCUが稼働するからです。

開発MCU消費電力の少なさは、顧客に好印象を与え、他社差別化に大きく寄与します。

Afterword:低消費電力MCU開発

MCU IDEには、電力消費シミュレーションツールが付属しています。従来は、確認程度に使っていました。シミュレーションとはいえ、今後は顧客へのMCU低電力動作例を示すのに使えます。

また、新しい製造デバイスは、従来デバイスよりも高性能で低電力動作です。例えば、40nmプロセスのSTM32G0は、STM32F0/F1の半分以下の電力で高速動作します(弊社STM32G0xテンプレートP2参照)。MCU単体とシステム全体ハードコスト検討も必要ですが、評価価値はあります。

40nm汎用STM32G0シリーズとSTM32F0/F1シリーズの動作電力比較
40nm汎用STM32G0シリーズとSTM32F0/F1シリーズの動作電力比較

全ての弊社マイコンテンプレートは、低消費電力対策にSleep処理を組込み済みです。Sleep有無で消費電力がどの程度変わるか、コメント修正のみで実ハード確認ができます。

MCUプロトタイプ開発に最適、顧客への低電力動作アピールにも適すマイコンテンプレート、ご活用ください。


2つのTrustZone開発方法

セキュアマネジャ利用対2領域開発
セキュアマネジャ利用対2領域開発

STマイクロ)STM32H5とSTM32U5は、どちらもTrustZone対応Cortex-M33マイコンです。しかし、そのTrustZone開発方法は、STM32H5がSecure Manager利用、STM32U5がSecure/Non Secureの2領域開発など大きく異なります。

本稿は、これら2つのTrustZone開発方法の概要と特質を説明します。どちらが一般のMCU開発者向けかも示します。詳細は、STM32H5はコチラ、STM32U5はコチラのウェビナー資料を参照ください。

STM32H5とSTM32U5

STM32 TrustZome対応MCUポートフォリオ(STM32H5ウェビナー資料P3を編集)
STM32 TrustZome対応MCUポートフォリオ(STM32H5ウェビナー資料P3を編集)

STマイクロのTrustZone対応Cortex-M33コアマイコンファミリは、現在上図の4種類あります。最高動作周波数や内蔵周辺回路が想定アプリケーションにより異なりますが、どれもTrustZone対応のセキュアマイコンです。

※TrustZone基本は、コチラの投稿参照。

Cortex-M33マイコンのセキュリティ機能

STM32 Cortex-M33ハードウェアセキュリティ機能一覧(STM32U5ウェビナー資料P36を編集)
STM32 Cortex-M33ハードウェアセキュリティ機能一覧(STM32U5ウェビナー資料P36を編集)

4種セキュアマイコンのハードウェアセキュリティ機能一覧が上図です。基本機能のTrustZoneやSecure Memory利用セキュアブートは、4種マイコン共に持っています。

これらセキュリティ機能一覧から、必要性に応じて開発ユーザアプリへセキュリティ機能を追加することをセキュリティ開発、その中心がTrustZoneなのでTrustZone開発と言います。

※Secure Memory利用セキュアブートは、コチラの投稿参照。

STM32U5セキュリティ開発方法

マイコンセキュリティの目的は、ハッカー攻撃などによる開発ソフトウェアの改ざん防御です。従って、想定アプリにより多少の違いがあっても、基本となるセキュリティの開発方法は、マイコンにかかわらず同じと考えるのが普通です。

事実、STM32U5やSTM32L5、STM32WBAは、以下の同じセキュリティ開発方法です。

STM32U5セキュリティ開発方法(STM32U5ウェビナー資料P52を編集)
STM32U5セキュリティ開発方法(STM32U5ウェビナー資料P52を編集)

つまり、TrustZone基本投稿で示したように、マイコンハードウェアをSecure領域とNon Secure(Normalと図示)領域に分離、Non Secureソフトウェア(Firmwareと図示)のSecure領域直接アクセス禁止により改ざん防御を行います。

この方法は、Secure領域とNon Secure領域の2プロジェクト開発が必須です。

具体的な2領域分割や領域間アクセス方法などは、STM32U5ウェビナー資料3章に記載されています。

筆者は、開発当初からの2プロジェクト開発は、困難と考えています。最初は領域を分けず一般的な1プロジェクトアプリを開発し、動作確認後にSecure/Non Secureの2プロジェクトへ分離する手順になると思います。

STM32H5セキュリティ開発方法

STM32H5のセキュリティ開発方法は、前章とかなり異なります。

STM32H5セキュリティ機能は、STマイクロがバイナリ形式でIPを提供し、これをセキュア領域へ保存します。MCU開発者は、このIPセキュリティ機能を、Arm PSA API互換のAPI経由で、Non Secure領域のユーザアプリから利用します。

STM32H5セキュリティ開発方法(STM32H5ウェビナー資料P9を編集)
STM32H5セキュリティ開発方法(STM32H5ウェビナー資料P9を編集)

簡単に言うと、Non Secure領域の動作アプリに、必要に応じてセキュリティ機能APIを追加すればセキュリティ開発ができます。セキュア領域のセキュリティ機能は、ST提供IPのためユーザ開発不要です。

このSTM32Trust TEE Secure Managerが使えるのは、現在STM32H5のみです。しかし、今後増えるそうです。

具体的なSecure Manager利用方法や評価ボードなどが、STM32H5ウェビナー資料3章に記載されています。

筆者は、このSecure Manager利用の方が、前章の2プロジェクト開発方法よりもシンプル、かつ、セキュリティ本体コーディングも不要なため優れていると思います。PSA API利用ソフトのSTマイコン横展開が、現在STM32H5に限られるのは残念です。逆に、他ベンダマイコンへの流用は、Arm PAS API互換のため容易かもしれません。

Summary:2つのTrustZone開発方法

セキュアマネジャ利用対2領域開発
セキュアマネジャ利用対2領域開発

STマイクロのTrustZone対応Cortex-M33マイコンSTM32H5とSTM32U5の2セキュリティ開発方法と特質を示しました。

セキュリティ開発は、その用語や費用対効果などが、一般のMCU開発者に判り難い領域です。また、Cortex-M33のTrustZone理解も必要です。

このTrustZoneに対し正攻法のセキュリティ開発方法は、STM32U5ウェビナー資料方法です。STM32L5やSTM32WBAへの開発セキュリティソフト横展開も可能です。

STM32H5ウェビナー資料方法は、Arm PAS API互換APIを利用し、かつ、セキュリティソフト開発を簡素化できるなど、正攻法比、優れた方法だと思います。

Afterword:どちらが一般MCU開発者向けか?

Secure Managerは、無償利用できます。また、RTOS以外のベアメタル開発にも使えます。さらに、STM32H5ウェビナー資料P6右側の暗号化エンジンなど全12セキュリティ機能も提供します。左側が、このセキュリティ開発方法の優位性を示しています。

最適STM32セキュリティ開発を実現するセキュアマネジャ(STM32H5ウェビナー資料P6を編集)
最適STM32セキュリティ開発を実現するセキュアマネジャ(STM32H5ウェビナー資料P6を編集)

STマイクロ以外のベンダでも、無償IPとArm PAS API互換のセキュリティ開発が多くなるかもしれません。一般のMCU開発者にとって、正攻法のセキュリティ開発は、障壁がかなり高いからです。


Arm TrustZone【組込み開発 基本のキ】

MCUセキュリティの2回目は、Arm TrustZoneについて解説します。前稿解説のセキュアブートは、MCU起動ソフトウェアの信頼検証を行います。Arm TrustZoneは、MCU実行中ソフトウェアの改ざん防御技術です。

TrustZoneもベンダやMCU毎にその実装が大きく異なりますので、TrustZone基本知識を解り易く説明後、実装例を示します。

※TrustZoneはセキュアブートも包含します。本稿はセキュアブート以外の内容を解説し、Summaryでまとめます。

Arm TrustZone基本

Arm TrustZone基本
Arm TrustZone基本

セキュアブート同様、Arm TrustZone(以下TrustZone)も専用ハードウェアで実行中MCUソフトウェアの改ざん防御やセキュリティ確保を行います。

TrustZoneは、気密性の高いデータ保存や重要周辺回路、処理ソフトウェアを保存する「セキュア領域」と、それ以外の「ノンセキュア領域」にMCUハードウェアを分離します。そして、ノンセキュア領域のソフトウェアは、予め決めた手続きに従わないと、セキュア領域へのアクセスができません。

つまり、ノンセキュアソフトウェアのセキュア領域直接アクセスが禁止です。これにより、セキュア領域の改ざん防御とセキュリティを確保します。

セキュア領域は、暗号鍵や機密データ、割込みハンドラなどの重要ソフトウェアを保存します。
ノンセキュア領域は、通常の周辺回路やアプリケーションソフトウェアを保存します。

TrustZoneセキュリティ違反検出時は、セキュリティ例外処理を実行します。この処理内容は、システム設計や実装により大きく異なります。例えば、MCU動作停止やセーフモードでの最小機能動作、ネットワーク経由での違反内容通知などがあります。

このようにTrustZoneは、様々なセキュリティレベルに柔軟に対応可能です。TrustZone対応Arm Cortex-Mコア一覧が下記です。Cortex-M33など新しい設計のArmv8-M MCUコアは、TrustZone内蔵です。

TrustZone対応Arm Cortex-M_Processor_Comparison_Tableに加筆(出典:ARM)
TrustZone対応Arm Cortex-M_Processor_Comparison_Tableに加筆(出典:ARM)

※Cortex-M7は、MPUで設計も古いためTrustZoneなし。TrustZone MPUは、Cortex-A35など。

TrustZone実装例

前章でTrustZoneの基本を解説しました。しかし、実際のTrustZoneは、もっと複雑です。

例えば、STマイクロ)STM32L5/U5 MCU(Cortex-M33コア)のTrustZoneウェビナー資料が、コチラからダウンロードできます。

I2C/SPIへのハッカー攻撃例(P10)とその防御(P11)、TrustZone分離例(P20)、セキュリティ違反検出方法(P21~23)、TrustZone初期設定フロー(P29)などが示されています。

また、TrustZoneにJTAGポート無効化やMCUパッケージ開封検出(タンパ検出)などの複数セキュリティ機能を重ね、セキュリティレベルを上げていることも判ります(P17)。

複数セキュリティを重ねセキュリティレベルを上げる(出典:STマイクロSTM32L5/U5 MCU TrustZoneウェビナー資料)
複数セキュリティを重ねセキュリティレベルを上げる(出典:STマイクロSTM32L5/U5 MCU TrustZoneウェビナー資料)

この実装例は、Secure User Memory(P15)格納の暗号鍵を使ってセキュアブート後、I2Cデバイス制御とSPI無線通信制御を重要ソフトウェアセキュア領域へ格納、ハッカー攻撃などセキュリティ違反検出時でも、これらセキュアソフトウェア処理は継続、かつ、セキュリティ違反検出内容を外部無線通知するMCUアプリだと推測します。

※ウェビナー資料でファームウェアと記述の箇所は、本稿のソフトウェアと解釈してください。

TrustZone開発の難しさ

TrustZoneを使うMCU開発は、通常開発に加え、

  • 想定攻撃、脅威は何か
  • セキュリティ違反の例外処理をどうするか
  • 例外処理デバッグはどう行うか
  • セキュア領域の重要ソフトウェア、周辺回路は何か
  • セキュア/ノンセキュア分離アプリの同時開発

など、多くの課題があります。また、セキュア/ノンセキュア分離前の通常アプリにバグが無いことも必要です。さらに、セキュリティ対策効果とリスク、開発コストに対し、費用対効果を顧客と相談する必要もあります。

TrustZone MCU開発は、高度なスキルが必要になると思います。

Summary:Arm TrustZone基本知識

組込み開発基本のキとして、MCUハードウェアをセキュア領域とノンセキュア領域に分離し、ノンセキュアソフトウェアのセキュア領域直接アクセスを禁止することで、実行中のセキュア領域ソフトウェア改ざん防御とセキュリティ確保を行うArm TrustZoneの基本を示しました。

TrustZoneセキュリティ違反検出時は、セキュリティ例外処理を実行します。この例外処理内容は、システム設計や実装により大きく異なります。このセキュリティレベル多様性理解には、TrustZone基本知識が重要です。

前稿解説セキュアブートは、MCU起動ソフトウェア信頼性の検証を行います。セキュアブートとTrustZoneの併用で、起動/実行中のソフトウェア改ざん防御とセキュリティ確保ができます。TrustZoneが、セキュアブートを包含する理由がこれです。

Arm TrsutZomeまとめ
Arm TrsutZomeまとめ

Afterword1:自転車ロードレース競技中のハッキング

ワイヤレス技術利用制御系の潜在的脆弱性攻撃例が、コチラにあります。350ドル程度のソフトウェア無線機HackRFやRaspberry Piなどでも攻撃可能だそうです。本稿のTrustZone実装例が対策に使われたのかもしれません。ハッキング検出時でも、簡単に動作停止できない(しない)事例です。

Afterword2:MCUセキュリティまとめ

セキュアブートとTrustZoneから、MCUセキュリティを俯瞰したのが下記です。

  • 攻撃対象ソフトをRoot of Trust(RoT)ハードで守るのがMCUセキュリティ
  • RoTハードでセキュリティ違反検出、例外処理ソフトで違反処理
  • セキュリティ実装はアプリや運用で大きく変わる。開発費用対効果の検討必須
  • Armv8-M以後の新しいMCUコアにRoT TrustZone内蔵

費用対効果には、セキュリティ全般知識も必要です。これは、セキュリティ実装開発とは別次元の難しい課題です。対策は、AI PCを使ったセキュリティコンサルタント育成などでしょうか?

ブログ右上検索窓へ「基本のキ」と入力し検索すると、様々なMCU開発者向け基本知識が得られます。ご活用ください。


MCUセキュアブート【組込み開発 基本のキ】

ランサムウェア攻撃による企業活動停止やWindowsブルースクリーン大規模障害など、重大セキュリティインシデントが急増中です。MCU開発者にとっても、他人事ではありません。

そこで、MCUセキュリティの基礎、MCUセキュアブートとArm TrustZoneを2回に分けて解説します。セキュアブート編が本稿です。

MCUセキュリティが判り難い原因は、ベンダ、MCU毎にセキュリティレベルや実装が大きく異なるからです。そこで、個別セキュリティの前に、基本知識としてMCUセキュアブート(本稿)とArm TrustZone(次稿)を解り易く示し、その後、実装例を示す2段構えの方法で解説します。

MCUセキュリティ背景

MCUソフトウェアは、悪意を持つ第3者による改ざんやウイルス感染などで書き換わる可能性があります。一方、改ざんの可能性が無く安全なのは、MCUハードウェアです。

従来のMCU開発は、サイバー攻撃などのソフトウェア書き換えは、想定外でした。

しかし、PCセキュリティトラブルやランサムウェア被害などが増え、MCUも攻撃対象となりました。特にIoT MCUは、ネットにつながるため防御が必須です。この防御全般がIoT MCUセキュリティ(以下MCUセキュリティ)です。

セキュリティリスクを下げるには、開発コストが上がる。MCU開発者は、費用対効果バランスも考える必要がある。
セキュリティリスクを下げるには、開発コストが上がる。MCU開発者は、費用対効果バランスも考える必要がある。

今後のMCU開発では、MCUセキュリティ対策が望まれます。しかし、ソフトウェアのみでは対処できないため、セキュリティレベルに応じた追加ハードウェアが必要です。また、セキュリティオーバーヘッドのため、通常のセキュリティ無しソフトウェアに比べ処理能力も低下します。

MCUセキュリティ開発は費用対効果、つまり、これら追加効果とセキュリティリスク、セキュリティ開発コストのバランスを、どう解決するかがポイントです。

実装セキュリティがベンダやMCU毎に異なるのは、このポイントにバラツキがあるためです。顧客が、起きるか起きないか判らないMCUセキュリティインシデントに対し、どの程度開発コストを負担するか不明なのと同じです。

MCUセキュアブート基本

セキュアブート解説の前に、通常のMCUブートを簡単に説明します。

通常のMCUブートは、リセット→動作クロック設定→RAMゼロクリア→RAM初期値設定などを経て、Flash格納ユーザアプリケーションを起動します。格納ソフトウェアに、ハッカー攻撃などの改ざんが無いことが大前提です。

関連投稿3章に通常ブート説明。

MCUセキュアブートと通常ブート
MCUセキュアブートと通常ブート

一方セキュアブートでは、最初にFlash格納ソフトウェアに改ざんが無いことを、暗号化技術を使って検証します。このため暗号化アクセラレータや暗号鍵の専用ストレージが必要になります。

検証失敗時は、動作停止、またはリカバリーモードへ移行し、検証成功時のみ通常ブートを行います。つまり、起動ソフトウェアの信頼検証をハードウェアのみで行うのが、MCUセキュアブートです。

通常ブートと比べると、事前に改ざんソフトウェアの実行が防げますが、検証時間が余分に掛かります。このセキュアブートハードウェアをRoot of Trustと呼び、専用ハードウェアとしてMCUに内蔵されます。例えば、Arm Cortex-M33コアMCUなどがこれに相当します。

Root of Trust(RoT)は、最も基本的なセキュリティ領域の保証概念。ここが信頼できることを前提にセキュリティが構築されるため、信頼根と呼ばれる。

高度車載セキュアブート実装例

前章でMCUセキュアブートの基本を解説しました。しかし、実際のセキュアブートは、もっと複雑です。

例えば、ルネサス車載MCU RH850セキュアブートが、コチラです。

高度なセキュリティレベルが求められる車載MCUのセキュアブート例で、豊富な図を使って解説しています。セキュリティ専門用語も多いため、用語や略称集も添付されています。

しかし、前章基本を理解していれば、高度車載MCUセキュアブートでも掲載図だけで概ね把握できると思います。

車載ソフトウェアイメージ検証(出典:ルネサスRH850セキュアブート)
車載ソフトウェアイメージ検証(出典:ルネサスRH850セキュアブート)

Summary:MCUセキュアブート基本知識

MCUセキュリティの実装は、セキュリティ対策効果とリスク、その開発コストにより大きく変わります。Root of Trustを持つCortex-M33コアの汎用MCUでさえ、アプリケーションや顧客要求に応じ実装セキュリティは変わります。

例えばセキュアブートは、MCU起動時処理のため常時運用など再起動が少ない場合は効果も期待薄です。

MCU開発者のセキュリティ実装を困難にする原因の1つが、この多様性です。

そこで、組込み開発基本のキを示す本稿は、MCUセキュリティ基本知識として、起動時ソフトウェア信頼検証をハードウェアのみで行うMCUセキュアブートと、そのセキュアブート実現基盤のRoot of Trustを解説しました。

基本知識があれば、様々なセキュリティ実装開発にも対応できるからです。

次回は、MCU運用中セキュリティを確保するArm TrustZoneを解説します。

Afterword:Windowsブルースクリーン記事

Windowsブルースクリーン記事や解説が、ITmediaにまとまっています。業務の合間などリフレッシュを兼ねて目を通してはいかがでしょうか?


embedded world 2024 MCU要約

embedded world 2024(出典:記事)
embedded world 2024(出典:記事)

欧州最大規模の組み込み技術展示会「embedded world 2024」で見た最新トレンド記事(全14ページ)が、2024年7月30日、EE Times Japanに掲載されました。MCU/MPU関連部分を抜粋要約し、表形式にまとめました。

Summary:embedded world 2024 MCU/MPU関連要約

embedded world 2024概要:ヨーロッパ最大組込み技術イベント展示会。2024年4月9日から11日までドイツ)ニュルンベルク開催。50カ国から1,100社出展、80カ国から32,000人来場。
ハイライト:エッジAI製品とソリューションの低消費電力化、小型化、高性能化に注目。

MCU/MPUベンダ 発表内容
Infineon
(旧Cypress)
AI搭載PSOC Edge E8シリーズ(Cortex-M55+M33+NPU)発表とデモ
音声、オーディオセンシング、MLベースウェイクアップ、ビジョンベースの位置検出、顔やオブジェクト認識など高度HMI機能に対応
Armセキュリティ基準「PSA Level 4」を満たすセキュアブートなどセキュリティ機能搭載MCU
STマイクロ エッジAI機能、モーター制御、モーター異常検出リファレンス設計「EVLSPIN32G4-ACT」展示とデモ
エッジAIにかかわるハード/ソフト全てをワンストップ提供がSTの強み
NXP ワイヤレスMCU Wシリーズ発表(±0.5m精度測距可能)
Cortex-M3ベース専用2.4GHz無線サブシステム搭載(Matter、Zigbee、Bluetooth、Threadプロトコルサポート)
ルネサス 低消費電力、コスト重視アプリ対応RA)RA0シリーズ(Cortex-M23)発表
動作電圧1.6〜5.5V、レベルシフター、レギュレーター不要
アクティブ84.3μA/MHz、スリープ0.82mA、スタンバイ0.2μA、スタンバイ復帰1.6μs(競合比7分の1)
ラズパイ ソニーIMX500搭載AIカメラモジュール2024年夏頃発売予定
ラズパイZero 2 Wと接続し、物体認識や身体セグメンテーションデモ

Afterword:次回8月23日金曜投稿

次回金曜投稿は、8月23日金曜にします。連日35℃を超える猛暑と多湿のため、仕事効率は最悪です。そこで、来週と来来週、夏休みを2週間頂きブログ更新は緊急性が無い限り23日まで休みます<(_ _)>。

しかし、弊社MCUテンプレート販売は、24時間365日無休です。特にHAL利用のRAベアメタルテンプレートは、RA0シリーズ開発にも使えると思います。オーダーお待ちしております。


エッジ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ということです。


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過渡期でも、ご自分自身で獲得した基礎の重要性は、変わらないと筆者は考えます。


MCU AIトレーニング資料

STマイクロの日本語トレーニング資料(組込みAI編)
STマイクロの日本語トレーニング資料(組込みAI編)

STマイクロの日本語トレーニングサイト内に、9個の組込みAI資料を見つけたので紹介します。日本語のMCU AI資料は嬉しいです。STマイクロへのログインが必要ですが、どなたでも閲覧(PDFダウンロード)可能です。

MCU AIトレーニング資料8個の内容

トレーニング資料8個の内容です。1~8の内容に加えて10月3日に行われたウェビナー資料:コンピュータ・ビジョン編の計9個MCU AI資料が公開中です。

MCU AIトレーニング資料8個の内容
MCU AIトレーニング資料8個の内容

AI解説(Page 2)記載の8トレーニング資料の説明範囲:「AI基本概念には触れるが、AI、深層学習、Pythonプログラミングの詳細解説はしない」は、Edge AI/MLツールを利用しMCU開発を行う者に最適な内容だと思います(MCU AI現状と対策、1章:Edge MCI AI課題数参照)。

1~8資料は、読者のお好きな時間に読んでください。

本稿は、9個目のウェビナー資料:コンピュータ・ビジョン編から筆者印象に残った点をピックアップします。

コンピュータ・ビジョン編もくじ

コンピュータ・ビジョン編もくじ
コンピュータ・ビジョン編もくじ

ピックアップしたコンピュータ・ビジョン編のもくじです。コンピュータ・ビジョンとは、MCUが、AIを使って画像、動画、その他入力データから目的とする情報を抽出する手法です。

印象点が以下です。

  • Edge AI/ML MCU(Tiny ML Devices)は、2030年に25億台と予測(P4)
  • Edge AI/ML MCUは、クラウド接続無しで低レイテンシ(P9)
  • STM32MCUのAI開発ツールは、STM32Cube.AIとNanoEdgeStudioの2種類あり(P12)
  • 主要STM32汎用MCUは、AI開発ツール2種類両方が使える(P13)
  • STM32Cube.AIは、深層学習アプリケーションを簡単実現(P18)
    • ※NanoEdgeStudioは、前回投稿に記載中
    • ※深層学習とは、ニューラルネットワークによる機械学習手法

つまり、MCU開発者は、2030年の数年前までに、ソフトウェアで他社差別化できるEdge AI/ML(組込みAI)知識獲得と開発が必要と言えます。

Summary:STM32Cube.AIとNanoEdgeStudio差は継続調査

Edge AI/ML MCUが、クラウド接続不要でスタンドアロン動作であることは、大歓迎です。RTOSや高度セキュリティTrustZoneなどのネットワーク技術の必要性が低いからです。

従って、Edge AI/ML MCU開発は、ベアメタル開発の延長線上にあると言えます。25億台/2030年予測の内、Edge AI/ML MCU比率がどの程度かは不明です。しかし、RTOS/TrustZone MCU比率より多いことを筆者は期待します。

前回投稿のMCU AI開発ツール:NanoEdgeStudioと本稿のSTM32Cube.AIの特性差が何かは、現在不明です。もう少しAI/ML知識を獲得すれば、判ってくると思います。継続調査項目とします。

Afterword:判り難さは、馴染み無い用語起因

RTOS/TrustZone MCUよりもEdge AI/ML MCUの方が開発簡単とは言いません。

しかし、ベアメタル開発に近いのはEdge AI/ML MCU開発です。IoT MCUに必須なRTOS/TrustZoneは、AI/MLよりも馴染みが薄い用語が多く、しかも開発にその詳細理解も必須です。

一方、AI/MLは、AI解説編が示すようにAI/ML詳細理解よりMCU AIツールの効率的活用で十分開発できそうなことも理由です。

※望むらくは、AI/ML同様、RTOS/TrustZone開発支援ツールがあると嬉しいですね!

この意味でSTマイクロの組込みAI日本語資料は、MCU開発者に非常に役立ちます。是非一読(何度も読むこと)をお勧めします。馴染み無いAI/ML用語が、だんだん身近なります!

10月2日発表のWindows AI/CopilotもMCU AI/ML普及の追い風になるハズです。