汎用MCUシェア20%超、第2位はSTM32MCU

シェア2位に躍り出たSTの汎用マイコン事業戦略”が、EE Times Japanに掲載されました。本稿は、この記事を要約し、記事記載のMCU 4ニーズの1つ、セキュリティ強化マイコン:STM32H7の暗号鍵利用によるソフトウェア更新方法(ST公式ブログ10月8日投稿)を示します。

STM32MCUは、汎用MCU世界市場シェア20%超の第2位へ

2019年9月、東京都内でSTマイクロエレクトロニクス(以下STM)による記者会見が開かれ、そのレポートがEE Times Japan記事内容です。ARM Cortex-Mコア採用のSTM32MCUが、2018年には汎用MCU世界市場シェア20%を超え第2位になった要因分析、今後のSTM汎用MCU事業方針が会見内容です。

汎用STM32MCUの世界シェア推移(出典:STM)
汎用STM32MCUの世界シェア推移(出典:STM)

車載用を除くMCUが汎用MCUです。本ブログも、この汎用MCUを対象としており、上図推移は重要なデータです。

以下、マイクロコントローラ&デジタルICグループマイクロコントローラ製品事業部グローバル・マーケティング・ディレクタ)Daniel Colonna氏の記者会見談話を中心に記事要約を示します。

STM32MCUシェア続伸要因

STM競合他社は買収や統合で成長しているが、STMは独自でシェア2位を実現。要因は、民生機器だけに集中せず、産業機器などのインダストリアル分野(=マスマーケット)に主眼を置き製品開発を行ってきたこと。マスマーケットターゲット事業方針は今後も変えず、シェア30%を目指す。

インダストリアル分野の4MCUニーズとSTM対応

演算性能の強化(STM32MP1/STM32H7)、より高度なAI実現(STM32CubeMXのAI機能拡張パッケージ)、多様な接続技術への対応(STM32WB)、セキュリティ強化(STM32Trust)の4点がインダストリアル分野MCUのニーズとそのSTMの対応(カッコ内)。

インダストリアル分野汎用MCUの4ニーズ(出典:STM)
インダストリアル分野汎用MCUの4ニーズ(出典:STM)

より広範囲なマスマーケット獲得策

モノクロからカラーLEDへ置換え(TouchGFX)、8ビットなどから32ビットMCUへ置換え(STM32G0シリーズ)で、より広範囲マスマーケットでのSTM32MCU浸透を図る。

以上が記者会見記事の要約です。

汎用MCU第2位となったSTM32MCU評価ボードは、入手性が良く安価です。コードサイズ制限なしの無償開発環境(STM32CubeIDE /SW4STM32/STM32CubeMX)も使い勝手に優れています。また、厳選された日本語技術資料も活用でき、初級/中級レベルのMCU開発者に最適だと筆者も思います。

この特徴を持つSTM32MCUに対して、弊社はSTM32G0x専用テンプレートSTM32Fx汎用テンプレートを販売中です。今後は、STM32G4テンプレートも開発を予定しています。

これまでNon ARM汎用MCU1位であったRunesasも、ARMコア他社対応か(?)ついに2019年10月8日、Cortex-MコアMCU販売を開始しました。これについては、別途投稿します。

セキュリティ強化STM32H7のソフトウェア更新

インダストリアル分野4MCUニーズのうち、演算性能とセキュリティ強化を満たすのが、STM32H7(Cortex-M7/480MHz、Cortex-M4/240MHzのデュアルコア)です。筆者個人は、MCUというよりむしろMPUに属す気がします。STMも、STM32MCU(下記右)に対して、STM32マイクロプロセッサ(下記左)と区別しています。但し、名称は違っても、そこに用いる技術は同一のはずです。

STM32MCUとSTM32マイクロプロセッサ(出典:STM)
STM32MCUとSTM32マイクロプロセッサ(出典:STM)

丁度最初に示した10月8日のSTM公式ブログに、セキュリティ強化STM32H7のファームウェア書換え手順図を見つけました。関連投稿:総務省:2020年4月以降IoT機器アップデート機能義務化予定の2章で示した3種サイバー攻撃へのウイルス感染対策です。

STM32H7ソフトウェア更新時のSFI、HSM(出典:STM)
STM32H7ソフトウェア更新時のSFI、HSM(出典:STM)

ハードウェア暗号化エンジンを持つSTM32H7は、図右上のSFI:Secure Firmware Installで暗号化、STM32G0やSTM32G4等は、図右下のSMI:Secure Module Installで暗号化し、更新ソフトウェアを準備します。どちらも、セキュリティ認証情報を含むHSM:ST Hardware Secure Module smart cardで鍵を受渡し復号化、ソフトウェア書換えを行います。

我々が開発するMCUソフトウェアの更新頻度は、PCに比べれば低いはずです。しかし、その頻度は、ウイルスの数に比例しますので、サイバー攻撃が増えればその度にこの書換えで対応することを考えると憂鬱になります。
※書換え失敗やワクチン投入による通常処理への配慮も必要で、Windows 10のようにユーザ任せの無責任な対応はMCUソフトウェアでは論外なため、開発者負担は増すばかりです😫。

総務省:2020年4月以降IoT機器アップデート機能義務化予定

総務省は、電気通信事業法を改正し、2020年4月以降「IoT機器アップデート機能義務化を予定」しているそうです(日経ビジネス2019年9月6日有料会員限定記事、“モノのインターネットに死角あり 狙われるIoT機器”より)。

本稿は、普通のMCU開発者が知るべき最低限のIoT MCUセキュリティ対策をまとめてみたいと思います。

IoT MCUセキュリティ

記事には、“歴史の浅いIoT機器は、開発者とユーザ双方にセキュリティ意識が欠如している“、”開発者は、便利で魅力的な機能搭載を優先し、セキュリティ配慮は2の次”とあります。確かにそうゆう見方はあります。

しかし、サイバー攻撃やセキュリティ関連ニュースが溢れる昨今、開発者/ユーザともに無関心ではないハズです。むしろ、現状のMCU能力では、セキィリティ強化が無理な側面を十分知った上で妥協している(目を瞑っている)のが事実だと思います。

セキィリティ関連記事は、その性質上、英語の省略用語を多用し、漏れがない細かい説明が多いので、全体を把握したい普通のMCU開発者には、解りにくいと筆者は考えています。

そこで、全体把握ができるMCUセキュリティのまとめ作成にトライしたのが次章です。

サイバー攻撃対策

MCUセキュリティ機能は、サイバー攻撃を防ぐための対策です。サイバー攻撃には、以下3種類があります。

  1. ウイルス感染
  2. 通信傍受
  3. 通信データ改ざん

2)通信傍受対策には、暗号化が効果的です。暗号化処理には、データをやり取りする相手との間に鍵が必要で、共通鍵と公開鍵の2方式があります。共通鍵は、処理負荷が公開鍵に比べ小さく、公開鍵は、鍵を公開する分、処理負荷が大きくなる特徴があります。

3)通信データ改ざん検出には、ハッシュ関数(=要約関数)を使います。ハッシュ関数に送信データを与えて得た値をハッシュ(=要約値)と言います。送信データにハッシュを追加し、受信側でハッシュ再計算、送受ハッシュ一致時がデータ改ざん無しと判定します。

2)と3)は、データ通信が発生するIoT MCUセキィリティ機能です。暗号化、ハッシュ関数は、新サイバー攻撃に対し、次々に新しい防御方式が提案される鉾と盾の関係です。MCU外付けセキュリティデバイス(例えばNXPのEdgeLock SE050など)によるハードウエア策もあります。

PCやスマホのようなウイルス対策ソフト導入が困難なMCUでは、1)のウイルス感染対策に、MCUソフトウェアのアップデートで対応します。総務省は、IoT機器にアップデート機能とID、パスワード変更を促す機能を義務付ける予定です。
※開発者自身で溢れるウイルス状況を常時監視し、ソフトウェア対応するかは不明です。

従来のMCUソフトウェアアップデートは、UART経由やIDE接続で行ってきました。しかし、ネットワーク経由(OTA)やアクセス保護のしっかりしたソフトウェア書換えなどを、1)のアップデートは想定しています。

以上、ごく簡単ですが、MCUセキュリティ対策をまとめました。

総務省の「IoT機器アップデート機能義務化」が、具体的にどのようになるかは不明です。ただ、無線機器の技適規制などを考えると、技術ハードルは、かなりの高さになることが予想できます。

サイバー攻撃対策のIoT MCUセキュリティ
サイバー攻撃対策のIoT MCUセキュリティ

ディアルコアや超高性能汎用MCUの背景

簡単にまとめたMCUセキィリティ対策を、IoT機器へ実装するのは、簡単ではありません。

実現アプローチとしては2つあります。

1つ目は、ディアルコアMCU(例えばNXPのLPC54114、関連投稿:ARM Cortex-M4とM0+アプリケーションコード互換)や、超高性能な汎用MCU(例えばSTMのSTM32G4、関連投稿:STM32G0x専用テンプレート発売1章)が各ベンダから発売中です。

これら新世代MCU発売の背景は、従来MCU処理に加え、法制化の可能性もあるセキュリティ処理実装には、MCU処理能力向上が必須なためです。

ワールドワイドにIoT機器は繋がります。日本国内に限った話ではなく、地球規模のIoT MCUセキュリティ実装に対し、ディアルコアや超高性能汎用MCUなどの新世代MCUでIoT機器を実現するアプローチです。

2つ目が、セキュリティ機能が実装し易いMPU(例えばRaspberry Pi 4など)と、各種センサー処理が得意なMCU(旧世代MCUでも可能)のハイブリッド構成でIoT機器を実現するアプローチです。

ARM Cortex-M4とM0+アプリケーションコード互換

NXP MCUXpresso SDK利用を利用すると、LPC845 Breakout board用に開発した1秒赤LED点滅アプリケーションコードが、そのままFRDM-KL25Zへ流用できることを前回投稿で示しました。ただ、どちらも同じARM Cortex-M0+コアのMCU評価ボードなので、読者インパクトは少なかったかもしれません。

そこで、LPC845 Breakout board(Cortex-M0+/30MHzコア)のLED点滅アプリケーションコードが、そのままCortex-M4/100MHzコアのLPCXpreosso54114へ流用できることを示します。異なるARMコア間でのアプリケーションコード互換の話です。

ARMコアバイナリ互換

Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)

ARMコアのバイナリ上位互換を示す図です(関連投稿:Cortex-M0/M0+/M3比較とコア選択の2章)。このバイナリコード包含関係は、Cortex-M0バイナリコードならCortex-M4でも動作することを示しています。

但し、この包含関係を理解していても、Cortex-M0バイナリコードをそのままCortex-M4へ流用する開発者はいないと思います。

ARMコアアプリケーションコード互換

Cortex-Mxのアプリケーションコード互換性
Cortex-Mxのアプリケーションコード互換性

MCUXpresso IDEのARMコアアプリケーションコード互換を示す図です。左がLPC845 Breakout board(Cortex-M0+/30MHzコア)の1秒赤LED点滅アプリケーションコード、右がCortex-M4/100MHzコアのLPCXpreosso54114の1秒赤LED点滅アプリケーションコードです。

コード差は、L59:LPCXpreosso54114評価ボード動作クロック設定:48MHz動作のみです。例えば、96MHzなどの他の動作周波数へ設定することも可能です。コード上で動作周波数を明示的に表示するために異なりましたが、機能的には両者同じコードと言えます(L59をマクロで書き換えれば、同一コード記述もできます)。

図下のInstalled SDK Versionが、どちらも2019-06-14で一致していることも重要です。Versionが異なると、例えばGPIOのAPIが異なることがあるからです。各SDKリリースノートでAPI差の有無確認ができます。※LPCXpreosso54114 SDKのMCUXpresso IDE設定方法は、コチラの投稿の5/6章を参考にしてください。

1秒赤LED点滅という簡単なアプリケーションですが、Cortex-M0+とCortex-M4の異なるARMコア間でコード互換性があることが解ります。

動作周波数の隠蔽とIO割付

評価ボード動作周波数が異なれば、無限ループ回転速度も異なります。従って、互換性を持たせるコード内に、無限ループ内の回転数でLED点滅させるような処理記述はできません。コードに時間要素は組込めないのです。

1秒点滅の場合は、L77:SysTick_DelayTicks()でループ回転数をカウントし、1秒遅延を処理しています。これにより、GPIO_PortToggle()が時間要素なしとなり、異なる動作周波数のARMコアでもアプリケーションコード移植性を実現しています。

SysTick_DelayTick()と1ms割込みによりカウントダウンする処理コードが下記です。ここも、割込みを利用することでコード移植性を実現しています。

動作周波数隠蔽によるARMコアアプリケーションコード移植性の実現
動作周波数隠蔽によるARMコアアプリケーションコード移植性の実現

左のLPC845 Breakout boardと、右のLPCXpreosso54114のコード差は、L16:赤LEDのIO割付のみです。評価ボード毎に異なるIO割付となるのは、やむを得ないでしょう。L12からL16のDefinition箇所を、別ファイル(例えばIODefine.hやUserDefine.h)として抽出すれば、同一コード記述も可能です。

ARMコアアプリケーションコード互換メリット

以上のように、ARMコアアプリケーションコード互換を目的にした記述や工夫も必要です。しかし、一旦互換コードを開発しておけば、開発資産として他のARMコア利用時にも使えます。その結果、開発速度/効率が高まります。

IoT MCUは、センサ入力やLED出力などのメイン処理以外にも、日々変化するセキュリティ処理への対応は、必須です。メイン処理が出来上がった後での、セキュリティ処理追加という手順です。

セキュリティ対策は、セキュリティライブラリ等の使用だけでなく、いつどのようにライブラリを活用するか、その時のMCU負荷がメイン処理へ及ぼす影響等、検討が必要な事柄が多くあります。

少しでも早くメイン処理を仕上げ、これら検討項目へ時間配分することがIoT MCU開発者には要求されます。この検討時間稼ぎのためにも、ARMコアアプリケーションコードの開発資産化は必須でしょう。

※プロトタイプ開発は、初めから厳しい条件で開発するよりも、最速のCortex-M4で行い、全体完成後Cortex-M0+/M3などへアプリケーションコードを移植するコストダウンアプローチも名案だと思います。

P.S.:2019年9月4日、MCUXpresso IDEがv11.0.1へ更新されました。旧MCUXpresso IDE v11.0.0 [2516]利用中の方は、Help>Check for Updatesではv11.0.1へ更新されません。新にMCUXpresso IDE v11.0.1 [2563]のインストールが必要です。新MCUXpresso IDEインストール方法は、コチラの4章を参照ください。

NXP MCUXpresso SDKから見るARMコアMCU開発動向

NXP最新IDE:MCUXpresso v11が、SDK:Software Development Kitを使ってMCUソフトウェア開発をすることは、前回投稿で示しました。MCUXpresso SDKがサポートする評価ボード一覧が、SDKユーザガイド最新版:Rev.10、06/2019付録Bにあり、旧Freescale評価ボード:FRDMが多いですが、NXPの新しい評価ボードも追加されつつあります。

オランダ)NXPが、米)Freescaleを買収完了したのは2015年12月です。

本稿は、旧FreescaleとNXP MCU両対応のMCUXpresso SDKから、ARMコアMCU開発動向を調査し対策を示しました。

MCUXpresso SDK

MCUXpresso SDK Laysers(出典:Getting Started with MCUXpresso SDK, Rev. 10_06_2019)
MCUXpresso SDK Laysers(出典:Getting Started with MCUXpresso SDK, Rev. 10_06_2019)

ユーザガイド記載のMCUXpresso SDK層構成です。ユーザが開発するのはApplication Code。このApplication Code以外は、評価ボード:MCU Hardwareと、SDKで提供されます。色付き部分:Middleware、Board Support、FreeRTOS、Peripheral Drivers、CMSIS-CORE…がSDKの中身です。

もちろんMCU性能に応じて、初めからFreeRTOSやMiddlewareが無いSDKもあります。例えば、前回のLPC845 Breakout board SDKリリースノートを見ると、Board Support(前回投稿BSPのこと)とPeripheral Drivers(Author: Freescale)、CMSIS-CORE(Author: ARM)だけが提供中です。

CMSIS:セムシイスまたはシムシス

CMSIS:Cortex Microcontroller Software Interface Standardは、リリースノートでAuthor: ARMが示すようにMCUコア開発元ARM作成の規格で、MCUハードウェアを上位層から隠蔽します(関連投稿:mbed OS 5.4.0のLチカ動作、LPCXpresso824-MAXで確認の3章)。

Peripheral DriversやBoard Supportは、 このCMSIS層のおかげでMCUハードウェアに依存しないAPIを、ユーザ開発Application Codeへ提供できる訳です。例えば、下記旧Freescale評価ボード:FRDM-KL25Z用SDKのboard.h記述:赤LED初期設定とトグルマクロ関数は、前回投稿で示したLPC845 Breakout boardと同じです。

FRDM-KL25Z用SDK_SDK_2.2_FRDM-KL25Zのboard.h
FRDM-KL25Z用SDK_SDK_2.2_FRDM-KL25Zのboard.h

従って、LPC845 Breakout boardで開発したアプリケーションコードを、そのままFRDM-KL25Zへも流用できます。

つまり、「SDK利用によりARMコアアプリケーションコードが汎用化」したのです。

同一アプリケーションコードでFreescaleとNXP評価ボード動作の意味

旧FreescaleとNXPのMCU評価ボードが同じアプリケーションコードで動作するのは、どちらもARMコアMCUでCMSIS層付きSDKなので、開発ユーザから見れば当然です。

しかし、従来は同じARMコアであってもApplication CodeはMCUベンダ毎に異なり、ベンダが異なれば常に1から開発していました。NXPでさえ、SDKを使った今回の同一コード動作に、Freescaleを買収後、約3.5年かかっています。
※Freescale 旧IDE:Kinetis Design Studioや、NXP 旧IDE:MCUXpresso IDE v11以前に慣れた開発者は、CMSIS付きSDKの新IDE:MCUXpresso IDE v11に違和感があるかもしれません。というのは、新IDEは、どちらの旧IDEとも異なるからです。

もちろんCMSIS利用はメリットだけでなく、デメリットもあるハズです。例えば、他社と差別化するベンダ独自Peripheral性能を極限まで引出すには、直接Hardwareを制御した方がより効率的です。STマイクロエレクトロニクスのSTM32G0x MCUのLL:Low Layer APIなどにその動向が見られます(関連投稿:STM32G0x専用Edge MCUテンプレート開発)。

しかし、CMSIS利用SDKを使ったアプリケーションコード開発は、ARMコア間のアプリケーションコードやベンダ間をも跨ぐ移植性、開発速度の速さ、ソースコード可読性などの点からユーザメリット大と言えます。
※ベンダを跨ぐ移植性とは、FreescaleとNXPのMCUで同一アプリケーションが動作することを意味します。FreescaleはNXPに買収されたので、実はベンダを跨いでいませんが、CMSIS層があればアプリケーションコード移植可能な実例と思ってください。

ARM MCUコアソフトウェアの開発動向と対策

現在MCUコアは、多数派のARMコアベンダと、少数派のNon ARMコアベンダの2グループに分かれています。

多数派ARMコアベンダは、NXPのMCUXpresso SDKに見られるようにCMSIS層利用アプリケーションコード開発、既存アプリケーション資産流用、差別化Peripheral開発に力点を置くと思います。目的は、より早く、より簡単な環境提供によるソフトウェア開発効率/速度の向上です。

我々ユーザは、この環境変化に応じたアプリケーションコード汎用化手法と、もう一方の差別化機能の性能発揮手法を臨機応変、かつ、それらを混同せず、時には組み合わせて開発する必要があると思います。

P.S.:弊社テンプレートで言えば、アプリケーションコード汎用化手法が、STM32Fxテンプレート他の汎用テンプレート、一方の差別化機能の性能発揮手法が、STM32G0x専用テンプレートです。

IoTを狙うデュアルコアMCU

CypressのPSoC 6を中心にNXPとSTM、3社のARMディアルコアMCUを調査しました。Cortex-M4とCortex-M0+を使う個人でも低価格で入手できるディアルコアMCUです。ディアルコアMCUの狙い、アプリケーション、シングルコアMCUソフトウェア開発との違いなどを説明します。

Cortex-A7とCortex-M4を使ったもう1つの超高性能ディアルコアMCUも少しだけ登場します。

ディアルコアMCUの狙い、アプリケーション

ディアルコアMCUの狙い
ディアルコアMCUの狙い(出典:Cypress Cortex-M4 PSoC 6サイト)

CypressのCortex-M4コアPSoC 6サイトの上図がディアルコアMCUの狙いを示しています。

つまり、「IoT市場獲得には、右側アプリケーションプロセッサからと左側マイクロコントローラ:MCUからの2つのアプローチがあり、MCUアプローチのPSoC 6は、処理能力とセキュリティ強化を低コスト、低電力で実現した」ということです。

PSoC 6は、実現手段としてメインコアにCortex-M4(150MHz)、補助コアにCortex-M0+(100MHz)のディアルコアを採用しています。このCortex-M4+Cortex-M0+の2MCU構成は、NXP:LPC54102STM:STM32WB55RGでも見られます。CypressとSTMは、Cortex-M0+側にBluetooth Low Energy無線通信機能を実装済みです。

PSoC 6は、実装セキュリティに応じてPSoC 62/63シリーズと3種類のPSoC 64シリーズに別れます。PSoC 62/63は、PSoC 6のセキュリティ機能とユーザ独自セキュリティファームウェア(ソフトウェア)を使うデバイス(次章参照)、最上位プレミアムセキュリティのPSoC 64は、標準的なセキュリティ機能を全て含むデバイスです。

一方、アプリケーションプロセッサアプローチは、NXP:iMX 7アプリケーションプロセサのようにスマホやRaspberry Piでも用いられたCortex-A7(800MHz)がメインコアで、Cortex-M4(200MHz)が補助コアです。このアプローチは、ソフトウェア開発規模が大きく評価ボードも高価で個人開発向きとは言いにくいと思います。Cortex-A7自身がマルチコアでOS利用が前提なので更に複雑になります。

まとめると、低コスト低電力で処理能力とセキュリティ強化目的のCortex-M4+Cortex-M0+ディアルコアMCUの狙いは、IoTアプリケーションです。PSoC 63搭載の評価ボード:CY8CPROTO-063-BLEの価格は¥2,289(Digi-Key調べ)で、個人でも手が出せる価格帯です。

ディアルコアMCUのソフトウェア開発

PSoC 63 Line with BLE (Applications and Freatures)
PSoC 63 Line with BLE (Applications and Freatures)

Cypress Roadmap: MCU Portfolio、P25から抜き出したPSoC 63のアプリケーションとFeaturesです。具体的なIoTアプリケーションや、実装セキュリティ機能が解ります。
※ご参考までにこのMCU Portfolioには、CapSenseテンプレート開発で用いたPSoC 4000S/4100S仕様も解り易く掲載されています。

同じP25記載のPSoC 63ブロック図です。Cortex-M4とCortex-M0+がメモリ結合されています。

PSoC 63 Line with BLE (Hardware)
PSoC 63 Line with BLE (Hardware)

PSoC 6のソフトウェアは、Cortex-M4とCortex-M0+それぞれのソフトウェアが、2つ同時に別々に動作します。簡単に言うと、各シングルコアMCUソフトウェア同士が、同じデバイス内で動きます。メモリ結合なので、同一メモリアドレス同時アクセスの競合回避手段なども多分あるハズです(←調査不足😌)。

つまり、ディアルコアMCUソフトウェア開発と言っても、従来のCortex-M4やCortex-M0+シングルコアMCUソフトウェア開発の経験やスキルがそのまま活かせるのです。

一方のMCUから見ると、片方のMCUはインテリジェントな周辺回路と同じです。

例えば、Windowsソフトウェア開発なら、1つの機能を複数スレッドに分割し、処理効率を上げるなどのマルチコア対応の工夫が必要です。しかし、Cortex-M4+Cortex-M0+デュアルコアMCUの場合は、シングルコアのソフトウェア開発手法がそのまま使えます。

差分は、「2つのMCUに、どの機能を割振るか」です。

FPU内蔵のCortex-M4は、セキュリティなどの計算処理、高速GPIOアクセスのCortex-M0+は、IO処理やBLEモジュール管理、というのが定番(CypressやSTMのディアルコアMCUにみられる)割振りのようです。

まとめると、ディアルコアMCUソフトウェア開発は、シングルコアMCU開発経験がそのまま活かせます。しかも、別々動作の2コアを持つので、RTOSを使わずに処理分離と本当の並列動作ができます。

また、個人入手可能な評価ボード価格も魅力です。

評価ボード搭載のPSoC 63:CY8C6347BZI-BLD43(116-BGA)は、BGAパッケージなので基板実装は簡単ではありません。しかし、このPSoC 63とBLEアンテナをモジュール化したCYBLE-416045-02(14.0 mm x 18.5 mm x 2.0 mm、43-pad SMT with 36 GPIOs、下図)が評価ボードに実装済みで単体購入も可能です。

また、個人利用の場合には、評価ボードを丸ごと基板実装するのも効果的です。

EZ-BLE Creator Modules CYBLE-416045-02
CY8C6347BZI-BLD43搭載のEZ-BLE Creator Modules CYBLE-416045-02

ディアルコアMCUへの対処案

ディアルコアMCUの狙いは、巨大なIoT市場です。

各社がディアルコアMCUを発売する理由は、高度化するセキュリティ機能や、どの規格かが不確定な無線通信機能に対して、現状のシングルARMコアMCUでは、処理能力不足が懸念されるためです。
※近距離無線通信の有力候補が、BLEであることは確かです。

ディアルコアMCUならば、たとえ規格が変わっても、その影響を片方のMCU内に止めることもできます。つまり、ソフトウェア資産が無駄にならない訳です。

IoT市場へは、Cortex-M4+Cortex-M0+と、Cortex-A7+Cortex-M4のアプローチがあります。Cortex-M4を用いる点ではどちらも一致しています。FPU内蔵Cortex-M4ソフトウェア開発や経験が、IoT MCUプログラマの必須要件になるかもしれません。

シングルコアMCU開発経験が活かせ、しかもRTOSを使わずに高速並列処理を実現できるディアルコアMCUのソフトウェア/ハードウエア開発を、評価ボードへの僅かな投資で、IoTが爆発的に普及する前から準備・習得するのは、技術者リスク回避の点からも必要だと思います。

GWお勧め本:トラ技5月号PSoC 4100S基板付きで販売中

トランジスタ技術2019年5月号が、サイプレス・セミコンダクター(以下サイプレス)のPSoC 4100S搭載基板付きで1,180円(税込)で販売中です。平成最後のトラ技で、PSoC 4と統合開発環境PSoC Creatorの良さが判る雑誌が、安価に入手できます。

ゴールデンウイークの読物に、MCUソフトウェア開発者だけでなくハードウェア開発者へもお勧めです。

トランジスタ技術平成31年5月号PSoC関連目次
トランジスタ技術平成31年5月号PSoC関連目次(※説明のため着色しています。出典:トランジスタ技術)

弊社ブログ掲載MCU中、筆者が最も好きなMCUが、Cortex-M0のPSoC 4シリーズです。MCU技術、サイプレスサイト掲載情報量と質、どれも競合他社より優れていると思います。但し、中級者以上の方には受けが良くても、初心者や初めてサイプレスサイトを訪れる方が解り易いかは疑問です。

ネット並みの手軽さはありませんが、紙媒体のトラ技は、セキュリティ不安や無駄な広告が無く、図表が多く2色で色分けされた文章は、CQ出版社構成済みです。PSoC 4やサイプレスが初めての方でも、短時間で重要箇所を読み・理解するのも簡単です。

ここからは、トラ技を入手した方を前提に、(少々差し出がましいのですが)PSoC 4やPSoC Creatorに解説を加えます。本ブログ対象の、「個人でも低価格で入手性が良いMCUにPSoC 4が該当」するからです。

PSoC 4と4000Sシリーズ

PSoCファミリラインナップがP60コラムにあります。PSoC 4の位置づけが良く解ります。このPSoC 4(Cortex-M0コア)に旧富士通のFM0+買収で得たCortex-M0+コアを採用し、世代改良したのがPSoC 4000Sシリーズです。S付きがCortex-M0+、無しがCortex-M0です。

PSoC 4000Sシリーズのラインナップが下図です。

PSoC 4000シリーズ分類
PSoC 4000シリーズ分類(出典:Cypress Semiconductorメールの一部抜粋)

メール画面切取り画像のためDigi-keyやMouserリンクは無効ですが、PSoC 4000Sシリーズは低価格で入手性も良いMCUであることが解ります。

Entry Level PSoC 4000Sのアナログ機能強化版であるPSoC 4100S:CY8C4146LQI-S433/Flash:64K/RAM:8K搭載基板がトラ技に付属しています。ブレッドボードなどで動作可能です(特設P115~に詳しい説明あり)。

PSoC 4100Sのトラ技採用理由は、第1部の(重い)処理内容や第2部のハイエンドPSoC 5LP(P104コラム参照)へのガイドがし易いからだと思います。

個人的には、先ずEntry LevelのPSoC 4000Sを使って、PSoCの良さをもっと手軽に読者に認知させた方が良いと感じました。4000Sと4100Sの差分は、内蔵アナログ・コンポーネントとその数だからです(MCU提供サイプレスの思惑もあるかもしれませんが…)。
※内蔵アナログ・コンポーネント解説は、特設P143~に詳しく説明されています。

PSoC Creator

PSoC Creatorは、EclipseベースIDEですが、他社IDEと異なります。使い勝手は、トラ技記事にあるように痒い所に手が届くように良くできたIDEです。モニタ1台ではなく、複数の高解像度モニタを使いたくなります。

簡単に言うと、MCUハードウェア開発者でも使える回路図機能とソフトウェア開発機能を全て盛り込んだ環境です。
※特設P129~のPSoC Creator操作マニュアルに詳しく説明されています。

PSoC Creator操作画面
PSoC Creator操作画面

筆者がPSoC 4000SとPSoC Creatorを勧める具体的理由が下記です。

MCUハードウェア開発者向け:自分で開発したハードウェアのテストプログラムを、できるだけ簡単に自作したいが、ソフトウェア開発技術を習得する時間が無い。

MCUソフトウェア開発者向け:制御ハードウェアの詳細を、データシートを読むよりも効率良く理解したい。ハードウェア担当者に直接聞くのも面倒だ。

これらの方々は、是非PSoC Creatorを試してください。ハード/ソフトの垣根がなく、自分が知りたいことをPSoC Creatorだけで調査でき、求める出力をCreateできるのがPSoC Creatorです。

PSoC Creatorを使うと、ハードウェア・ソフトウェア共に既存資産の活用と組み合わせでMCU開発するのが便利で効率的なのが良く解ります。ハードウェア的に言うとコンポーネント活用、ソフトウェア的に言うとAPI活用です。

PSoCの場合、外付けセンサー接続時にあると便利なアンプやコンパレータなどのアナログディスクリート回路や、AND/OR/NOTデジタルディスクリート回路などもMCU内蔵です。システム完成時の実装部品数が削減できます。

さらに、PSoC 4000Sには、タッチ・センサー制御に強いCapSenseも内蔵で、細かな調整もPSoC Creatorでできます。

一度使ってみれば、PSoC CreatorがPSoCの魅力を引き出すというトラ技解説が良く解ります。

PSoC 4000SとPSoC6テンプレート開発の可能性

弊社のPSoC 4/PSoC 4 BLE/PRoCテンプレートは、Cortex-M0対応で2015年発売当時は最新でした。

しかし、トラ技付属のPSoC 4100S搭載基板を活用できるテンプレートや、Entry Level第4世代PSoC 4000Sを使った新テンプレートも開発したくなりました。Cortex-M0+採用による低電力・高効率化が気になります。

例えば、PSoC 4000S CapSense Prototyping Kit($15)で新テンプレートを開発すると、タッチ・センサー機能も低価格で直にプロトタイプ開発ができそうです。更に高性能で低価格なPSoC 6ファミリ(Cortex-M4/M0+デュアルコア)にも興味があります。

PSoC 4000S CapSense Prototyping Kit
タッチ・センサー基板付きで$15と安価なPSoC 4000S CapSense Prototyping Kit

TrueSTUDIOとSTM32CubeMXインストール方法、STM32G0xとSTM32F0xの差異

STM32G0x専用テンプレートのIDE:TrueSTUDIOを使った開発環境構築手順も、汎用STM32Fxテンプレートのそれと同じです。

本稿はSTM32G0x専用テンプレート開発用IDE TrueSTUDIOとスタンドアロン版STM32CubeMXのインストール方法を示し、インストールしたSTM32CubeMXを使って同じ汎用MCUでもSTM32G0xとSTM32F0xのどこが違うかを具体的にまとめます。

STM32G0x専用テンプレートIDE:TrueSTUDIOを使った開発環境構築手順

2017年5月投稿のSW4STM32のIDE構築手順が左側、これがTrueSTUDIOに変わると右側になります。

表1 TrueSTUDIOとSTM32CubeMXインストール手順とSW4STM32構築時の比較
手順 SW4STM32で構築(2017年5月) TrueSTUDIOで構築(本稿)
1 SW4STM32インストールとUpdate TrueSTUDIOインストールとUpdate
2 STM32CubeMXプラグインとUpdate STM32CubeMXスタンドアロン版とUpdate
3 評価ボードMCUコアのライブラリダウンロード STM32G0パッケージのダウンロード
4 ライブラリのファイル構成確認 同左(しかし、当面見合わせ)
5 評価ボードデモソフト説明と構築環境の動作検証 同左(しかし、当面見合わせ)

差分はIDEと、STM32CubeMXスタンドアロン版をインストールする点、評価ボードがNucleo-F072RBからNucleo-G071RBに変わったので、STM32CubeMXへダウンロードするMCUパッケージにSTM32G0を加える点です。

前半で手順1~5の簡単な説明、後半は、インストールしたSTM32CubeMXを使って同じ汎用MCUグループのSTM32G0xとSTM32F0xが、電源ピン数やデフォルト使用周辺回路が異なることを示します。

手順1 TrueSTUDIOインストールとUpdate

Atollic TrueSTUDIO for STM32 9.3.0(2019/2/22リリース)は、atollicサイトからダウンロードボタンのクリックで入手できます。以後、Windows版で説明します。

ダウンロード後、インストーラを実行すると言語選択ダイアログが現れます。日本語を選択するとインストール後のTrueSTUDIOメニューも自動的に日本語化されます。
インストール後、ヘルプ(H)>更新の検査、をクリックしTrueSTUDIO を最新状態にします。

※TrueSTUDIOインストール検討中の方は、手順4を読んだ後に再検討してください。

手順2 STM32CubeMXスタンドアロン版とUpdate

コード生成ツールSTM32CubeMX V5.1.0は、SW4STM32と今回インストールするTrueSTUDIOの両方で使います。そこで、各IDEのプラグインではなく、スタンドアロン版としてインストールします。インストール方法は、UM1718 Rev28の3.2を参照してください。
インストール後、Help>Check for Updates、をクリックしSTM32CubeMXを最新状態にします。

※UM1718は、チュートリアルも豊富でSTM32CubeMXの重要マニュアルです。全356ページと分量は多いのですが、読む章を選択するなどして目を通すことをお勧めします。

スタンドアロン版はSTM32CubeMX更新が簡単で、1つのSTM32CubeMXで両方のIDEに生成ファイルを出力する時に便利です。

手順3 評価ボードMCUコアのライブラリダウンロード

評価ボードNucleo-G071RBのMCUコアは、Cortex-M0+です。STM32Fxと同じMainstream(≒汎用)MCUですが、新世代の汎用MCUです。
関連投稿:STM32G0x専用Edge MCUテンプレート開発

STM32CubeMXのHelp>Manage embedded software packagesでSTM32G0を選択し、最新版Package1.1.0をインストールします。

STM32G0インストール
STM32G0 MCU Packegae 1.1.0のインストール

手順4 ライブラリのファイル構成確認

STM32CubeMXは優れものソフトウェアで、IDEプラグインからスタンドアロン版へ途中変更してもデフォルトRepositoryディレクトリ(C:\Users\ユーザ名\STM32Cube\Repository)を変えなければ、プラグイン版Packagesの各MCUパッケージがスタンドアロン版へそのまま引き継がれます。

ただし今回のSTM32G0は、ライブラリファイル構成がSTM32F0/F1をインストールした時と一部異なります。

Repository/STM32Cube_FW_G0_V1.1.0\Projects\NUCLEO-G071RB\Templatesフォルダ内にTrueSTUDIOフォルダが無いのです(EWARM/MDK-ARM/SW4STM32は以前と同様有るが、UM1718にもTrueSTUDIO説明無し)。

残念ながら、手順3でインストールしたSTM32G0は、TrueSTUDIOへ生成コードを現状は出力できないようです😴。

SW4STM32の必然性
TrueSTUDIOではなくSW4STM32の必然性を示す結果となった

という訳で、手順4と5以降は、STM32G0がTrueSTUDIOへ対応した後に検証を行います。Communityによると次版のSTM32G0で対応予定だそうです。

STM32G0x専用テンプレート開発IDEに、SW4STM32からSTM買収後のAtollic TrueSTUDIOへの変更必要性を示すつもりが、今現在は、SW4STM32の使用を続ける必然性を示す結果となりました😴。

STM32CubeMXを使ったSTM32G0xとSTM32F0xの差異まとめ

TrueSTUDIOへ生成コードを出力しなければSTM32CubeMXに問題はないので、(個人的にはマルチOS対応SW4STM32が好きですし……気を取り直して…)、STM32CubeMXを使いSTM32G0xとSTM32F0xの違いをまとめます。

STM32G0xもSTM32F0xも共にMainstream、つまり、汎用MCUに属します。しかし、STM32CubeMXを使うと、評価ボード実装の同じ64ピンパッケージでも、電源ピン数やデフォルト利用の周辺回路が異なることが良く判ります。

Nucleo-G071RBとNucleo-F072RB差異
Nucleo-G071RB(左)とNucleo-F072RB(右)の利用ピン差異

Tips:STM32G0 1.1.0では、評価ボードNucleo-G071RB使用中のLD4(PA5)とB1(PC13)がPinout & Configurationに表示されません。その理由は不明ですが、手動で追加設定する必要があり上左図は設定済みのものを示しています。ちなみに、上右図Nucleo-F072RBは、LD2とB1がデフォルトで表示されます。

電源ピン(VDD/VSS)数

STM32G0xは、黄色で示された電源ピン(VDD/VSS)が1組、一方STM32F0xは4組あります。STM32G0xのCortex-M0+コアと70nmプロセスの結果、電力供給1組でも十分動作します。

不要になった電源ピンは、GPIOに変更し同じ64ピンパッケージでもSTM32F0xよりも多くの外部制御が可能です。

パッケージのピン配置

STM32G0xシリーズのパッケージピン配置が下図です。将来リリース予定の4パッケージピン配置は一貫しています。これにより、基板アートワークや周辺部品の配置も一貫した設計計画が立てられます。

電源ピンはどのパッケージでも1組で、左辺中央です。

STM32G0xシリーズパッケージピン配置(出典:STM32G0 and CubeMX Webinar)
STM32G0xシリーズのパッケージピン配置(出典:STM32G0 and CubeMX Webinar)

デフォルト利用周辺回路

STM32G0xのConnectivity(通信処理)は、デフォルトでLPUART1(Low Power UART、Stopモードからの再起動可)ですが、STM32F0xはUSARTです。STM32G0xもUSARTを実装していますが、低電力動作に適したLPUARTを推薦しているためと思います。

LPUARTとUSARTの差異(出典:STM32G0オンライントレーニング)
LPUARTとUSARTの差異(出典:STM32G0オンライントレーニング)

その他の差異

これら以外にも、STM32G0xは、USB Type-C™ Power Delivery controllerや2.5MspsのADC、メモリープロテクションなどIoT Edge MCU向きの周辺回路を実装済みです。

また、Nucleo-G071RB評価ボードのUSBはMicro-Bコネクタ、Nucleo-F072RBはMini-Bコネクタです。

USB Micro-BとMini-Bコネクタ(出典:ウィキペディア)
USB Micro-BとMini-Bコネクタ(出典:ウィキペディア)

まとめ

STM32G0x専用テンプレート開発に使うTrueSTUDIOとSTM32CubeMXインストール方法を示し、そのSTM32CubeMXを使ってSTM32G0xとSTM32F0xの差異を示しました。

STM32CubeMXは2重起動可能です。STM32G0xとSTM32F0xそれぞれのSTM32CubeMXプロジェクトファイルを同時に開いて比べると、各デバイスのデータシートで比べるより差異が早く良く判ります。

STM32G0x専用テンプレート開発IDEには、当面、筆者が好きなSW4STM32が適していることも判りました。

STM32G0x専用テンプレート開発全体像俯瞰

STM32G0x専用テンプレートの開発着手にあたり、汎用STM32Fxテンプレート開発から2017年9月のテンプレート発売までをざっと振り返り、今回の専用開発との差分になりそうな箇所を示しSTM32G0x専用テンプレート開発全体像を俯瞰、力を入れる投稿予定を示します。

汎用STM32Fxテンプレート開発History

汎用STM32Fxテンプレート開発時の主な投稿と内容
年月日 投稿タイトル 主な内容
2017年5 STM32マイコンIDE構築 SW4STM32の構築
2017年6 STM32CubeMXの使い方 HAL APIの選定理由と利用法
STM32CubeMX生成ファイルのユーザ追記箇所 HAL利用時のユーザ追記箇所
2017年8 評価ボードの利用ピン指針 Baseboardとの接続指針
2017年9 STM32Fxテンプレート発売 汎用STM32Fxテンプレート発売

2017年5月当時は、4種ある無償IDEの中からマルチOS(Windows/MacOS/Linux)対応、仏/AC6社のSW4STM32を使いました。2017年末、無償IDE TrueSTUDIO提供のスウェーデン/Atollic社がSTマイクロエレクトロニクス(以下STM)に買収され、公式にはTrueSTUDIOがSTM32マイコンの純正無償IDEに昇格(!?)したようです😅。

関連投稿:STM32のStep-by-Step Guideの、気になる点1:TrueSTUDIO参照

STM32G0x専用テンプレート開発IDE:TrueSTUDIO

そこで、STM32G0x専用テンプレート開発には、TrueSTUDIO無償版(Windows/Linux対応、MacOSなし)を使います。現在SW4STM32を使っている方にも判り易いようにTrueSTUDIOとの差分を説明する予定です。

但し、筆者はSW4STM32利用中の開発者が、あえてTrueSTUDIOに変更する必要は、今のところ少ないと考えています。ソフトウェア開発の主役は、STM純正コード生成ツールSTM32CubeMXだからです。最新STM32CubeMXを使えば、IDE差は少ないと今は思っています。

勿論、TrueSTUDIOの買収昇格時点でBetterなのは当然だと思います。専用テンプレート開発を通じBetterよりもSW4STM32からTrueSTUDIOへ変更するMust条件が判れば、本ブログでお知らせします。

Tips:STMの日本語資料強化の一環なのか、TrueSTUDIOはEclipseベースIDEなのにインストーラは日本語対応、メニューも日本語になっています(下図参照)。但し、C\ユーザ名\Atollic\TrueSTUDIO for STM32 9.3.0\Manuals\Generalにある重要マニュアル5種は全て英文です。例えば、SW4STM32プロジェクトのTrueSTUDIOインポート方法や注意点は、User GuideのP75~に英文で詳しく説明されています。

日本語対応のTrueSTUDIOメニュー
日本語対応のTrueSTUDIOメニュー

STM32CubeMX:LL API(Application Programing Interface)利用

STM32G0x専用テンプレートは、汎用STM32Fxテンプレート開発で使ったHAL(Hardware Abstraction Layer)APIに変わりLL(Low Layer)APIを使います。LL利用により、STM32CubeMX生成ファイルの初期化コードやユーザ追記箇所がHALとは異なります。LL APIの利用は、専用テンプレートの肝ですので、ブログで詳しく説明します。

IoTサービス例:2.5Msps12ビットADC必須+α

汎用STM32Fxテンプレートは、Baseboardと評価ボードを接続し、基本動作完成形のBaseboardテンプレートを開発しました。STM32G0x専用テンプレートは、Arduinoコネクタに何らかのIoTサービスを示すシールドを接続する予定です。しかし、最悪の場合、汎用と同じBaseboard接続にする可能性もあります。

ただし、特に2.5Mspsの12ビットADCは、3タイプある全STM32G0xデバイスに実装済みで、IoTサービス必須機能ですので、このADCを活かしたIoTサービスは実装必須にします。その他のIoTサービスに関しては、今後決めます。

2.5Msps12ビットADC (RM0444より)
2.5Msps12ビットADC (出典:RM0444)

STM32G0x専用テンプレート発売:2019/3Q~

汎用STM32Fxテンプレートは、5か月の期間で開発しました。STM32G0x専用テンプレートは、HALよりもLL API利用難易度が高いことを考慮すると、最低でも同じ開発期間が必要だと思います。

STM32G0x専用テンプレート開発全体像俯瞰の結果

以上、STM32G0x専用テンプレート開発の全体像を俯瞰しました。
SW4STM32からTrueSTUDIO IDEへの変更必要性、STM32CubeMX のLL API利用法、全STM32G0xデバイス実装済みでIoTサービス必須機能2.5Msps12ビットADC使用法、これらを読者の方々が理解できよう力を入れて投稿記事を作成します。

STM32G0x専用Edge MCUテンプレート開発

本稿は、STマイクロエレクトロニクス(以下STM)のSTM32G0xデバイス(Cortex-M0+/60MHz)が、汎用MCUのSTM32Fx(F0/Cortex-M0/48MHz、F1/Cortex-M3/72MHz)と異なり、IoT向きの新世代Edge MCUであること、そのテンプレート開発も汎用STM32Fxテンプレートと異なること、これら理由を説明します。

まとめ

はじめに内容をまとめた表1と表2、図1を示し、次章からその詳細理由を説明します。

要するに、STM32G0xデバイスのIoT Edge MCU向きの広いハードウェア性能を活かすには、LL(Low Layer)APIを利用したSTM32G0x専用Edge MCUテンプレート開発が得策だということです。

表1 STM32G0xデバイスとSTM32F0/F1デバイスのハードウェア差
デバイス名 製造プロセス コア 最大動作周波数 Edge MCU向き周辺回路
STM32G0x
デバイス
70nm Cortex-M0+ 60MHz 2.5Msps 12ビットADC、USB Type-C、暗号化処理
STM32F0/F1
デバイス
120nm Cortex-M0/M3 48/72MHz 特になし(汎用MCU)
表2 STM32G0x Edge MCUテンプレートとSTM32Fxテンプレートの違い
テンプレート名 使用API 流用性 動作確認評価ボード IoTサービス 重点ポイント
STM32G0x Edge MCU
テンプレート
LL(+HAL) 低い STM32G071RB 今後決める(TBD) STM32G0x性能発揮
STM32Fx
テンプレート
HAL 高い STM32F072RB
STM32F103RB
特になし(汎用) デバイス間移植・流用性
テンプレート開発の方向性
図1 テンプレート開発方向性。同じメインストリームMCUでもSTM32G0xデバイスは専用性、STM32Fxデバイスは汎用性重視。

STM32G0xデバイス(Cortex-M0+/60MHz)の特徴

STMの場合、新世代Edge MCUと従来MCUの最も異なる点は、製造プロセスです。STM32G0xは70nm、STM32Fxは120nmの製造プロセスです。

製造プロセスによる性能差は、Intelプロセサでお馴染みだと思います。ごく簡単に言うと、製造プロセスを小さくすると、全く同じMCUでも、動作周波数が上がり、消費電力は下がる、販売コストも下がるなど、良いこと尽くめの効果が期待できます。

さらにSTM32G0xは、Cortex-M0の電力消費を改良しCortex-M3の良さを取り入れたCortex-M0+コアを採用しています。つまり、コアと製造プロセスの両方でCortex-M0のSTM32F0デバイスを上回り、動作周波数をCortex-M3のSTM32F1デバイス72MHzに近い60MHzとしたことで、STM32F1と同程度の高性能なのに超低電力動作します。まさに新世代のIoT MCUです。

また、2.5Mspsの12ビットADC、USB Type-C、暗号化処理などEdge MCUに相応しい周辺回路を実装しています(3タイプあるデバイスで実装周辺回路を変え、低価格供給中)。

STM32G0xデバイスとSTM32F0/F1デバイスのハードウェア差をまとめたのが表1です。STM32G0x出現で、STM32F1/F0デバイスで開発する意味は、低下したとも言えるでしょう。
※但し、他デバイスへの移植性・流用性を重視した開発ならSTM32F1/F0デバイスを使い汎用STM32Fxテンプレート使う意味は依然として大きいです。

現在はSTMから何のアナウンスもありませんが、STM32G0xと同じ70nm製造プロセスでCortex-M3/≦100MHzの上位デバイスSTM32G1xが発売されれば、なおさら低下します。

関連投稿に上記特徴の出典などがあります。
関連投稿:守備範囲が広いSTM32G0
関連投稿:STM新汎用MCU STM32G0

STM32G0x専用Edge MCUテンプレートと汎用STM32Fxテンプレートの違い

STM32Fxテンプレートは、ハードウェア差を隠蔽するHAL(Hardware Abstraction Layer)APIを使い、万一性能不足などでデバイスを変える事態が生じても、同じソフトウェアを使えます。従って、STM32F0とSTM32F1の両デバイスで動作するアプリケーションが、ほんの少しの修正で素早く作成できます。

これは、HALのおかげです。HALがデバイスや周辺回路差を吸収するため、アプリケーション側は移植性の高いシンプルな記述ができるのです。その副作用として、アプリケーション記述コードは少なくてもコンパイル後のコードサイズは、周辺回路を直接制御するLL(Low Layer)に比べ大きくなります。

関連投稿:STM32CubeMXの使い方、STM32CubeMXの2種ドライバライブラリの章参照

HALを使うと言うことは、たとえデバイスが変わっても開発したソフトウェアとその労力を無駄にせず、流用・応用できることが最大のメリットです。

汎用「STM32Fxテンプレート」は、この流用・応用に適したテンプレートです。動作確認評価ボードは、STM32F072RBとSTM32F103RBのみですが、全ての汎用STM32Fxデバイスへ応用できます。勿論、ここで示したSTM32G0xデバイスにもこのHALを使う手法は適用可能です。

一方、「STM32G0x専用Edge MCUテンプレート」は、LL APIを使います。つまり、STM32G0x専用のテンプレートです。※LL APIは、使用デバイスにより異なるので専用テンプレートになります。

STM32G1xデバイスが持つCortex-M0からCortex-M3までをカバーする広い適用力と超低電力動作を活かすには、ソフトウェア開発にHAL比60~80%の高速処理のLLを使った方が得策と判断しました。

つまり、STM32G0xデバイスをEdge MCUと認め、そのSTM32G0xの性能や能力を十分に発揮する専用テンプレートがSTM32G0x専用Edge MCUテンプレートです。
※但し、流用性が高い一部機能には、HAL活用も考慮中です。LLとHALは混在可能です。

STM32G0x専用Edge MCUテンプレートと汎用STM32Fxテンプレートの違いをまとめたのが表2、テンプレート開発の方向性を示したのが図1です。

STM32G0x Edge MCU評価ボード選定

STM32G0x専用Edge MCUテンプレートの動作確認評価ボードには、Nucleo-G071RB(¥1,203)を予定しています。

前投稿で示したEdge MCUテンプレート評価ボードの3要件を再掲します。

  • R1. 低価格、入手先豊富なEdge MCU評価ボード <¥3,000
  • R2. 最新Edge MCU使用(2018年後半の新しいIoTトレンドに沿って開発されたEdge MCUであること)
  • R3. 何らかのIoTサービス例を簡単に示せる

これら3要件のうち、R3:何らかのIoTサービス例を示す要件がNucleo-G071RB 単独ではNGですが、Arduinoコネクタに何らかのIoTサービスシールドを追加することで満たす予定です。

評価ボードNucleo-G071RB
評価ボードNucleo-G071RB。64ピンパッケージでも電源供給が2本のみのなのでアートワーク担当者が喜ぶ。

※STM32G0xデバイスの評価ボードで、IoTのUSB Type-Cサービスを示すSTM32G0 Discovery Kitや、暗号化処理サービスを示すSTM32G081B-EVALは、両方ともR3要件を満たしますが、価格要件R1<¥3,000を満たさないので利用を断念しました。

Edge MCU評価ボード要件と検索方法

前稿で示したEdge MCUテンプレート構想を具体化します。MCU動作だけでなく、IoTサービス例を、開発者個人が、低価格かつ簡単に示すことを目的とするこの新しい「Edge MCUテンプレート」は、弊社が従来から販売してきた「汎用MCUテンプレート」のアプローチとは少し異なります。

それは、テンプレート出力がMCU動作だけでなくIoTサービスも含めるからです。たとえEdge MCUであっても普通のデバイスです。ベンダーは、その評価ボードでEdge MCUの特性を活かしたIoTサービスを示す場合が多いです。
従って、Edge MCUテンプレートのポイントは、いかに上手くIoTサービスを示すベンダー評価ボードを選べるかに掛かっています。

本稿は、Edge MCUテンプレートに用いるEdge MCU評価ボードの3要件と、これら要件を満たす評価ボード検索方法を示します。

Edge MCUテンプレートに用いるEdge MCU評価ボードの3要件

以下3要件を、Edge MCUテンプレートに用いるEdge MCU評価ボードと考えます。

  • R1. 低価格、入手先豊富なEdge MCU評価ボード <¥3,000
  • R2. 最新Edge MCU使用(2018年後半の新しいIoTトレンドに沿って開発されたEdge MCUであること)
  • R3. 何らかのIoTサービス例を簡単に示せる

要件(Requirements)を満たさない場合は、どの項目がNGかが解れば、開発者や場合によってはOKの場合もあります。¥3,000が低価格かは懐具合次第ですし、開発年度が新しいか古いか、何らかのIoTサービスなど、全て主観です。

ただ主観であっても、Edge MCU評価ボード選択にあたりR1~R3の要件があると、採否が簡単になります。仮に、最新Edge MCUでは無いが、低価格でIoTサービスも示せる評価ボードがあった場合には、「R2_NG」だが採用するなどの特例も取れます。そこで次に、この3要件を満たすEdge MCU評価ボードを効率的に選ぶ方法を示します。

3要件を満たすEdge MCU評価ボード検索方法

最新Edge MCUで、R1~R3要件を満たすEdge MCU評価ボードを選ぶには、Mouserの新製品(メーカー別)ページが便利です。DigiKeyやチップワンストップにも同様ページがありますが、サムネイル写真と概要付きなのでMouserが最も使いやすいと思います。

Mouser新製品ページ
Mouser新製品(メーカー別)ページ。メーカーロゴクリックで集計される。カテゴリ別や週別でも選べて便利。

例えば、STマイクロエレクトロニクス(以下STM)をクリックすると、「発売日順」にサムネイルと商品名、概要が列挙されます。この中から、Edge MCUテンプレートに使えそうな評価ボードの商品詳細を読み、3要件で採否を判断すれば良いという訳です。

STマイクロエレクトロニクスの発売日順検索結果
STマイクロエレクトロニクスの発売日順検索結果。写真、製品名、概要が判る。

守備範囲が広いSTM32G0投稿で示したNucleo-G071RB(¥1,203)もこの方法で上位ページ、つまり新商品順に表示されるので、直に探せます。
※年始には1ページ目上部に示されたNucleo-G071RBが、2ページ目下部に示されました。STMは他ベンダー比、新製品が多いのにも驚かされます!
※このようにベンダー毎の新製品数、評価ボード搭載デバイスの単体価格なども簡単に分かる点がマウザー新製品ページの利点です。

NXP、サイプレス、ルネサスとベンダーを変えて上記検索をすれば、R1~R3要件を満たすEdge MCU評価ボードが簡単に見つかります。

ルネサスは投稿時3要件を満たすEdge MCU評価ボードなし

残念ながらベンダーをルネサスで検索しても、2月末時点では価格要件:R1を満たすEdge MCU評価ボードが見つかりません。

例えば、RL78ファミリのロードマップ投稿で示したRL78/G11評価ボードYQB-R5F1057A-TB(¥3,961…!)やYRPBRL78G11(¥6,437)※秋月電子でも¥4,320は、ともに¥3,000を超えます。

また、低価格がセールスポイントのRX評価ボードTarget Board for RX130/231/65NでもR1を満たしません。

つまり、ルネサスEdge MCU評価ボードは、他ベンダー比、どれも価格高めです。企業レベルでの購入なら問題ないでしょう。しかし、これら価格は、実装部品から推測しても“個人開発者は顧客として眼中に無いのでは(!?)”、とも疑われるコスパだと思います。

※東洋経済Online2月19日に、ルネサス急ブレーキのしかかる1兆円買収記事が掲載されています。ルネサスを応援したいのですが、Edge MCU評価ボード入手も含め、手を出しにくい状況です。