Arduinoコネクタを持つMCU評価ボードが多い理由

ArduinoコネクタコンパチブルMCU評価ボード例
ArduinoコネクタコンパチブルMCU評価ボード例

本稿は、Arduinoコネクタを持つMCU評価ボードが多い理由を、少し丁寧に説明します。上図は、Arduinoコネクタレベルでコンパチブル(=置換え可能)なSTマイクロエレクトロニクス、サイプレス・セミコンダクター、NXPセミコンダクターズ各社のMCU評価ボードを示しています。

Arduinoコネクタ

イタリア発で「オープンソースハードウェア概念」の発端となったArduino(アルデュイーノ、もしくはアルドゥイーノ)。その制御系とArduinoシールドと呼ばれる被制御系ボード間の物理インタフェースがArduinoコネクタ(右下)です。
I2C(SCL/SDA)/ADEF(アナログ基準電位)/DIGITAL(PWM兼用)/ IOREF(IO基準電位)/RESET/POWER/ANALOG INのピン配置が決まっています。

Arduinoコネクタのおかげで、制御系とシールドに分離して開発でき、それぞれをArduinoコネクタで接続すれば、Arduinoボードシステムが完成します。

Wikipediaによると、2013年には制御系とシールド、公式非公式合わせて140万台ものArduinoボードが販売されていて、安価にプロトタイプシステム構築が可能となっています。

Arduinoコネクタを持つMCU評価ボードが多い理由その1:市販安価シールド資産が使える

既にこれだけの数のシールドが販売中ですので、MCU開発にそのまま流用や小変更で使えるシールドもあります。

Arduinoコネクタを持つMCU評価ボードが多い理由その1が、この既製品で安価なシールド資産が使えるからです。使用部品選定やアートワークパターンなども十分に練られた既製品が入手できるのです。しかもこれらは殆どの場合、オープンソースハードウェアなので詳細が開示済みです。

シールドは縦方向に段重ね(スタッカブル)できますので、複数段を重ね機能増加も可能です。

ハードウエア基板を0から動作するレベルにまでもっていくのは、時間もコストも掛かります。市販シールドを利用したプロトタイプ開発が可能なことが、MCU評価ボードにArduinoコネクタを持つ理由です。

Arduinoコネクタを持つMCU評価ボードが多い理由その2:MCU性能評価に使える

シールドを使ってハードウエアが用意されれば、後はソフトウェアです。

図のようにシールドは、複数ベンダーのMCU評価ボードに使えますし、同一ベンダー内の異なるMCUの性能評価にも使えます。

例えば、最も重要な処理に必要なシールドと、その制御ソフトウェアのみをプロトタイプ開発し、MCU性能が重要処理に十分か否かの評価を行います。この評価結果で、コストパフォーマンスに優れたMCU選択が可能となります。

場合によっては、ピンコンパチブル性を利用して他ベンダーのMCU選択も可能です。Cortex-M系MCUはどれも似通ってはいますが、例えば、サイプレスのPSoCシリーズはアナログブロントエンド機能内蔵など、各ベンダーでそれぞれ特徴があります。これらMCU特徴を活かした開発で競合他社との差別化もできます。

MCU評価ボードプロトタイプ開発スピードを上げるマイコンテンプレート

その1もその2もポイントは、プロトタイプ開発のスピードです。効率的に、しかも精度良くプロトタイプ構築し評価するには、MCU製品で使用頻度が高いLCD出力やアナログポテンショメータ入力、LED出力などの単機能シールドを複数使うよりも、これら機能実装済みの汎用Baseboardを使う方が、より低コストにプロトタイプハードウエアの構築ができます。

関連投稿:CY8CKIT-042とCY8CKIT-042-BLEへの機能追加、サンプルソフトが直に試せるマイコン開発環境の章

弊社マイコンテンプレートは、Baseboard動作に必要なソフトウェアをBaseboardテンプレートで提供済みです。開発要件に必要なシールドを見つけ、シールド単体でMCU性能評価を行い、さらにBaseboard実装機能を付加すれば、MCU製品完成形により近いプロトタイプシステムでの評価も可能です。

MCUプロトタイプ開発をスピードアップさせるマイコンテンプレート
MCUプロトタイプ開発をスピードアップさせるマイコンテンプレート

マイコンテンプレートは、MCU評価ボードプロトタイプ開発の「速さ」をより早めます。

MCU評価ボード、IDE、開発ツール、ベンダーが変わってもテンプレート本体は不変

テンプレート本体、具体的にはアプリケーションのLauncher機能は、MCU評価ボード、IDE、コード生成ツールなどの開発ツール、ベンダー各社には依存しません。つまり、単純なC言語でできています。

従いまして、開発ツールやIDEが時代により変化・更新しても、テンプレート本体は変わりません。ご購入頂いた弊社マイコンテンプレートの付属説明資料は、発売当時の環境をベースに解説しております。しかし、最新版のIDEやコード生成ツールに更新されても、このテンプレート本体は不変ですので、安心してお使いください。

まとめ

Arduinoコネクタを持つMCU評価ボードが多い理由は、市販安価シールド資産を活用し、MCU性能評価へも活用すれば、MCUプロトタイプ開発が効率的かつ容易になるからです。プロトタイプ開発スピードをさらに上げるためマイコンテンプレートが役立つことも示しました。

マイコンは種類が多く、どのベンダーの何を使って開発すれば良いかというご質問を時々頂きます。お好きなベンダーのArduinoコネクタを持つMCU評価ボードを使ってプロトタイプ開発することをお勧めしています。制御系ベンダー差は、Arduinoコネクタで消えます。先ずは着手、あえて言えば被制御系の開発着手が先決です。

MCUパラメタ設定を改善したSTM32CubeMX version 5

2018年12月STマイクロエレクトロニクス(以下STM)のMCUコード生成ツール:STM32CubeMXがversion 5にメジャー更新しました。本稿は、このSTM32CubeMX version 5について主に旧version 4をご利用中の方を対象に説明します。初めてSTM32CubeMXを利用される方は、インストール方法などは旧version 4で示したコチラの関連投稿と同じですのでご覧ください。

STM32CubeMX version 5への更新方法

STM32CubeMXは、スタンドアロンアプリケーションとして動作させる場合と、Eclipse IDEのプラグインとして動作させる場合があります。更新が簡単なのは、先に説明するスタンドアロン版です。Eclipse IDEは、SW4STM32を例にプラグイン更新方法を示します。

スタンドアロン版STM32CubeMXの更新方法

デフォルト設定を変えてなければ、STM32CubeMX起動時に自動的に更新を検出しInstall Nowクリックで最新版がダウンロードされます。ダウンロード後、一旦STM32CubeMXを終了し、再起動でversion 5への更新が始まります。

STM32CubeMX version 5への更新(スタンドアロン版)
STM32CubeMX version 5への更新(スタンドアロン版)

スタンドアロンの場合は、更新開始時Access Errorが表示されることもあります。この時は、「管理者として実行」で更新プロセスが始まり、STM32CubeMX version 5の初期画面になります。

STM32CubeMX version 5初期画面
STM32CubeMX version 5初期画面

Eclipse IDE(SW4STM32)プラグイン版STM32CubeMXの更新方法

Eclipse IDEのプラグインでSTM32CubeMX機能を追加した場合は、旧プラグインを削除した後にversion 5プラグインをインストールします。SW4STM32のプラグイン削除は、Help>About EclipseからInstallation Detailsボタンをクリックし、Installed Softwareタブから旧STM32CubeMXを選択、Uninstallまたは、Updateクリックで行います。

旧版STM32CubeMXプラグイン削除
旧版STM32CubeMXプラグイン削除

Uninstallの方が確実です。削除後、新しいSTM32CubeMX version 5プラグインを再インストールすれば、スタンドアロンと同じ初期画面が示されます。SW4STM32のUpdate checkでは、STM32CubeMXの更新を検出できませんので、手動でプラグイン削除、更新された新プラグインのインストールが必要です。

STM32CubeMX version 5改善点

version 5のユーザマニュアルUM1718 Rev 27から、以下の点がversion 4から改善されました。
関連投稿:MCU更新情報取得方法と差分検出ツール、の “2PDF資料を比較するDiffPDF” の章参照

・MCUパラメタ設定にマルチパネルGUI採用(UM1718、5章)
・CMSIS-Packサポート(UM1718、7章)
・X-Cube-BLE1ソフトウェアパック(UM1718、14章)
・ST-TouchGFX追加(UM1718、17章)

一言で言うと、5章:カラフルになったパラメタ設定、7章:CMSIS-Pack追加が可能、14章と17章:2チュートリアル追加です。CMSIS-Packとチュートリアルは、必要に応じて理解すれば良いでしょう。

そこで、基本操作の5章STM32CubeMX version 5のパラメタ設定を、弊社STM32F0シンプルテンプレートで用いたSTM32CubeMX version 4プロジェクトファイルを使って説明します。
※STM32F0シンプルテンプレート(¥1,000販売中)をご購入頂いてない方のために、上記プロジェクトファイルのみをコチラから無料でダウンロードできます(zipファイルですので解凍してご利用ください)。

マルチパネルGUIによるMCUパラメタ設定改善の実例

Open Existing Projectsで上記STM32F0シンプルテンプレートプロジェクトファイル:F0SimpleTemplate.iocを選択すると、旧versionで作成されていること、FWも更新されていて、最新環境へ更新(Migrate)するか、FWはそのままSTM32CubeMXのみ更新(Continue)かの選択肢が表示されます。
※MigrateとContinueの差は後述します。

旧版プロジェクトファイルを開いた時のメッセージ
旧版プロジェクトファイルを開いた時のメッセージ

今回は、Migrateを選択すると、見慣れたPinout & Configuration画面が現れます。

STM32F0シンプルテンプレートのプロジェクトを開いた画面
STM32F0シンプルテンプレートのプロジェクトをversion 5で開いた画面

Connectivity >を開くと、STM32F0シンプルテンプレートで使用中USART2の各種パラメタ設定値がマルチパネルで表示されます。

STM32F0シンプルテンプレートプロジェクトのUSART2マルチパネル画面
STM32F0シンプルテンプレートプロジェクトのUSART2マルチパネル画面

このマルチパネル表示がversion 5で最も改善された機能です。従来版では、複数タブで分離表示されていた設定が、1画面のユーザインタフェース:UIに集約されました。より解りやすく、より簡単にMCUパラメタ設定ができます。

その他の機能は、カラフルな見た目になってはいますが、旧versionと殆ど同じと考えて良いと思います(開発元には失礼ですが…😅)。不明な点は、HelpでUM1718が直に表示されるので調べられます。

また、販売中の弊社STM32Fxテンプレート付属説明資料のSTM32CubeMXは、version 4で説明しておりますが、この程度の改版ならば、説明資料をversion 5用に作り直さなくても、ご購入者様に内容をご理解頂けると思います。

旧版プロジェクトファイルを開いた時のMigrateとContinueの差

STM32CubeMXは、UIをつかさどる共通部分と、STM32MCUファミリ毎の個別ファームウエア:FW部分の2つから構成されています。本稿は、UI共通部分の更新を説明しました。FWもバグとりや、ファミリへの新MCU追加などで更新されます。周辺回路の初期化CコードやHAL:Hardware Abstraction Layer library 、LL: Low-Layer library利用のAPI生成は、FW部分が担います。

Migrateは、このUIとFWを同時に最新版へ更新します。一方、Continueは、UI部分のみ更新しFWは既存のままです(安全側更新とも言えます)。FW更新で既製ソフトウェアへ悪影響がでる場合には、Continueを選択することもあるでしょう。しかし、基本的にはUI、FWともに最新版へ更新するMigrateが本来の更新方法です。

万一FW更新でトラブルが発生した時は、デフォルトでSTM32Cube>Repositoryフォルダに新旧FWがzipファイルで保存されていますので、FWのみ元に戻すことも容易です。

*  *  *

Postscript:24日午前3時~午前4時5分に実施されたSTM32G0 and STM32CubeMX 5.0ウェブナーどうでしたか? 解りやすいスライドが豊富で、STM32G0の良さがより理解できました。全機能無償のKeil uVision5対象デバイスにSTM32L0、STM32F0とSTM32G0も加わりました。STM32CubeMX 5.0と評価ボードNUCLEO-G071RBを使ったLチカコード生成も解りやすかったですね😃。
※タイムリーなことに、1月25日STM公式ブログ上で上記一連の処理がYouTubeに投稿されました。

さて、ウェブナー参加で目から鱗が落ちたのは、STM32G0の広い応用範囲と低電力動作を活かすには、デバイス間移植に優れるHAL APIよりも、デバイス最適化のLL API利用が適してかもしれない点です。
HAL利用のSTM32Fxテンプレートとは異なるアプローチ、例えば、STM32Gxテンプレートの新開発が必要になりそうです👍。

関連投稿:HALとLLの違いは、STM32CubeMXの使い方、“STM32CubeMXの2種ドライバライブラリ”の章参照
関連投稿:STM32Fxテンプレートのアプローチは、STM32評価ボードNUCLEO-F072RB選定理由参照

MCU更新情報取得方法と差分検出ツール

MCUプロジェクト開発中は、雑音に邪魔されず当面の課題解決に集中したいものです。しかし、MCU最新情報や開発ツール更新などは、いつ発生するかが不明で、開発中であってもこれらの情報把握は大切です。新情報が、課題解決の決め手になる可能性もあるからです。各ベンダーもこの最新情報提供のために便利機能を提供中です。

今回は、 STマイクロエレクトロニクス(以下STM)に追加された更新情報メール通知機能と、更新情報量が多い時に効率的に差分を検出するツール:DiffPDFを紹介します。

STM最新MCUと更新情報のメール通知機能

STMは、STM32マイコンマンスリー・アップデートを配布中です。月一回、MCU最新情報や資料の更新情報へ簡単にアクセスできます。ただし、マンスリー・アップデートは、全てのSTM32MCU更新情報を集約した言わばポータルサイトです。自分が開発中のMCU情報を含む場合もありますし、そうでない場合もあります。開発スケジュールが押し迫ると、当該重要情報や更新を見落とす事があるかもしれません。

そこで、自分の開発関連情報のみをピックアップし、コンテンツ更新時は毎週木曜日にメール通知する機能がSTMサイトに追加されました。設定方法を、STM32MCUコード生成ツール:STM32CubeMXのユーザマニュアル:UM1718を例に紹介します。

UM1718をお気に入りに登録
UM1718をお気に入りに登録する方法

STMサイトにアクセスし、UM1718で検索すると、右上に「お気に入りに登録>」ボタンが現れます。これをクリックし、「更新情報メールを受け取りますか?」に「はい」を選択するだけです。UM1718以外でも同様です。

更新情報がほしいページの「お気に入りに登録>」クリックで、マイページのお気に入り一覧に追加され、更新発生の木曜に一括してメール通知されます。削除も簡単です。

マイページのお気に入り一覧
マイページのお気に入り一覧、削除も簡単

マンスリー・アップデートよりも早く、しかも、自分の開発必須情報に絞った更新通知メールなので、更新イベントの見落とがなく便利です。

効率的に更新情報量をさばく

更新通知を受け取った後は、どこが変わったかを素早く把握したいものです。新しいSTM32CubeMX version 5のユーザマニュアル:UM1718 Rev 27全327ページを例に、更新箇所特定ツールDiffPDFを紹介します。

STM32CubeMXは、MCU処理スケルトンと周辺回路初期化処理Cソースを生成するツールです。周辺回路の設定はGUIで行い、STM32MCU開発の最初の一歩を踏み出す時に使います。2018年末、このSTM32CubeMXがversion5に更新されました。

STM32CubeMX v5は、v4にマルチパネルGUIを加えパラメタ設定をより容易に、さらに、MCU性能評価やシミュレーション機能なども追加されました。このSTM32CubeMXのユーザマニュアルがUM1718です。

既にSTM32CubeMXを使いこなしている方にとって、Rev 27の327ページは分量が多すぎます(初めてSTM32MCUを使う方は、UM1718を読むことをお勧めします。日本語版もありますが最新版和訳ではないことに注意してください)。このように改版資料の情報量が多い時は、DiffPDFが便利です。

2PDF資料を⽐較するDiffpdf Portable

Diffpdf Portableは、2つのPDF資料を比較し差分を明示するWindows 8.1用のツールで、Windows 10でも動作します。UM1718 Rev27とRev 25をCharactersで比較した例が下記です。

DiffPDF新旧UM1718比較結果
DiffPDFで新旧UM1718を比較した結果

マルチパネルGUI によりSTM32CubeMXのuser interfaceが大きく変わったことが一目で解ります。
※効率的に更新箇所、差分を見つけることに焦点を置きましたので、新しいSTM32CubeMX version 5の説明は、後日改めて行う予定です。

DiffPDFを使えば、どこが変わったかを素早く見つけられるので、ハイライト箇所のみを読めば短時間で内容把握ができます。その結果、更新内容が、現状課題の解決に役立つか否かの判断も早くできます。

まとめ

忙しいプロジェクト開発中であっても、MCU最新情報や開発ツール更新イベントは発生します。

STMサイトに追加されたお気に入り登録を使えば、自分の開発に必要情報の更新時のみ木曜メールで通知されるので、プロジェクト関連情報の変更イベントを見落としなく把握できます。

さらにDiffPDFを使えば、更新情報量が多くても、どこが変わったかが簡単に見つけられるので、更新内容がプロジェクトの課題解決に役立つか否かの判断が早くできます。

STM32G0とSTM32CubeMX 5.0ウェビナーのお知らせ

STM32G0とSTM32CubeMX 5.0ウェビナー
STM32G0とSTM32CubeMX 5.0ウェビナー(出典:STMサイト)

STM32G0とSTM32CubeMX 5.0のWebinarが、日本時間2019年1月24日、木曜午前3時から午前4時に開催されます。アジェンダは、下記です。

  • Overview of STM32 microcontrollers, with focus on the STM32G0
  • Key features and peripherals embedded in the STM32G0
  • Description of the STM32CubeMX 5.0 graphical software configuration and code generation tool
  • Demonstration of hands-on examples running on the STM32G0 developed with the full-featured, free-to-use Keil MDK for STM32G0 and STM32CubeMX 5.0

木曜勤務に差し支えるかもしれない深夜ですが、PCさえあれば誰でも無料で視聴できます(要ログイン)。

関連投稿:守備範囲が広いSTM32G0

1週間位待てば、STMサイトのビデオコーナーでいつでも見ることができようになるとは思いますが、新汎用MCU STM32G0とそのAPI開発ツールSTM32CubeMX 5.0の新鮮な情報、参加者主催者のQ&Aが直接聞ける機会ですので、お知らせします。

守備範囲が広いSTM32G0

2018年12月のSTM32マイコンマンスリー・アップデートのトップページに、先日投稿した新汎用MCU STM32G0の概要とブロック図が記載されました。また、12月18日のEDN JapanにもIoT機器を小型化効率化する32ビットマイコンとしてSTM32G070(48ピン/ROM128KB)が約69セントと安価であることが紹介されています。

STM32G0シリーズブロック図
STM32G0シリーズブロック図(出典:マンスリー・アップデート2018年12月トップページ)

本稿は、これら新MCU STM32G0記事を整理し、開発ベースとして最適なアクセス・ライン製品STM32G71と評価ボードの入手性、価格について示します。

3製品:バリュー・ライン、アクセス・ライン、アクセス・ライン&エンクリプション

STM32G0の説明がある時、3製品のどれを説明しているかを区別、意識する必要があります。というのは、STM32G0のアプリケーション守備範囲が、とても広いからです。3製品の特長をまとめたのが下表です。

STM32G0の3製品特徴
製品ライン 型番例 特徴
バリュー・ライン STM32G70 コスト最重視のエントリクラス製品
アクセス・ライン STM32G71 ハードウェアセキュリティ搭載の標準製品
アクセス・ライン&エンクリプション STM32G81 アクセス・ラインに暗号化機能搭載製品

EDN Japan記事のSTM32G070(48ピン/ROM128KB)の69¢は、バリュー・ラインのことです。マンスリー・アップデートのブロック図は、3製品機能をAND表示したものです。

3製品差を理解するには、STMサイトのSTM32G0製品シリーズと、オンライントレーニング資料STM32G0 Series Presentation P2が役立ちます。

STM32G0製品シリーズ
STM32G0製品シリーズ(出典:STMサイト)
STM32G0の3製品差
STM32G0の3製品差(出典:STM32G0 Series Presentation P2)

現在供給中の3製品差と、今後のラインナップを整理すると以下になります。

供給中デバイスと開発予定ラインナップ
供給中デバイスと開発予定ラインナップ(出典:STM公式ブログ)

バリュー・ライン(灰色)
アナログフロントエンド向きのアプリケーションに特化した2.5Mspsの高速12ビットADC実装のバリュー・ライン(STM32G070)は、価格最重視のエントリ製品でEDN Japan記事のように1$以下の調達ができます。また、供給中と今後のラインナップの図から、8/20ピンなどの小ピン&小ROM製品が予定されていることも解ります。

アクセス・ライン(水色)
バリュー・ラインと同様小ピン&小ROM製品に加え、100ピン&大ROM製品の予定もあります。アプリケーションに応じてDAC、USB-PO、CAN FDなどの周辺回路が実装可能です。さらに、1.65-3.6Vと他製品より低電圧側への広い動作も特徴です(Presentation P2参照)。

これらの仕様の幅広さから、STM32G0の最も標準的なベースMCUと言えます。アクセス・ラインでプロトタイプ開発しておけば、内蔵周辺回路が同じシリーズのバリュー・ラインやアクセス・ライン&エンクリプションへそのまま応用・適用できるからです。

アクセス・ライン&エンクリプション(紺色)
IoTアプリケーションでは必須になるハードウェア暗号化機能をアクセス・ラインに追加しています。

STM32G0の幅広いMCUコア性能

これも先の投稿で示したSTM32FxとSTM32G0の違い図から、STM32G0はSTM32F0より低い消費電力と、STM32F1並みの高性能をハイブリッドしたMCUであることが解ります。つまり、STM32G0(Cortex-M0+/64MHz)で、F0~F1のMCUコア性能範囲をカバーできるのです。

STM32G0のGは、アプリケーション守備範囲の広さを示すGlobal、またはGeneral(汎用性)を表しているのかもしれません。STM32FxのFは、Flexibilityでしょうか?

STM32G0のサンプルソフトウェア

アクセス・ラインSTM32G071RB(64ピン/ROM128KB)実装の評価ボードNUCLEO-G071RBは、STMの公式サンプルソフトウェア数が159個(AN5110参照)と現在最も多く、STM32G0のアプリケーション開発に適していると思います。

この評価ボードとサンプルソフトを活かして開発したソフトは、バリュー・ラインやアクセス・ライン&エンクリプションへも同じシリーズですので、容易に応用・流用が可能です。

また、暗号化機能搭載のアクセス・ライン&エンクリプションSTM32G081RB搭載の評価ボードSTM32G081B-EVAL board:$382を使えば、暗号化認証手順や鍵管理などのセキュリティ関連が効率的に習得できるハズ(?)です。
※セキュリティ関連は、ホストとスレーブの2役が必要など、筆者自身不明な点も多いため、今後別途調査したいと考えています。

STM32G0の入手性と価格

ネット通販が盛んになったおかげで、近頃は新発売後1ヶ月も経っていない最新デバイスであっても、個人で1個から入手できます。

2018年12月24日現在、Mouser(マウサー日本)のアクセス・ラインSTM32G071RB(64ピン/ROM128KB)と、評価ボードNUCLEO-G071RBの価格表です。もちろん代理店経由なら、この価格よりも安く入手できるでしょう。

STM32G0の価格(2018年12月調査)
Mouser入手の場合 数量 価格(JPY
STM32G071RB 1 398
10 360
100 298
1000 213
NUCLEO-G071RB 1 1,203

STM32G0は、たとえ個人でも、入手性良く低価格で入手できると言えるでしょう。

まとめ

新発売STM32G0は、従来メインストームSTM32F0~STM32F1で開発していた広いアプリケーション範囲をカバーできる汎用MCUです。またIoTエッジMCUに必要になる暗号化機能をハードウェアで実装済みの製品もあります。

3種ある製品のうち、アクセス・ラインのSTM32G071RB(64ピン/ROM128KB)実装の評価ボードNUCLEO-G071RB は、STM公式サンプルソフトウェア数が現時点で最も多く、STM32G0の汎用性、広範囲アプリケーション対応性を活かした開発のベースに最適と評価しました。

これら評価ボードとSTM32G071RBデバイスは、個人でも比較的安価に入手できることも分かりました。

STM新汎用MCU STM32G0

2018年12月4日、STマイクロエレクトロニクス(以下STM)の公式ブログで新汎用MCU STM32G0、Cortex-M0+/64MHzを発表しました。以下の特徴があります。
※汎用=メインストリームと本稿では考えます。

新汎用STM32G0、Cortex-M0+/64MHz、メインストリーム90nmの特徴

STM32メインストリームMCU
STM32メインストリームMCU:STM32FxとSTM32G0の違い(出典:STM32 Mainstream)
  • 「メインストリーム初の90nmプロセスMCU」:従来メインストリームSTM32F0は180nmプロセス
  • 「ハイブリッド」:STM32L4(90nmプロセス)の低消費電力とSTM32F0のメインストリームの両方をハイブリッド
  • 「モアIO」:64ピンパッケージSTM32F071比較でIOピン9本増加、48ピンでもIOピン7本増加
  • 「単一電源供給」:PCBパターン設計が容易
  • 「セキュリティハード内蔵/非内蔵」:128/256ビットAES、セキュアブート、乱数発生器、Memory Protection Unit (MPU)
  • 「USB-C」: IPによりUSB-Type-C可能
  • NUCLEO-G071RB board」:低価格評価ボード提供中、「STM32G081B-EVAL board」:$382
STM32G0ラインナップ (出典:STM公式ブログ)
供給中の3種製品とSTM32G0ラインナップ (出典:STM公式ブログ)
STM32G0 Product Lines(出典:STM32G0 Serie Presentation)
STM32G0 Product Linesから3種製品の違いが解る(出典:STM32G0 Series Presentation)

STM32G0オンライントレーニング

データシートよりも解りやすいSTM32G0オンライントレーニング資料が多数あります(要ログイン)。

例えば、以下のような興味深い情報が得られます。各数ページの英文スライド形式ですので、STM32G0以外のMCUを使用中の方でも、チョットした空き時間に読めます。

  • STM32G0 Series Presentation:内蔵ハードウェアによりValue/Access/Access & Encryptionの3種製品特徴
  • ARM Cortex-M0+ (Core):Cortex-M0とM0+の差、Memory Protection Unit 説明
  • Safety:安全基準とその実現方法
  • Random Number Generator (RNG):アナログノイズに基づいた32ビット乱数発生
  • STM32G0 Boards:NUCLEO-G071RB board解説

STM32CubeMX V5.0.0

STM32G0のコード生成は、STM32CubeMX V5.0.0からサポートされました。

V4までと同じSW4STM32、TrueSTUDIO、両方のIDEで使えます。STM32CubeMX V5が提供するMCUファームパッケージで、本ブログ関連を抜粋したのが下表です。

STM32CubeMX V5.0.0提供MCUファームウェア版数
対象MCU firmware(評価ボード、STM32G0ボード暫定) 最新Version
STM32F1(STM32F103RB、Cortex-M3/64MHz V1.7.0
STM32F0(STM32F072RB、Cortex-M0/48MHz V1.9.0
STM32G0(V5で新設、STM32G071RB、Cortex-M0+/64MHz V1.0.0

STM32Fxテンプレートでも使用中のHAL(Hardware Abstraction Layer)ライブラリでコード生成すれば、STM32F1、STM32F0とSTM32G0間で、流用/応用が容易なソフトウェア開発ができると思います。

まとめ

新発売のSTM32G0は、90nmプロセス初のメインストリーム汎用MCUです。一般的に製造プロセスを微細化すれば、動作クロックが高速になり電力消費も低下します。さらに、STM32G0は、Cortex-M0より性能が向上したCortex-M0+コアの採用により、Cortex-M3のSTM32F1クラスに並ぶ高性能と超低消費電力動作をハイブリッドした新汎用MCUと言えます。

周辺回路では、IoTで懸念されるセキュリティ対策をハードウェアで実施、IOピン数増加、PCB化容易、USB-Type Cインタフェース提供など、各種IoTエッジMCU要求を満たす十分な魅力を持つMCUです。

競合するライバルMCUは、Cortex-M0+のNXP S32K116/S32K118(2018/7発売)などが考えられます。

関連投稿:NXP新汎用MCU S32K1

NXP新汎用MCU S32K1

NXPセミコンダクターズ(以下NXP)から車載・産業機器向けの、新しい汎用Cortex-M0+/M4 MCU S32K1ファミリが発売中です。
同社の汎用MCUと比べ、何が新しいかを調べました。

S32K1の特徴(汎用MCUとの差分)

セキュリティ強化ARMコアは、Cortex-M23/M33があります。ところが、NXPのS32K1ファミリは、従来のCortex-M0+/M4コアを使います。Cortex-M0/M0+/M3汎用MCUと比べると、差分として以下の特徴があります。

AEC-Q100グレード1規格準拠

AEC-Q100:Automotive Electronics Council、車載用電子部品信頼性の規格化団体の規格AEC-Q100は、世界標準規格で欧米の車載向け集積回路の規格。製品使用温度範囲によりグレード0~3まであり、グレード0が-40℃から+150℃で最も広範囲、グレート1は-40℃から+125℃。

セキュリティ強化ハードウェア内蔵MCU

SHE準拠Cryptographic Services Engine (CSEc) - AES128、セキュアブート、ユニークID

専用IDEのソフトウェア開発

S32 Design Studio(Processor Expert)、無償、コードサイズ制限なし

車載・産業 両方向けの汎用MCUで最低15年供給

S32K11x(Cortex-M0+):S32K116/S32K118(2018/7発売)、評価ボード$49
S32K14x(Cortex-M4):S32K142/S32K144/S32K146/S32K148(2017/12発売)、評価ボード$49/$149

S32K MCUs for Automotive and Industrial Applicationsから抜粋したS32K1ファミリの特徴が下図です。図はAEC-Q100グレード0と表記がありますが、Cortex-M0+のS32K11xは、データシートによるとグレード1です。

S32K1特徴
S32K1の特徴 (出典:S32K MCUs for Automotive and Industrial Applications)

S32K118EVB-Q064はDigiKeyで購入可能

新汎用MCUのセキュリティ強化策と専用IDE:S32 Design Studio(Processor Expert)

IoTでは汎用MCUであってもセキュリティ強化が必須です。現在、対策として3アプローチあります。

  1. 汎用コアMCUに、セキィリティ強化回路を内蔵(本稿)
  2. 汎用コアMCUに、外付けセキュリティデバイスを追加 → 関連投稿:セキュリティ強化デバイス:A71CH
  3. セキュリティ強化コアを採用 → 関連投稿:セキュリティ強化ARMコアCortex-M23/M33

1のメリットは、2と比べ部品点数が少ないこと、3と比べ従来の汎用コア開発との親和性が高く、セキュリティ関連開発が容易になる可能性があることです。

専用IDE:S32 Design StudioのAPI生成ツールは、旧FreescaleのProcessor Expertです。NXPが、なぜ既存LPCXpresso IDEでなく、専用S32 Design studioとProcessor Expertを用いたかは不思議です。が、Processor Expertという優れたAPI生成ツールのことを知っている開発者にとっては朗報になるかもしれません。

S32K1の魅力:車載・産業機器・IoT全共用

現在のS32K1ファミリ想定アプリケーションは下記です。車載・産業向けに別々のS32K1が有るわけではなく共用です。

S32Kアプリケーション
S32Kアプリケーション(出典:車載・産業機器向け Arm® Cortex®ベース S32Kマイクロコントローラ (REV 3.1))

2017~2018年に供給が始まり、最低15年の供給保障、全てに評価ボードもあります。Cortex-M0+とCortex-M4間の接続は、次世代車載ネットワークCAN FDです。

S32K14x(Cortex-M4)がNode MCU化しIoT無線通信機能を実装すれば、S32K11x(Cortex-M0+)をEdge MCUとして利用可能で、S32K1が「車載・産業機器・IoT全てを狙える新しい汎用MCU」に大化けする可能性はあると思います。

関連投稿:Node MCUとEdge MCU、気になる点2の章参照

そのほか、FlexIO、FlexTimerなどの新しい周辺回路も実装されていますので、S32K1を引き続き調査する予定です。

Cortex-M0/M0+/M3比較とコア選択

デバイスが多く選択に迷う方も多いマイコン:MCU。周辺ハードウェアも異なるので、最初のMCUコア選択を誤ると、最悪の場合、開発のし直しなどに繋がることもあります。

本稿は、STマイクロエレクトロニクスのSTM32マイコンマンスリー・アップデート10月号P8のトレーニング資料、STM32L0(Cortex-M0+)掲載のARM Cortex-M0/M0+/M3の比較資料を使ってMCUコア選択方法についての私案を示します。

STM32L0(Cortex-M0+)トレーニング資料

各種STM32MCU(Cortex-Mx)毎の非常に良くできた日本語のテクニカルスライド資料が入手できます。例えばSTM32L0(Cortex-M0+)は194ページあり、1ページ3分で説明したとしても、約10時間かかる量です。他のMCU(Cortex-Mx)資料も同様です。

開発に使うMCUが決まっている場合には、当該資料に目を通しておくと、データシート読むよりも解りやすいと思います。しかし、Cortex-Mxコア差を理解していない場合や、開発機器の将来的な機能拡張や横展開等を考慮すると、どのMCU(Cortex-Mx)を現状開発に使うかは重要検討項目です。

ここで紹介するSTM32L0(Cortex-M0+)トレーニング資料には、Cortex-M0+特徴説明のため、通常データシートには記載が無いCortex-M0やCortex-M3との違いも記載されています。

そこで、STMマイコンのみでなく一般的なARMコアのMCU選択に重要な情報としても使えるこの重要情報ページを資料から抜き出しました。

Cortex-M0/M0+/M3比較

バイナリ上位互換性

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

先ず、P22のCortex-Mプロセッサのバイナリ互換性です。この図は、Cortex-Mxコアの命令セットが、xが大きくなる方向には、上位互換であることを示しています(ただし再コンパイル推薦)。逆に、xが小さくなる方向は、再コーディングが必要です。

つまり、Cortex-M0ソースコードは、M0+/M3/M4へも使えるのです。Cortex-Mxで拡張された命令セットの特徴を一言で示したのが、四角で囲まれた文章です(Cortex-M3なら、“高度なデータ処理、ビットフィールドマニピュレーション”)。
さらに、STM32MCU内臓周辺ハードウェアは、各シリーズで完全互換なので、同じ周辺ハードウェア制御ソースコードはそのまま使えます。

もちろんxが大きくなるにつれコア性能も向上します。しかし、よりCortex-Mx(x=+/3/4)らしい性能を引き出するなら、この四角文章のコーディングに力点を置けば、それに即した命令が用意されているので筋が良い性能向上が期待できる訳です。

超低電力動作Cortex-M0+、39%高性能Cortex-M3

P22ではCortex-M0とM0+の違いが解りません。そこで、P19のCortex-M0/0+/3機能セット比較を見るとCortex-M0+が、Cortex-M0とCortex-M3の良いとこ取り、中間的なことが解ります。また、Cortex-M3が、M0比39%高性能だということも解ります。

Cortex-M0_M0+_M3セット比較(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0_M0+_M3セット比較(出典:STM32L0(Cortex-M0+)トレーニング資料)

具体的なCortex-M0+とCortex-M0との差は、P20が解りやすいです。Cortex-M0+は、性能向上より30%もの低消費動作を重視しています。また、1サイクルの高速GPIOも特徴です。Cortex-M0+は、M0の性能を活かしつつより既存8/16ビットMCU市場の置換えにチューニングしたからです。

Cortex-M0とCortex-M0+の比較(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+の比較(出典:STM32L0(Cortex-M0+)トレーニング資料)

さらにP21には、低電力化に寄与した2段になったパイプラインも示されています。Cortex-M0/M0+は、今年初めから話題になっている投機的実行機能の脆弱性もありません。

Cortex-M0とCortex-M0+のブランチ動作(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+のブランチ動作(出典:STM32L0(Cortex-M0+)トレーニング資料)

関連投稿:Cortex-Mシリーズは、投機的実行機能の脆弱性はセーフ

共通動作モード:Sleep

Cortex-M0とCortex-M0+の低消費電力モード(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0とCortex-M0+の低消費電力モード(出典:STM32L0(Cortex-M0+)トレーニング資料)

低電力化は、Cortex-M0+で追加された様々な動作モードで実現します。この一覧がP70です。つまり、Cortex-M0+らしさは、M0にない動作モード、LP RUNやLP sleep (Regulator in LP mode)で実現できるのです。

逆に、SleepやSTANBYの動作モードは、Cortex-M0/M0+で共通です。さらに、Cortex-M3でも、アーキテクチャが異なるので数値は異なりますが、SleepとSTANBY動作モードはM0/M0+と共通です。

ここまでのまとめ:Cortex-M0/M0+/M3の特徴

Cortex-M0/M0+/M3の特徴・違いを一言で示したのが、下表です(関連投稿より抜粋)。

各コアの特徴は、MCUアーキテクチャや命令セットから生じます。但し、M0/M0+/M3でバイナリ上位互換性があるので、全コアで共通の動作モードがあることも理解できたと思います。

ARM Cortex-Mx機種 一言で表すと…
Cortex-M0+

超低消費電力ハイパフォーマンスマイコン

Cortex-M0

低消費電力マイコン

Cortex-M3

汎用マイコン

Cortex-M4

デジタル信号制御アプリケーション用マイコン

関連投稿:ARMコア利用メリットの評価

MCUコア選択方法

  1. Cortex-M0またはCortex-M0+コアでプロトタイプ開発を行い、性能不足が懸念されるならCortex-M3コア、さらなる消費電力低下を狙うならCortex-M0+コアを実開発で選択。
    プロトタイプ開発に用いるソースコードは、そのまま実開発にも使えるように、全コアで共通の動作モードで開発。
  2. 早期にプロトタイプ開発を実開発に近い形で作成するために、弊社マイコンテンプレートを利用。

1.は、本稿で示した内容を基に示したMCUコア選択指針です。低消費電力がトレンドですので、プロトタイプ開発の段階から超低消費電力のCortex-M0+を使うのも良いと思います。しかし、初めから超低消費動作モードを使うのでなく、全コアで共通動作モードでの開発をお勧めします。

理由は、万一Cortex-M0+で性能不足が懸念される時にCortex-M3へも使えるソースコードにするためです。プロトタイプ開発の段階では、ソースコードの実開発流用性と実開発の評価を目的にすべきです。チューニングは、実開発段階で行えばリクスも少なくなるでしょう。

2.は、プロトタイプ開発実現手段の提案です。マイコンテンプレートは、複数のサンプルソフトを結合して1つにできます。実開発に使える(近い)サンプルソフトさえ見つけられれば、それらをバラック的にまとめて動作確認できるのです。これにより、当該コアのプロトタイプ評価が早期にできます。

また、マイコンテンプレートで使用したSTM32評価ボードは、ボードレベルでピンコンパチなのでCortex-M0/M0+/M3への変更も簡単です。

関連投稿:マイコンテンプレートを使ったアプリケーション開発手順

MCUコア選択の注意事項:重要度評価

ARMコア向けの弊社マイコンテンプレートは、全てCortex-M0/M0+/M3共通の動作モードで開発しています。
その理由は、テンプレートという性質・性格もありますが、本稿で示した他のARMコアへのソースコード流用性が高いからです。試しに開発したソースコードであっても、無駄にはならないのです。

最後に、P184、P185に示されたCortex-M0(STM32F0)とCortex-M3(STM32L1)、Cortex-M0+(STM32L0)のADCの差分を示します。

Cortex-M0/M0+/M3のADC比較1(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較1(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較2(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-M0/M0+/M3のADC比較2(出典:STM32L0(Cortex-M0+)トレーニング資料)

STM32MCU内臓周辺ハードウェアは、各シリーズで完全互換と先に言いましたが、スペックを細かく見るとこのように異なります。

このハードウェア差を吸収するのが、STM32CubeMXで提供されるHAL(Hardware Abstraction Layer)です。つまり、STMマイコンを使うには、コア選択も重要ですが、STM32CubeMX活用も同じように重要だということです。もちろん、STM32FxマイコンテンプレートもSTM32CubeMXを使っています。

ARMコアは、バイナリ上位互換ができる優れたMCUコアです。MCUベンダーは、同じARMコアを採用していますが、自社のMCU周辺ハードウェアレベルにまで上位互換やその高性能を発揮できるような様々な工夫・ツールを提供しています。

開発MCUを選択する時には、コア選択以外にも多くの選択肢があり迷うこともあるでしょう。多くの場合、Core-M0/M0+/M3などの汎用MCUコアでプロトタイプ開発を行えば、各選択肢の重要度評価もできます。スペックだけで闇雲に選択するよりも、実務的・工学的な方法だと思います。

STM32MCUのアンチ・タンパ機能

STマイクロエレクトロニクス(以下STM)のSTM32MCUマンスリー・アップデート最新10月号から、アンチ・タンパ機能を紹介します。

関連投稿:「日本語マイコン関連情報」のSTM32マイコン マンスリー・アップデート

タンパとは

タンパ:tamperとは、(許可なく)いじくることです。例えば、MCUパッケージをこじ開けるなどの行為(=タンパイベント)を検出した場合、内部バックアップ・レジスタを全消去し、重要データが盗まれるのを防ぐのがアンチ・タンパ機能です。MCUハードウエアによるセキュリティの一種です。

※マンスリー・アップデート10月号、P13の“STM32のココが便利”、今月のテーマ:~その2~参照

セキュリティの重要性がユーザで認識されつつあるので、開発者としては、「タンパ保護」、「アンチ・タンパ」、「RTCレジスタ保護」、「GPIO設定ロック」などのキーワードは覚えておくと良いでしょう。基本機能実装後にセキュリティを追加する時や、他社差別化に役立つからです。

STM32MCUのセキュリティ機能

マンスリー・アップデート9月号、P12今月のテーマにもセキュリティ機能がありますが、これはSTM32MCU独自というより、ARM Cortex-MコアMCU全てに実装の機能です。STM32MCUと他社の差別化には使いにくいと思います。

差別化に適すのは、ARM Cortex-Mコア以外の周辺回路です。そこで、RTCとGPIOについて、本ブログ掲載中の評価ボード実装MCU、STM32F072RB(Cortex-M0)とSTM32F103RB(Cortex-M3)のタンパ機能設定方法をデータシートで調べました。

出典:STM32F071x8 STM32F071xBデータシート 2017/1版
出典:STM32F103x8 STM32F103xBデータシート 2015/8版

関連投稿:STM32マイコンの評価ボード選定

RTC

MCUで処理実時刻を記録する場合などには、RTCが便利です。

RTCのアンチ・タンパ機能は、アラーム・タイムスタンプとRTCレジスタ保護の2つがあります。RTCレジスタ保護は、RTCレジスタへのアクセス手順のことです。RTC利用時、通常レジスタと異なる面倒な手順でRTCレジスタを設定しているのをサンプルソフトで見た記憶があります。

アラーム・タイムスタンプは、タンパイベント発生時のカレンダーを記録する機能です。但し、データシート内の説明は少なく、実際にソフトウェアでどのように設定すれば機能するかは不明です。

試しにSTM32CubeMXでSTM32F072RBのRTCを設定すると、Tamper 2のみ設定可能です。ヘルプ資料UM1718の説明も少なく、やはり詳細は不明です。
但し、将来アンチ・タンパ機能を実装するなら、Tamper 2に連動してアクティブ化するPA0ピンは、リザーブした方が良さそうです。

STM32F072RBのTamper 2とPA0
STM32F072RBのTamper 2に連動してアクティブ化するPA0ピン

同じ理由で、STM32F103RBならPA13ピンをアンチ・タンパ機能用にリザーブできると良いでしょう。

GPIO設定ロック

GPIO機能を固定するGPIO設定ロックについては、データシート内をTamperで検索してもヒットせず記述もありません。

まとめ

STM32MCUのアンチ・タンパ機能を、STM32マイコン マンスリー・アップデートから抜粋、解説しました。

ユーザがMCUセキュリティを重視しつつあるので、STM32MCUハードウエアが提供するセキュリティの一種であるアンチ・タンパは、他社差別化機能として役立つと思います。

そこで、STM32F072RBとSTM32F103RBのRTC/GPIOソフトウェアでのアンチ・タンパ設定方法をデータシートで調査しましたが、具体的情報は得られませんでした。

対策として、RTC/GPIOサンプルソフトから設定を得る方法があります。但し、ソースコードには、アンチ・タンパ機能の目的や、なぜ面倒な設定手順が必要かについての記述は無いので、マンスリー・アップデートのアンチ・タンパ、RTCレジスタ保護やGPIO設定ロックの理解が、サンプルソフト解読に必要だと思います。

Windows 10更新中断、μT-Kernal、IoTマイコン

Windows 10 1809更新によりユーザファイルが消失するトラブルが発生しています。このためMicrosoftは、Windows 10 1809への更新を一時中断しました。

Windows 10更新でマイドキュメントフォルダ消失!

消失フォルダは、よりによってC:\User\[user name]\Documentsだそうです。マイコンIDEのプロジェクトファイルをマイドキュメントフォルダへ設定している方(私がそうです)は、1809更新を待った方が良いかもしれません。

幸い私の3台のPCは、全て問題なく1809更新に成功し、Documentsフォルダも無事でした。

よく言われる最悪を避けるには、個人データのバックアップです。しかし、Windows機能更新時に、最も守るべきユーザデータを壊す/消すという不具合は、OSとしては許されません。Fast/Slow リングで検証できなかったのでしょうか?

μT-Kernal

OSと言えば、マイコン向けのリアルタイムOS:μT-Kernalの解説がトランジスタ技術2018年10月号の組込みOS入門という別冊にあり、第2章~第6章にリアルタイムOS(RTOS)の説明があります。

また、トロンフォーラムへの登録が必要ですがルネサスRL78/G14向けにポーティングしたμT-Kernalを無料でダウンロードできます。

※μT-Kernalは、ITRONベースに2003年公開の32ビットマイコン向けオープン・ソースRTOS。

本ブログではこれまでRTOSとしてFreeRTOSを紹介してきました。μT-Kernalと比較するとより理解が進むと思います。

関連投稿:マイコンRTOS習得

IoTマイコンとRTOS

IoTマイコンにRTOSを使うと、今回のWindows 10のようなトラブルを招く可能性が生じます。ただIoT通信手段が何になるにせよ、高度なセキュリティや公共リソース利用のための通信処理をマイコンで行うには、RTOSが必要になると思います。

この状況ならいっそのことIoTマイコンには、Cortex-M4(または同等クラス)とCortex-M0/M0+マルチコアを導入し、Cortex-M4でIoT関連処理、Cortex-M0/M0+で従来のMCU処理に2分割、さらにIoT関連処理はMCUベンダーが全て無償提供してくれればIoT MCUの爆発的普及が進むと思います。

つまり、Cortex-M4のIoT関連処理がWindows 10に相当する訳です。これならIoT通信手段やセキュリティが変わってもCortex-M4部分のソフトウェアをOTA(Over The Air)で変えれば対応できます。我々開発者は、本来のマイコン処理に集中できます。
理想的な空想ですがね…。

関連投稿:OTAについてIoT端末の脆弱性対応はOTA:Over The Air更新が必須の章参照