守備範囲が広い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デバイスは、個人でも比較的安価に入手できることも分かりました。

ルネサスE1エミュレータ生産中止予告

2018年12月21日、ルネサス エレクトロニクスのツールニュース2018.12.16号で、使用部品の生産終了のため、E1エミュレータ生産中止が予告されました。来年2019年12月31日が、最終オーダー受付日です。

E1エミュレータ(出典:秋月電子通商)
E1エミュレータ(出典:秋月電子通商、12,600円で販売中)

E1代替エミュレータ

E1エミュレータの代替は、E2またはE2エミュレータLiteです。ターゲットボードとの接続は、同じく14ピンコネクタですのでそのまま使えます。
但し、R8Cは、E1を継続使用、RH850は、E2へ変える必要があります。

ルネサスMCUとエミュレータ対応表(2018年12月現在)
対象マイコン E1 E2 E2 Lite
RL78ファミリ(本ブログ掲載) 対応中 対応中 対応中
RXファミリ 対応中 対応中 対応中
R8Cファミリ 対応中 非対応 非対応
RH850ファミリ 対応中 対応中 非対応

本ブログを始めた頃のR8C開発時代、IDE Hewに使っていたE1エミュレータが、あと1年で生産中止になるとは、私も年を取ったということです。

但し、稼働中のR8Cシステムメインテナンスなどに、ソフトウェア書き換え用として14ピンコネクタ以外のUARTなどを準備していれば別ですが、E1エミュレータは必須ですので、注意してください。

また、新たにRL78開発環境の構築を考えている方は、E1エミュレータではなくE2エミュレータLite(秋月電子:7,980円)の購入をお勧めします。

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

ルネサスCS+ V8.00.00更新

2018年11月27日、ルネサスエレクトロニクス(以下ルネサス)のIDE(統合開発環境)CS+が、V7からV8.00.00にメジャー更新されました。主な変更内容は、11月27日発売の第3世代RX(RXv3)MCUへの対応です。

CS+ V8.00.00無償評価版

CS+は、RL78、RX、RH850、V850、78K0R、78K0のMCU開発に使います。無償評価版は、以下のROM容量制限があります。

無償評価版のROM容量制限
RL78、78K0R、78K0R 64Kバイト以内
RX 128Kバイト以内
RH850 256Kバイト以内

同じくルネサス無償提供EclipseベースIDEのe2 studioは、この容量制限がありません。

しかし、e2 studioにはコンパイラがパッケージされていませんので、各MCU対応のCS+と同じ無償コンパイラをインストールして使用します。その結果、コンパイルできるROM容量は、CS+無償評価版と同じになります。
※CS+もe2 studioも容量制限を外すには、コンパイラ有償ライセンスが必要です。しかし、個人レベルでの購入は、高額出費を覚悟してください。

CS+もe2 studioも機能的には同じです。Eclipse IDEを使った経験が有る方や、世界標準指向ならe2 studio、それ以外は、IDE全機能が1パッケージ提供で、チュートリアル付き、更新方法も簡単なCS+が便利です。

第3世代RXv3の第一弾はモータ制御製品

第3世代RX(RXv3)MCU
第3世代RX(RXv3)MCU(出典:ルネサスサイト)

ルネサス独自開発の32ビットRXv1/RXv2 MCUに対する命令セットの上位互換、5.8 CoreMark/MHzへの性能向上などが特徴の第3世代RXv3製品化第1弾は、モータ制御に適したRX66T(ROM256Kバイト~1Mバイト)です。

RXの性能を活かしたソフトウェアを開発するには、CS+無償評価版では128KバイトROM容量制限があるため力不足です。残念です。

ルネサス買収懸念とリスクヘッジ

11月24日のビジネスジャーナルに、ルネサスの買収に対する懸念記事が掲載されました。本ブログでも10月1日にルネサスのIDT買収の複数懸念記事は紹介しましたが、今回は、インターシル買収と現状のルネサス経営への懸念という点で異なります。

ゴーン容疑者が崖っぷちの日産を復活させたように、経営陣の舵取りは、その会社のみならずルネサスMCUの使用者(我々)の技術人生にも影響を与えます。

車のエンジン ≒ MCU、エンジンの気筒数 ≒ MCUビット数、車所有者 ≒ エンドユーザに割当てると、我々が開発するソフトウェア、ハードウェアの最終利用者は、装置を使うエンドユーザです。このエンドユーザが気にするのは、燃費(消費電力)や安全性(セキュリティ)、トータルコスト等で、どのMCUを使って開発するかを気にするエンドユーザは、殆どいないと思います。

ルネサスCS+のようにROM容量制限がある無償IDEや、MCU毎に専用デバッガが別途必要でArduinoコネクタを持たない評価ボード、これらは他のMCUベンダーのそれらと比べると少数派、日本独自仕様です。

関連投稿:MCU評価ボード2018

もちろん、多数派、世界標準に合わせた環境やMCUを提供することが最上ではありません。しかし、ルネサスの場合、本稿のような独自MCUを新開発する一方で、多数派標準と同じ土俵のARM Cortex-M系Synergy MCUなども提供中です。ルネサスの中に潤沢なリソースがあれば別ですが、これまた日本独自の働き方改革が叫ばれる時期、選択と集中ができていないと感じるのです。

技術者リスクヘッジ
技術者リスクヘッジ

ルネサスが技術的に優れていても、ガラパゴス携帯のようにならないことを祈りつつ、技術者個々人でリスクヘッジ(リスク回避)を考えることも大切だと思わせる記事内容です。

関連投稿:ルネサスの買収に対する懸念記事、技術者個人のリクス分散必要性の章

SLA (Software license Agreement)

STマイクロエレクトロニクス(以下STM)のSTM32マイコン マンスリー・アップデート2018年8月 P4のコラムに、ソースコード生成ツールSTM32CubeMXのSLA(Software license Agreement)変更が記載されています。

SLAとは

SLAは、ソフトウェア利用(または使用)許諾契約(きょだくけいやく)のことです。ウィキペディアに詳しい説明があります。

コラム記載の新しいライセンスが、SLA0048 – Rev 4 – March 2018です。この新ライセンス中にSTM32CubeMXで検索してもヒットしませんし、法律文言の英文解釈能力も持ち合わせていませんので、コラムをそのまま抜粋します。

「マイコンに書き込まれた状態であれば著作権表示などは不要だが、それ以外の状態であればソースコード、バイナリいずれも著作権表示などは必要」になりました。

STM32CubeMXでHALを使ってソースコードを生成すると、ソースコードの最上部に下記コメントや、その他の部分にも自動的にコメントが挿入されます。

STM32CubeMX生成ソースコード
STM32CubeMX生成ソースコード(STM32Fxマイコンテンプレートの例)

要するに、新SLAは、これらSTマイクロエレクトロニクス提供ツールSTM32CubeMXが自動挿入したコメントを、我々開発者は、勝手に削除してはいけない、と言っているのだと思います。

IDE付属ソースコード生成ツール

マイコンのソースコード生成ツールは、STM32CubeMX以外にも、各社のIDE(統合開発環境)に付属しており、

  • ルネサスエレクトロニクス:コード生成
  • NXPセミコンダクターズ:SDK、Processor Expert
  • サイプレス・セミコンダクター:Generate Application

などがあります(固定ページのAPI生成RADツール参照)。これらツールが自動生成するソースコードには、開発者が解りやすいように多くのコメントが付いています。

殆どのIDE付属エディタは、最上部の著作権関連コメントを畳んで表示することが可能ですし、これらコメントは、コンパイル後、つまりマイコンに書き込まれる状態では削除されますので、普段は注意を払わない開発者が殆どだと思います。

これらコメントも、STM32CubeMXと同様、各社のSLA違反になる可能性がありますので、生成ソースコードでのコメント削除はせず、オリジナル出力のまま使うことをお勧めします。

マイコンテンプレート

弊社販売中のマイコンテンプレートも、上記コード生成ツールのソースコード出力は、そのまま使っております。

マイコンテンプレートの版権は、ご購入者様個人に帰属します。但し、テンプレートそのものの転売、配布はご遠慮ください。お願いいたします。🙏

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を引き続き調査する予定です。

STM32のStep-by-Step Guide

STマイクロエレクトロニクス(以下STM)公式ブログのカテゴリ:TutorialsからSTM32開発環境を構築する方に最適な投稿を見つけたので、紹介と気になる点を示します。

Step-by-Step Guide

STM32 step-by-step learning program
STM32 step-by-step learning program

2018年10月8日が投稿日のこの記事は、STM32の開発環境(IDE)構築から評価ボード、UART接続、IoT評価ボードとスマホ接続などを5つのStepで示しています。内容は、前後半の2つに大別できます。

前半は、Step1(45分)で開発環境を構築し、Step2(30分)でSTM32CubeMXとHAL説明、Step3(34分)で評価ボード(NUCLEO-L476RG)とUART利用のPC通信を紹介するなど、内容は、弊社昨年のブログ投稿の最新版と言えます。

後半は、Step4(60分)でIoT評価ボードDiscovery kit IoT node (B-L475E-IOT01A)(DigiKeyにて¥6,370販売中)の使い方、Step5(30分)でAndroidスマホと同評価ボードをBLEで直結し、IoTシステムを構築しています。

IoT評価ボードは、Cortex-M4(915MHzまたは868MHz)を使い、Arduinoコネクタ、モーション、ジェスチャ、環境センサなどが実装済みなので、スマホで取得センサデータを視覚化できます。さらにAWS(アマゾン ウェブ サービス)経由でも接続できるので、本格的なIoTノード開発・評価にも使えそうです。AWSとの接続方法は、コチラの動画(11分12秒)に解説されています。
※動画閲覧にはログインが必要です。

関連投稿:Amazon、IoTマイコンへFreeRTOS提供

気になる点1:TrueSTUDIO

STMは、2017年12月に統合開発環境TrueSTUDIO開発元のAtollic社を買収しました。その結果、無償IDEのラインナップは従来と同じですが、開発会社の説明が変化しました。

関連投稿:2018マイコンベンダ最新ニュースのSTM章参照

STM32ソフトウェア開発スイート(要ログイン)のページで説明します。License typeでフィルタすると、無償版IDEラインナップが表示されます。SW4STM32欄のShow more…をクリックすると下段に“This product is supplied by a third party NOT affiliated to ST”の記述があります。これが気になる点です。

IDE License type Free検索結果
IDE License type Free検索結果。SW4STM32には、”not affiliated to ST”の記述がある。

この記述は、TrueSTUDIO欄には無く、代わりにProduct Imageに“ST acquires Atollic”と記載され、STとAtollicのロゴが表示されます。つまり、STMの無償IDEは、TrueSTUDIOが標準?の感じです。

TrueSTUDIOのProduct Image
TrueSTUDIOのProduct Imageは、STとAtollicのロゴが表示

従って、新たにSTM開発環境を構築される方は、TrueSTUDIOを選ぶと良いかもしれません。これを裏付けるのが、Step1紹介のIDEがTrueSTUDIOだということです。TrueSTUDIOがSW4STM32とほぼ同様に操作できるのは、コチラの動画(9分42秒)で解ります。

弊社2017年9月発売のSTM32FxテンプレートもSW4STM32を使っていますが、これもTrueSTUDIOに変えた方が良いかもしれません。但し、TrueSTUDIOには、SW4STM32プロジェクトをそのままインポートする機能が備わっていますので、二手間のOKクリックが増えますがしのげそうです(Step4のP8、Appendix Porting an AC6 example to TrueSTUDIO参照)。

Porting SW4STM32 project to TrueSTUDIO(出典:Step4)
Porting SW4STM32 project to TrueSTUDIO(出典:Step4)。OK2回クリックでSW4STM32プロジェクトをTrueSTUDIOへインポートできる。

IDEポーティングは、MCUベンダーが、古いIDEから新しいIDEへ替える時に良く使う方法で、NXP(Kinetis Design Studio→NXP Expresso)、ルネサス(Hew→CS+)などでもおなじみです。SW4STM32→TrueSTUDIOがあるのも、STMがTrueSTUDIOを推薦しつつある証と言えるでしょう。

気になる点2:Edge MCUとNode MCU

Step-by-Step Guide資料が前後半で使用MCUと評価ボードが2つに別れたように、前半のEdge MCUと後半のNode MCUの2つの機能に分かれてIoT MCUが発展する気がします。

  • Edge MCU:低消費電力でIoTデータ取得(アナログフロントエンド)機能を備えたMCU。従来のベアメタル開発の延長・発展形。
  • Node MCU:AWSなどIoTネットワーク出入口の無線、高度なセキュリティ機能を備えたMCU(Edge MCUを包含する場合あり、例:Discovery kit IoT node)。FreeRTOSなどのOS実装は必須で、従来MCUより高機能・高性能、1GHzにせまる高速動作。

※ベアメタル開発:OSなどを使わないMCU開発

Edge MCUとNode MCUの違いは、端的に言えば、ベアメタルソフトウェア開発かRTOSソフトウェア開発かです。MCUソフトウェア開発者も、ベアメタルとRTOSの2つに分かれるかもしれない、というのが第2の気になる点です。

Edge MCUだけではIoTに接続すらできません。Node MCUがIoT接続に必須になりつつある気がします。

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設定ロックの理解が、サンプルソフト解読に必要だと思います。

投稿記事の表示、検索方法

本ブログは、マイコン:MCU関連情報をWordPressというソフトウェアを使って投稿しています。今回は、WordPressブログ投稿記事を効率的に表示、検索する方法を3つ示します。

※WordPressは、ブログサイト制作時に便利なツール。機能追加が容易なプラグインや、外観を簡単に変更できるテーマが多数あるので、カスタマイズも容易で、運営者が投稿のみに専念できる。

カテゴリ選択

各投稿の下には、カテゴリとタグ(キーワード)が表示されています。

投稿カテゴリーとタグ
各投稿の下に表示されるカテゴリーとタグ

カテゴリ選択は、1つのMCU投稿をピックアップして表示する最も簡単な方法です。

例えば、カテゴリのRL78マイコンをクリックすると、日付の新しい順にRL78関連投稿のみが表示されます。PCなどの大画面表示の時は、左端にカテゴリ一覧が表示されるので選択が簡単になります。

PCのカテゴリ表示
MCU毎の投稿を簡単にピックアップできるPCのカテゴリ表示

カテゴリ選択でブログを表示すると、興味のあるMCU投稿がまとまるので便利です。投稿数が多い時は、複数ページに渡りピックアップされます。表示ページ一番下に複数ページへのリンクが表示されます。

複数ページのリンク
カテゴリ投稿数が多い時に表示される複数ページのリンク

ページ番号が大きい、つまり日付の古い投稿は、そのMCUの選択理由や、IDE:統合開発環境インストール方法など最も基本的でMCU開発初期に必要となる情報が記載されています。古い順に読むとより容易にMCU理解が進むかもしれません。

タグ選択

カテゴリとは別に、投稿下にタグと呼ばれる、いわゆるキーワードが示されています。

投稿のタグ(キーワード)
各投稿の下に表示されるタグ(キーワード)

投稿内容で興味が湧いたキーワード(例:リアルタイムOS)がこのタグ内にある場合は、タグをクリックすると、キーワードにより投稿記事がまとめられます。タグ検索は、複数カテゴリに跨った横断的な検索方法です。

自分の興味があるMCUと他社MCU比較などに使うと便利です。

検索窓

ブログ右上にあるSearch:検索窓を使っても投稿の検索ができます。

検索窓
検索窓による投稿記事検索

タグに無いキーワードや、2018年4月など時期を検索窓に入力してクリックすると関連投稿が表示されます。

まとめ

ブログ投稿記事を効率的に表示、検索する方法を3つ示しました。

  1. カテゴリ選択:MCU毎の投稿まとめに最適
  2. タグ選択:キーワードでの横断的な複数MCU比較や理解に適す
  3. 検索窓:タグ以外のキーワードや、投稿時期での検索に適す

本プログは、複数MCUの内容を、時系列で投稿するので、興味ある対象が様々な雑音で読みにくくなる可能性はあります。この場合には、上記3方法で投稿をまとめると読み易くなると思います。

また、手動で関連する投稿を添付する場合もあります(関連投稿を自動選択するWordPressプラグインもありますが使っていません)。

但し、技術者リスク分散の点からは、雑音も耳に入れておくのも良いと思います。どの投稿もチョットした空き時間で読めるように、A4で1~2ページの文章量です。本ブログをご活用いただき、MCU情報整理やプロトタイプ開発に役立つマイコンテンプレートに興味を持っていただければ幸いです。

関連投稿:ルネサスのIDE買収とリスク分散:技術者個人のリスク分散必要性の章参照