評価ボード活用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攻略の秘訣は、多様性を忘れず、楽しく、面白く開発に集中(集中時間はタイマ等で管理)、学習することだと思います。


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シリーズの評価ボードと弊社テンプレートがあれば、直ぐに製品のように動くプロトタイプが仕上がります。


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習得やプロトタイプ開発に、弊社テンプレートは役立ちます。是非、ご活用ください。



STM32 Developer Zone

STマイクロが、STM32 MCU/MPU開発者向け総合ポータルサイトSTM32 Developer Zoneを開設しました(2023年6月)。ベテラン/初心者ともに開発に役立つページリンクが多数集約されています。

ポータルサイトのリンク構成を解かり易くするため、フォルダ形式の一覧表示にしました。

STM32 MCU Developer Zone

STM32 MCU Zone (Home) MCUプロジェクトを開始
1-MCU製品ポートフォリオ
2-開発ボード&ハードウェアツール
3-ソフトウェア開発ツール
4-組込みソフトウェア
5-ソリューション
6-開発リソース
アプリケーション別ソリューション AIソリューション
ワイアレス&コネクティビティ
セキュリティフレームワーク
コミュニティ&サポート STコミュニティ
ナレッジ共有
パートナ設計サービス
オンラインサポート(要ログイン)

下図マイクロプロセッサ:MPU(STM32MP1/Cortex-A7+Cortex-M4)以外の全マイコン:MCU情報が、このSTM32 MCU Developer Zoneに集約されています。

STM32 MCUとMPU境界(出展:STM32C0シリーズセミナ資料に加筆)
STM32 MCUとMPU境界(出展:STM32C0シリーズセミナ資料に加筆)

MPUに比べ、AIソリューション等のアプリケーション別ソリューション情報も豊富です(関連投稿:AI MCU)。

また、初心者向きMCUプロジェクト開始リンクがあり、Step1で評価ボード選択、Step2でSTM32CubeIDEを使ったMCU開発手順の説明もあります。

STM32 MPU Developer Zone

STM32 MPU Zone (Home) MPU組込みソフトウェアツールの詳細
1-MPU製品ポートフォリオ
2-開発ボード&ハードウェアツール
3-組込みソフトウェア
4-ソフトウェア開発ツール
5-ソリューション
6-開発リソース
コミュニティ&サポート STコミュニティ
ナレッジ共有
パートナ設計サービス
オンラインサポート(要ログイン)

高度なHMIや複雑処理向けのCortex-A7搭載MPUは、現在STM32MP1シリーズだけです。従って、STM32 MPU Developer Zoneサイト構成は、MCU比シンプルです。

2023年第4四半期にこのSTM32MP1に加え、Cortex-A35、Cortex-M33搭載でセキュアIndustry 4.0、およびエッジ・コンピューティング・アプリケーション向けSTM32MP2シリーズが追加予定です。

ポータルサイトHTMLとリンク構成

ウェブサイトの図や文字、ハイパーリンクの表示には、HTMLが使われます。HTMLで記述したリンク集約ポータルサイトは、肝心のリンク構成が読者に解り難い欠点があります。モニタで一度に表示できる領域が限られるため、リンク構成は、読者がサイト全体を把握した後になるからです。

そこで、本稿は、誰でも見慣れたフォルダ形式で、STM32 MCU/MPU Developer Zoneのリンク構成を示しました。

ポータルサイトは随時更新されますが、リンク構成を把握していれば、常に所望最新リンクへのアクセスも容易です。

注)本稿は、2023年6月9日現在のリンク先を示しています。最新リンクへは、MCU/MPU Developer Zoneホームからアクセスしてください。

Afterword:European Chips Act(欧州半導体法)

欧州半導体法は、EU内の製造活動強化、欧州設計エコシステム刺激、バリューチェーン全体スケールアップとイノベーションを支援するもので、これによりEUは、世界市場シェアを2030年に20%倍増させるという目標を目指しています。

STマイクロとGlobalFoundriesは、2023年6月5日、フランス・クロルで両社共同運用の300mmウエハー工場新設計画の合意を締結と発表しました。総投資額は75億ユーロの見込みで、フランス政府が最大29億ユーロを援助します。

生産だけでなく、より開発し易いMCU/MPUへ向けたオランダ)STマイクロの活用、今後も注目が必要です。



クリエイタ的エンジニア

エンジニアには、「作業的な人」と「クリエイタ」の2種類が存在。クリエイタ的エンジニアが、New Worldを作っていく。(その3より)

2030年向け先進テクノロジとの正しい付き合い方について、元ソニーCIO(最高情報責任者)、現在はガードナージャパン)エグゼクティブ プログラム シニアアドバイザー エグゼクティブパートナーの⻑⾕島眞時⽒と、ガードナージャパン)アナリストの亦賀忠明⽒の全3回対談記事(2022-10-28、ZDNET Japan)で、筆者が最も印象に残った箇所です。

ごく簡単に内容を抜粋し、クリエイタ的エンジニアへと成長するための記事提言をまとめました。

対談は、マネジメントとエンジニア双方への提言です。本稿は、読者の多いエンジニアに絞って抜粋しました。対談全文は、その1その2その3をご覧ください。

2030年のNew WorldとスーパーパワーAPI

2022年のテクノロジは江戸時代。2030年のテクノロジは、スーパーパワーを持つNew Worldへ劇的変化。
2022年のテクノロジは江戸時代。2030年のテクノロジは、スーパーパワーを持つNew Worldへ劇的変化。

2022年令和4年の現在を、手作業、企業論理中心の江戸時代と呼び、テクノロジ変化がもたらす2030年は、ハイブリッド・ワーク、メタバース、スーパーパワーAPIの新しい時代、これがNew Worldです。

わずか8年間で、テクノロジは、江戸時代から劇的に進化し「全く別のNew World」になります(その1)。

スーパーパワーとは、進化により想像を絶する能力をデジタルテクノロジが持つこと、そして2030年以降は、このスーパーパワーを使いこなせる企業と、そうでない企業が、明確に別れると予想しています(その2)。

スーパーパワーAPIを使ったモノづくりができるエンジニアと企業がNew Worldを作る、と結論しています(その3)。

※スーパーパワーAPI:多様化、高度化した進化テクノロジ境界がAPI(application programming interface)。様々なテクノロジ個々の深い理解は困難だが、API経由での利用は可能。つまり、1つのテクノロジ領域スキルを磨けば、他領域スーパーパワーを利用することは、比較的容易。

自分事、主体的に考える

短期間で劇的変化するNew Worldへは、人も、金も、時間も、他人事、もしくは当事者意識に欠けていては対応できません。

初めから完璧にやる必要はなく、これまで以上にアンテナの感度を上げ、注意深く、主体的に探索し、自ら的確にアクションすることが重要です(その2)。

作業的とクリエイタ的エンジニア

これまでは、決められた作業を的確にこなせる作業的エンジニアが求められました。これらの作業は、自動化やAI、さらにハイパーオートメーションが、とって代わります。

New Worldでは、いろいろな想像・発想ができ、創造ができる「クリエイタ的エンジニア」が活躍する時代です(その3)。

まとめ:クリエイタ的エンジニアは1日にしてならず

クリエイタ的エンジニアは1日してならず
クリエイタ的エンジニアは1日してならず

2030年向け先進テクノロジとの正しい付き合い方の記事は、対談形式のため長文です。盛りだくさんな内容の中から、エンジニア向け提言を抽出しました。

テクノロジが急変、高度化、多様化する時代は、初めから完璧を目指すより継続的改善を行い、主体的に2030年New Worldスキルを持つクリエイタ的エンジニアになれ、と提言しています。

「ローマは一日にして成らず」、クリエイタ的エンジニアも同じです。

2030年はすぐそこです。あせりは禁物ですが、できない理由を考える暇があるなら、できることを認識・判断・実行し、クリエイタ的エンジニアへの第1歩としましょう。

筆者個人は、IoT MCU RTOSテンプレート開発を最初の目標とします。