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製品開発に役立ててください。


効果的MCU学習と開発方法

MCU開発者は、常に新しい事柄を学習しつつ、同時に開発成果の出力が求められます。MCU開発者の学習と開発の参考になる2記事を見つけたので紹介します。

  1. ソフトウェア開発者が「学習」について知っておくべき10のこと、2023年12月12日
  2. 時間外労働と生産性低下の意外な関係、2023年12月11日

※英語版は、参照。

MCU学習と開発の参考になる2記事
MCU学習と開発の参考になる2記事

AI要約が望ましいのですが、無いので筆者が要約します。是非、ご自身で読んでください。

参考記事1要約:学習10のこと

人間記憶の仕組み、学習の仕組み、初心者とエキスパートの違いを示し、ソフトウェア開発者が学習を改善するための10個の事柄(#1~#10)解説。

筆者が特に印象に残った内容が、下記。

  1. 多くのコードを読み「理解」が、プログラミング熟練度を向上(#3)
  2. 1日の学習時間は、90分が限度(#5)
  3. 問題・課題のトライ順序を変える(ランダム化)のは解決に効果的(#5)
  4. エキスパートが初心者の目で見られなくなる「エキスパート盲点」は多い(#8)
  5. 休憩や散歩でトライ戦略を再検後、やり直す(#10)

参考記事2要約:意外な関係

欧米と日本、13000従業員の労働時間と生産性の調査結果。開発作業と生産性の関係説明。

印象に残った内容が、下記。

  1. 休憩無し従業員は、燃え尽き症候群の可能性が1.7倍(休憩時間と生産性)
  2. 理想的集中時間は、1日4時間。最長会議時間は、2時間。(仕事に集中できる時間)

know-how をリビルド

英語の「know-how」から来た外来語、日本語カタカナ表記「ノウハウ」は、専門的な知識や技術、手法という意味です。

知的財産の1つのため、日本発の公開例は少ない気がします。しかし、海外発know-howは、有用情報が多数あります。和訳が無くても、Microsoft Word翻訳やブラウザ翻訳を使えば、英文know-howが手軽に日本語化できます。

MCU開発者は、これら know-how活用をお勧めします。

但し、自分なりの解釈や理解を加えることが重要だと思います。これは、参考記事1が示したプログラミング熟練度を向上させるには、多くのコードを読み、その「理解」が大切なことと全く同じです。

つまり、 万人向け know-howをガイドとし、自分の頭で考えて理解する、これが、本当の学習や習得になるからです。ソフトウェア開発者的に言うと、「リビルド」です。

Summary:効果的MCU学習と開発方法

効果的MCU学習と開発には集中と多様性が必要
効果的MCU学習と開発には集中と多様性が必要

know-howの2記事を参考に、筆者がお勧めする効果的なMCU学習と開発方法をまとめます。

MCU開発者には、集中と多様性が必要です。

限られた集中時間(90分~4時間)に最大開発成果を上げるには、回り道のようでも1日の作業時間を、プログラミングとその他作業に分離して作業すべきです。

プログラミングも課題を複数に分け、壁に遭遇した場合には、そこに拘らず別課題プログラミングへ変えるなどが効果的です。課題への集中と、拘らずに変えることができる多様性が、効果的MCU開発になります。

多様性具体例の1つに、MCUベンダのサンプルコードと評価ボード活用があります。

自社ハードウェアが手元にある場合でも、逆にない場合はなおさら、評価ボード上で類似サンプルコードを動かすと、柔軟で多様な開発視点が得られます。これにより、例えば、隠し製品機能などの実装などもありえるでしょう。

その他の作業には、MCU関連の新しい学習なども含みます。

これら作業も、休憩やコーヒーブレイク、散歩などを挟みつつ様々な内容に分割しましょう。気分転換効果が期待できます。隠し製品機能などのアイデアも生まれ易いでしょう。

Afterword:盲点解決:サンプルコードと評価ボード

紹介した2つのKnow-how記事は、ソフトウェア開発者作業時間の科学的分析結果に基づいています。

MCU技術資料は、エキスパート盲点だらけです。内容が判り難いのは、読者のせいではありません。紹介Know-howやAI Copilotなどが、効率的な盲点解決手段を与えるでしょう。

一方、自ら気づき難い開発者のソフトウェア盲点やバグ解決手段が、サンプルコードと評価ボードです。

サンプルコードと評価ボードは開発者自身のソフトウェア盲点を浮き彫りにする
サンプルコードと評価ボードは開発者自身のソフトウェア盲点を浮き彫りにする

確実に動作するサンプルコードと評価ボードは、自分のソフトウェア盲点を浮き彫りにします。また、頭の中だけでなく、具体的なソフトウェア動作を目視することで、楽しく開発が続けられます。

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日(金)投稿予定です。

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


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トレーニング資料

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普及の追い風になるハズです。


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セミナを活発化します。是非参加して、基礎知識を獲得しましょう!


STM32C0で最新32ビットMCU開発短期習得

STM32 Nucleoボード一覧(1M Flash以下 出展:STM32 MCU Developer Zone)
STM32 Nucleoボード一覧(1M Flash以下 出展:STM32 MCU Developer Zone)

STマイクロの1MバイトまでのFlash搭載STM32 Nucleo評価ボード一覧です(STM32 MCU Developer Zone掲載図から抜粋)。紺色のMainstream:汎用MCU評価ボードが多いことが判ります。

今回は、2023年3月発売の評価ボード:NUCLEO-C031C6を使って、最新Cortex-M系32ビットMCU開発を短期習得する方法を示します。

1. 短期習得に適すSTM32C0シリーズ

この評価ボードのMCU:STM32C031C6(Cortex-M0+/48MHz、Flash/32KB、RAM/12KB、LQFP48)は、STマイクロが8/16ビットMCU置換えを狙った新しい32ビットSTM32C0シリーズです。開発のし易さ、価格の低さ、入手性の良さが特徴です。

STM32C0シリーズの「C」は、Compact、またはCost-effectiveのCを表していると思います。同じLQFP48のSTM32G0シリーズとブロッグ図を比べると差分が判ります(「G」は、多分Generalを表す)。

STM32C031とSTM32G081の比較
STM32C031とSTM32G081の比較

どちらもCortex-M0+コア採用の汎用MCUです。違いは、STM32C0は、アナログや通信などの内蔵周辺回路、Flash/RAM容量を、8/16ビットMCU置換目的に必要最小限にし、G0比コストダウンを図っていることです。

つまり、STM32C0は、STM32汎用MCUシリーズの中で、最もBasicな周辺回路のみを備えたシリーズです。この周辺回路の少なさが、MCU開発をシンプルにし、短期習得に適す理由です。

2. 入手性・開発拡張性良いNUCLEO-C031C6評価ボード

NUCLEO-C031C6
NUCLEO-C031C6

STM32C0搭載の評価ボードNUCLEO-C031C6は、低価格で入手性が良く、ボード上にユーザLED/SW、拡張シールド接続用Arduinoコネクタ、デバッガ(ST-LINK/V2-1)が実装済みです。

関連投稿:Arduinoコネクタが評価ボードに多い理由

PCとUSB接続すれば、MCUプログラミングとデバッグ、PC Tera-Termで評価ボードとのVirtual-COM通信が可能です。Virtual-COMは、MCUでの様々な処理結果をPCで直接確認できるので便利です。

NUCLEO-C031C6が、最初の図で多くの汎用MCU評価ボードの一番下(Basic)であることもポイントです。

NUCLEO-C031C6で開発したHAL API利用ユーザソフトウェアは、MCU差に依存しない移植性の高さがありますので、処理性能不足時は、より上側の高性能ボードへユーザソフトウェア載せ替えも容易な訳です。

関連投稿:HALとMCUソフトウェア開発

3. サンプルコードが多いNUCLEO-C031C6評価ボード

MCUソフトウェア開発には、慣れが必要です。この慣れには、STM32C0シリーズサンプルコードを読み、かつ動作させるのが近道です。

NUCLEO-C031C6は、全73個のサンプルコード動作環境として使えます(2023年9月現在)。これは、他のSTM32C0評価ボードと比べ格段の多さです。

お勧めは、下図に示すHAL API利用の16個サンプルコードです。この16個HALサンプルコードだけを理解しても、STM32MCU開発初心者卒業と言えると思います。

NUCLEO-C031C6で動作するHAL APIサンプルコード(出展:AN5892)
NUCLEO-C031C6で動作するHAL APIサンプルコード(出展:AN5892)

初めはサンプルコードを詳しく理解する必要はありません。初期設定と無限ループの2つに分けて動作させれば、コード内容は自ずと判ってきます。ボード搭載デバッガは、ブレークポイント設定やRAM内容表示もできるので便利です。

関連投稿:組込み処理の基本のキ

4. 情報整理に役立つSTM32C0オンライントレーニング

STM32C0オンライントレーニングは、MCU開発情報の整理・習得確認に便利です。

但し、初めからこれらトレーニング資料を読むことはお勧めしません。おぼろげながらでも、開発全体像が見えた段階で、各資料読むと理解・整理が進むからです。前章サンプルコードを試した後がお勧めです。

サンプルコードやトレーニング資料は、エキスパートが作成します。残念ながらエキスパート作成資料は、初めての方には難解だと思います。

MCU習得も「習うより慣れろ」が当てはまります。案外簡単なことでも文章では難解さが強調されます。評価ボードとサンプルコードがあれば、とにかく動作が目視確認できます。

トレーニング資料は、動作目視後に頭の中を整理し、習得度を確認する際に便利と言えます。

Summary:STM32C0で最新32ビットMCU開発の短期習得

本稿は、最新汎用STM32C0を使って、回り道や障壁がなるべく低くなるMCU開発習得方法を示しました。

  1. 8/16ビット置換え用周辺回路厳選の低価格32ビットMCU:STM32C0
  2. デバッガとユーザLED/SW実装で入手性良いNUCLEO-C031C6評価ボード
  3. NUCLEO-C031C6で即実行できる多数の周辺回路サンプルコード
  4. 習得・情報整理に役立つSTM32C0オンライントレーニング

これらSTM32C0シリーズ特徴を持つ4つの開発環境を使うと、個人でも最新STマイクロ32ビットMCU開発の短期習得が簡単にできます。

Afterword:個人レベルスキル向上で老化日本対策

老化は、国レベルでも進行します。日本の少子・高齢化がもたらす2040年問題。全体同調意識の強い老化日本では、その対策は期待できません。

残る策は、個人レベルのスキル向上です。IoT MCU開発スキルは、激変技術世界でも生き残る有力策の1つと思います。


HALとMCUソフトウェア開発

HAL:Hardware Abstraction Layer APIを使えば「MCUデバイスに依存しないソフトウェア開発」ができる。そこで、汎用MCUでプロトタイプソフトウェアを作り製品MCUを選択。これが、前投稿でした。
主題は、製品MCU選択方法です。

今回は、この方法の基になる「MCUデバイスに依存しないソフトウェア開発ができる」部分を、もっと具体的に説明します。

MCUソフトウェア開発の鍵HAL API

前投稿最後に示したSTM32デバイスとユーザアプリケーション移植性の両方を満たすHALスタック図を具体化します。

弊社STマイクロ関連テンプレートに採用したSTM32F0/F1/G0/G4デバイスとNucleo評価ボード、一般的なベアメタルソフトウェア開発を想定し作り直したHALスタック図が、下図です。UtilityやMiddlewareは使いませんので空白にしています。

User ApplicationとHAL間は、HALドライバを用います。例として、GPIO接続のLEDをトグル出力するHAL API関数:HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin)で説明します。

ベアメタルソフトウェア開発のHALスタック図
ベアメタルソフトウェア開発のHALスタック図

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin)

STマイクロのHALドライバは、接頭語に必ずHAL_が付きます。ソース上も判別し易いです。

HAL_GPIO_TogglePin(xPort, yPin)は、MCU Port名xのPin番号yを使うGPIOに対して、トグル(HighからLow、またはLowからHigh)出力するドライバ関数です。

例えば、STM32G0評価ボード:Nucleo-G071RB実装ユーザLED:LD4は、PA5接続です。トグル出力は下記です。

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)   //物理GPIOポートA、5番ピンをトグル出力

STM32G4評価ボード:Nucleo-G474RE実装済みユーザLED:LD2も、同じくPA5接続ですので、全く同じHALソフトウェア記述で、ユーザLD2のトグル出力ができます。

Nucleo評価ボードBSP

Nucleo-G071RBとNucleo-G474REは、どちらも64ピンMCUパッケージで、たまたま同じ物理記述ポート名とピン番号が、ユーザLEDに接続済みでした。

しかし、一般的には開発MCUや評価ボードで異なるポートとピンへユーザLEDが接続されます。

そこで、物理記述GPIOAやGPIO_PIN_5と、評価ボードの論理記述LD2やLD4を結び付けるのが、BSP:Board Support Packageです。この結び付けにより、異なる物理記述ポート、ピン番であっても、同じ論理記述のDemonstrationやUser ApplicationでLEDを動作させることが可能になります。

具体例で示すとNucleo-G071RBのBSPは、STM32CubeIDEのmain.hに展開され、LD4関連は下記です。

#define LD4_GPIO_Port  GPIOA  //LD4_GPIO_Portを物理GPIOポートAと定義
#define LD4_Pin  GPIO_PIN_5     //LD4_Pinを物理5番ピンと定義

Nucleo-G474REのBSPは、LD2関連main.hが下記です。

#define LD2_GPIO_Port  GPIOA  // LD2_GPIO_Portを物理GPIOポートAと定義
#define LD2_Pin  GPIO_PIN_5     // LD2_Pinを物理5番ピンと定義

LD2とLD4の部分が異なります。BPSは、評価ボードのハードウェア毎に異なります。

各評価ボードのソースコードを読む時は、LD2やLD4と論理記述した方が、物理記述のGPIOAやGPIO_PIN_5よりも判り易いため、これらdefine文を使います。

評価ボード非依存ソフトウェアテクニック

評価ボード単位のソースコードを読む時は、実装中のLD2やLD4と論理記述した方が判り易いです。

では、様々な評価ボードで共通に動作するUser Applicationを開発する場合は、どうすれば良いのでしょうか?

答えは簡単です。論理記述をLD2やLD4から、より上位の論理記述へ結び付ければOKです。例えば、下記です。

#define BOARD_LED_PORT  LD4_GPIO_Port    //BOARD_LED_PORTをLD4_GPIO_Portと定義
#define BOARD_LED_PIN  LD4_Pin         //BOARD_LED_PINをLD4_Pinと定義

このように評価ボード単位のdefine文を、上位実装LEDや論理ピンへ再定義すれば評価ボード非依存のソフトウェアが開発できます。

define文は、開発者が、ソースコードを読み易くするための機能です。define文で再定義しても、コンパイル時に最終物理対象(GPIOAやGPIO_PIN_5)に置き換わるため、処理速度が遅くなるような弊害はありません。

STM32Cube MCU Packages Manager

さて、HALスタック図では1個のHALも、実はMCU毎に異なります。

このMCU毎に異なるHALを、STM32CubeIDEへ実装するツールが、STM32Cube MCU Packages Managerです。

MCU毎に異なるFirmware(HAL)をSTM32CubeIDEへ実装するSTM32Cube MCU Package Maneger
MCU毎に異なるFirmware(HAL)をSTM32CubeIDEへ実装するSTM32Cube MCU Package Maneger

STM32Cube MCU Packages Managerは、プロジェクトのハードウェア設定ファイル(icoファイル)を開いた状態で、Help>Manage Embedded Software Packagesで表示できます。上図は、STM32C0/F0/F1/G0/G4のPackage部分を抜粋しています。

このSTM32Cube MCU Packages Managerで、最新のFirmware Packageを開発に使うか、それとも、古いFirmware Packageを使うかが選択できます。上図は、STM32G0ソフトウェア開発に最新Firmware V1.6.1を開発に使うことを選択中の例です。

Firmware Package版数の訳

このMCU Firmware Packageが、HALの実体です。

例えば、STM32G0 Firmware V1.6.1は、旧Firmware V1.6.0と上位のUser Applicationに対しては同じHAL APIを提供しますが、その実体は、旧HALのバグ修正や販売中のSTM32G0 MCUに応じて中身が変わります。

つまり、このFirmware Packageが、MCU差や過去のHAL版に依存しないHAL APIを、User Applicationへ提供する仕組みそのものです。

MCU発売後、経過時間が長くなると、同一MCUでも多くのFirmware Package版が選択可能になります。

お勧めは、最新Firmwareです。

複数のFirmware版が存在する理由は、STマイクロがMCU供給を最低10年保証しているためです。新MCUパッケージ追加発売時は、新しいFirmware版で対応します。簡単に言うと、MCU開発履歴が版数に現れる訳です。

つまり、開発者が、顧客提供時Firmwareをそのまま継続開発に使いたい場合には、最新版だけでなく過去のFirmwareも選択肢になる訳です。

実際の選択は、icoファイルのProject Managerタブの一番下、Firmware Package Name and Versionで設定します。

Summary:HAL APIソフトウェア開発

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

MCUソフトウェアは、HAL APIを使うとMCUに依存しない移植性の高いUser Applicationソフトウェアの開発ができることを説明しました。

User ApplicationとHAL API間のハードウェア依存性を無くす手段として、評価ボード毎に異なるBSPや、MCU毎に異なるMCU Firmware Package(HAL)を用います。

汎用MCUを使ったHAL APIプロトタイプ開発ソフトウェアは、MCU変更に対して移植性が高いため、User Applicationソフトウェアの資産化も期待できます。

Afterword:MCU説明の難しさ

本稿の内容は、中級以上のMCU開発者にとっては、自明の理です。しかし、この自明の理を説明するのは、結構大変です。本稿も、説明不足の箇所が多々あります。

MCU開発では、この自明の理の部分が多いため、開発者レベルを上げる障壁は高くなります。例えて言うと、スマホが初めての方に、その取扱い方法を文書だけで説明するようなものです。

本稿は、STマイクロのHALを例に説明しました。これは、現在MCU毎に販売中の弊社STM32F0/F1/G0/G4テンプレートを、MCU共通のSTM32MCUテンプレートへ発展させる布石でもあります。

本稿内容が、すんなり判る開発者には、STM32共通MCUテンプレートは、多分不要(ご自分で開発できる)ですし、判らない方には、STM32共通テンプレートよりも個別STM32F0/F1/G0/G4テンプレートの方が使い易いと思っています。

今回のような長文は、筆者の苦手な分野です。が、時々は挑戦すべきと考えております。ご質問や判り難い箇所のご指摘も大歓迎です。読者の方々からのレスポンス、お待ちしております。



ソフトウェア視点のMCU選び方

MCU選び方をソフトウェア開発視点から示します。
具体例としてSTマイクロのSTM32MCUで説明しますが、他MCUベンダでも同様です。

Summary:HALドライバ+汎用MCUプロトタイプ開発で選定

例え同じベンダでも色々な内蔵ハードウェアと、処理性能、価格も異なるMCUは、製品MCUの選択肢が広すぎるのが難点です。

製品MCUハードウェア選定ミスを少なくし、かつ、ソフトウェア開発も効率的にできる方法として、汎用MCUを使いHALドライバで早期に製品プロトタイプ開発を行い評価する方法を示しました。

製品MCU選択肢の広さ

STマイクロのSTM32MCUポートフォリオ(出展:STM32ウェビナー資料)
STマイクロのSTM32MCUポートフォリオ(出展:STM32ウェビナー資料)

ベンダ例としてSTマイクロのCortex-Mコア系MCU選択肢の広さを示します。

STM32MCUポートフォリオを性能やシリーズ別に示したのが上図です。この図でターゲット製品のMCUシリーズを大まかに選定するのが、第1選定段階です。

第2段階では、各シリーズのFlash/RAM容量、内蔵ADCやUASRT数など製品時に必要になる周辺回路からハードウェア的に最適なMCUデバイスを選定します。

STM32MCU製品セレクタ例
STM32MCU製品セレクタ例

この選択方法は、MCU処理性能やソフトウェアを格納するFlashやRAM容量は、最終製品にならないと実際は判りません。しかし、周辺回路や動作電圧などのハードウェア条件は、明らかなのでこれらからMCU選定はできます。

但し、メインストリーム、つまり汎用MCUであっても、STM32C0、STM32F0/F1、STM32G0/G4シリーズと選択肢があり、処理性能も異なります。更に、ハイパフォーマンスSTM32H5/H7や、超低消費電力STM32U5などの汎用MCU比性能を極めたシリーズもあります。

これら多く広いMCU選択肢から、入手性やコストから製品MCUを決めるのが、一般的に用いられる「ハードウェア視点MCU選択方法」です。

HALドライバソフトウェア開発メリット

HALとは、Hardware Abstraction Layerドライバです。このハードウェアは、MCUを指します。つまり、MCU差を抽象化=隠して開発できるAPIを上位ユーザアプリケーションへ提供するのがHALです。

例えば、STM32C0でも、STM32G4でも同じHALドライバでGPIOアクセスができます。つまり、HALドライバを利用すれば、STM32C0とSTM32G4で同じアプリケーションが使える訳です。

従って、STM32C0で性能不足の場合には、開発ソフトウェアはそのままSTM32G4へ移植ができます。逆の性能過多の場合でも同様です。ユーザ開発アプリケーションのMCU間移植性が高いのがHAL利用ソフトウェアのメリットです。

HAL+汎用MCUプロトタイプ開発

汎用MCUを使って製品のプロトタイプ開発を行えば、製品化時、よりハイパフォーマンスMCUの必要性や、より低消費電力MCUの必要性が、使用した汎用MCUとの相対比較で可能です。

また、HALを使えば、プロトタイプ開発アプリケーションが製品MCU上でも動作します。

つまり、製品MCUのオーバー/アンダースペック選定ミスを減らす評価ができ、かつ、プロトタイプ開発アプリケーションの製品移植性も高いため、結果として効率的な製品開発が可能になるのが、「ソフトウェア視点MCU選択方法」です。

拡大MCUハードウェアとMCUソフトウェア移植性を満たすHAL

拡大STM32MCUデバイスとユーザアプリケーション移植性の両方を満たすHAL
拡大STM32MCUデバイスとユーザアプリケーション移植性の両方を満たすHAL

MCUベンダは、最初の図で示したように進化する半導体製造プロセスやよりアプリケーション寄りのコストパフォーマンス最適MCUデバイスを提供し続けます。

MCU製品開発側は、増え続けるMCUデバイス間のソフトウェア移植性や開発時間の短縮も必要です。

HALドライバは、これら進化・拡大するMCUハードウェアとMCUソフトウェア移植性要求を同時に満たす機能です。

HALによる汎用MCUプロトタイプ開発は、参考になるサンプルコードが多いため開発時間も少なく、開発アプリケーションがユーザ資産として多くのMCUでの活用も期待できます。

Afterword:汎用MCU選び方

汎用MCUも多くの選択肢があります。STマイクロのお勧めデバイスは、最新製造プロセスで入手性が良く低価格なSTM32G0/4シリーズ評価ボードです。

Flash/RAM容量も入手性優先で選定して構いません。容量不足時は、機能分割しプロトタイプ化すれば済むからです。

ソフトウェア視点MCU選択方法は、プロトタイプ開発が必要です。短期間で効率的に製品プロトタイプを仕上げ、このプロトタイプから製品MCU要求条件やソフトウェア動作ポイントなどを評価します。

プロトタイプと最終製品が近ければ近い程、これら評価精度は上がります。しかし、精度に拘る必要はありません。製品企画時に、とにかく製品のように動くプロトタイプを早く仕上げ、これから製品MCUを評価すれば、闇雲に選定するより良いからです。

MCU開発者は、手元にベンダ汎用MCUシリーズの評価ボードと弊社テンプレートがあれば、直ぐに製品のように動くプロトタイプが仕上がります。