SW4STM32アプリケーションのSTM32CubeIDE移設

SW4STM32で開発した2017年9月発売STM32Fxテンプレートと2019年6月発売STM32G0xテンプレートを、STM32MCU最新統合開発環境STM32CubeIDE v1.1.0へ移設しました。

移設は成功し、STマイクロエレクトロニクス最新統合開発環境:STM32CubeIDE v1.1.0(以下、CubeIDE)、STM32CubeMX v5.4.0(以下、CubeMX)、最新ファームウェアと弊社テンプレートを使って、効率的で最新のSTM32MCUプロトタイプ開発、アプリケーション開発ができます。

本稿は、STM32CubeIDE v1.1.0更新と文字化け対策投稿(その1)、(その2)のその3に相当します。説明が重複する箇所は、リンク先を参照してください。

移設成功結果

G0AdcTemplateのSTM32CubeIDE移設成功結果
G0AdcTemplateのSTM32CubeIDE移設成功結果

STM32Fxテンプレートは「ひと手間」、STM32G0xテンプレートは「そのまま」で最新統合開発環境へ移設でき、評価ボードにてテンプレート動作を確認しました。G0AdcTemplateのCubeIDE移設後と評価ボード動作例です。

既にSTM32Fx/G0xテンプレートご購入者様は、本稿の方法で最新STマイクロエレクトロニクス開発環境へ乗換えることができます。

※現状のCubeMX v5.4.0でコード生成後、CubeIDE v1.1.0の日本語コメントは文字化けしますので注意してください(詳細は、投稿その2参照)。

最新開発環境ファームウェアとアプリケーション開発時ファームウェア

最新開発環境ファームウェアとテンプレート開発時ファームウェア
最新開発環境ファームウェアとテンプレート開発時ファームウェア

投稿その2で示したように、MCU開発ソフトウェア(=アプリケーション)に最も影響を与えるのは、ファームウェア更新です。

STM32FxテンプレートのF0用ファームウェアFW_F0は、開発当時のv1.8.0からv1.11.0へ、F1用ファームウェアはv1.4.0からv1.8.0へ、G0用ファームウェアFW_G0はv1.2.0からv1.3.0へそれぞれ更新されています。
※STM32G4テンプレートは、これから開発着手しますので最新のv.1.1.0のままです。

次章3から5章までを使って、STM32F1テンプレート:F1BaseboardTemplateを例に、当時の開発環境から最新開発環境への移設作業、ファームウェア変更、トラブルシューティングを「詳細に説明」します。但し、結果として行う処理は、6章まとめに示す簡単なものです。途中の章は読み飛ばしても構いません。

開発済みMCUアプリケーションを暫くたってから更新、または本稿のようにIDE自体が変わり最新開発環境へ移設することはよくあります。F1BaseboardTemplateをお持ちでない方も、(手前みそですが)次章から5章の内容は参考になると思います。

ファームウェア更新でコンパイルエラー発生:3章

先ず、ファームウェア起因のコンパイルエラーが発生するまでを示します。

1. SW4STM32で開発したF1BaseboardTemplateプロジェクトをCubeIDEへインポートします(インポート方法は、投稿その1-3章参照)。インポートソースコードの日本語コメントに文字化けが発生しますので、その1で示したShift-JISからUTF-8へのエンコード変換で解決します。

2. インポート済みのCubeMXプロジェクトファイルを、CubeIDEプラグイン版CubeMXで開き、Project Managerタブをクリックし、Toolchain/IDEがSTM32CubeIDEであることを確認します。インポートIDE変換が成功していれば、SW4STM32から自動的にSTM32CubeIDEへ変わっているハズです。

SW4STM32プロジェクトインポート後、プラグイン版STM32CubeMXで開いたプロジェクトファイル
SW4STM32プロジェクトインポート後、プラグイン版STM32CubeMXで開いたプロジェクトファイル

3. ファームウェアは、最新版STM32Cube FW_F1 V1.8.0になっています。そのままProject>Generate Codeをクリックし、コード生成を実行します。

4. CubeIDEへ戻ると、(デフォルトの自動コンパイル設定だと)Lcd.cなど数か所に赤下線のコンパイルエラーが発生します。

ファームウェア起因のコンパイルエラー(赤下線)
ファームウェア起因のコンパイルエラー(赤下線)

例えば、L236のLCD_EN_Pinは、CubeMXでGPIO_PIN_8をUser Label付けしたものです。LCD_EN_Pinへカーソルを持っていき、F3をクリックすると、定義ファイルmain.hのL103へ飛び、User Label付けは問題ないことが判ります。この段階では、コンパイルエラー原因は不明です。

5. コンパイルエラーがファームウェア起因かを確認するため、ファームウェアだけをFW_F1 V1.8.0からF1BaseboardTemplate 開発当時のFW_F1 V1.4.0へ戻します。但し、CubeIDE「プラグイン版CubeMX」は、ファームウェアを旧版へ戻す機能がありません。そこで、「スタンドアロン版CubeMX」を使ってファームウェアをFW_F1 V1.4.0へ戻し、再度コード生成を行うと、コンパイルエラーは発生しません。
※スタンドアロン版CubeMXでファームウェアを元の版数へ戻す方法は、4章で説明します。

以上の作業で、コンパイルエラー原因は、ファームウェア起因であることが判りました。

STM32CubeMXコード生成ファームウェア変更方法:4章

トラブルシューティングの前に、CubeMXでコード生成ファームウェア版数を変える方法を示します。CubeMXは、旧版ファームウェアをRepositoryフォルダへ自動保存し、いつでも旧版へ戻せる準備をしています。

1. スタンドアロン版CubeMXのProject Managerクリックで表示されるダイアログ一番下のUse Default Firmware Locationの☑を外し、BrowseクリックでRepositoryフォルダ内の旧版ファームウェア:STM32Cube_FW_V1.4.0を選択します。

スタンドアロン版STM32CubeMXでファームウェア版数を変える方法
スタンドアロン版STM32CubeMXでファームウェア版数を変える方法

2.  そのままCubeMXでコード生成を実行すると、ファームウェア版数のみを変えたソースコードが生成されます。

※CubeIDEプラグイン版CubeMX(2つ前の図)は、Use Default Firmware Location自体有りません。つまり、最新ファームウェアでのみコード生成が可能です。
※CubeMXのGenerate Reportは、コード生成時の各種パラメタをPDF形式で出力する優れた機能です。しかし、肝心のコード生成ファームウェア版数が現状では出力されません。PDF出力へ手動で使用ファームウェア版数を追記することをお勧めします。

トラブルシューティング:5章

3章コンパイルエラー発生後、つまり最新ファームウェアFW_F1 V1.8.0でのコード生成後からトラブルシューティングします。

1. CubeIDEのエラーメッセージは、Symbol ‘LCD_EN_Pin’ could not be resolvedです。main.hで定義済みなので、なぜresolveできないのか不可解です。

2. そこで、Lcd.cの#include関連を見ると、#include “UserDefine.h”はあります。
※弊社テンプレートは、UserDefine.hでツール生成以外の全てのユーザ追加定義を記述し、全ソースファイルへincludeする方式を用いています。
※一方、CubeIDEは、CubeMXで生成するmain.cソースファイル1つへ、全ての制御を記述する方式を用いています。小規模なサンプルプロジェクトなどでは、解り易い方法です。
※但し、規模が大きくなると、ソースファイルを機能毎に分離し、ファイル単位の流用性やメンテナンス性を上げたくなり、弊社は、このファイル分離方法をテンプレートに採用中です。

3. UserDefine.hに、#include “main.h”の1行を追加します。

UserDefine.hへ#include "main.h" 追加
UserDefine.hへ#include “main.h” 追加

4. Clear Project後、Build Projectでコンパイルエラーは解消し、コンパイル成功します。評価ボード:STM32F103RBでF1BaseboardTemplate の最新開発環境での正常動作確認ができます。

最新ファームウェアは、全てのユーザ追加ソースファイルに、#include “main.h”が必須なことがトラブル原因でした。

最新開発環境への移設まとめ:6章

2017年9月にSW4STM32で開発完了したSTM32Fxテンプレートは、UserDefine.hに、#include “main.h”追記で、2019年11月STM32MCU最新開発環境:STM32CubeIDE v1.1.0、STM32CubeMX v5.4.0、STM32Cube FW_F1 V1.8.0/FW_F0 V1.11.0へ移設できます。

2019年6月にSW4STM32で開発完了したSTM32G0xテンプレートは、なにもせずに、2019年11月最新開発環境:STM32CubeIDE v1.1.0、STM32CubeMX v5.4.0、STM32Cube FW_G0 V1.3.0へ移設できます。
※STM32G0xテンプレートは、初めからUserDefine.hに、#include main.hが追記済みです。

Build Analyzer

SW4STM32からCubeIDEへ移設後、最初に目に付くIDE画面の差分は、ビルド成功時、右下表示のBuild Analyzerだと思います。

STM32CubeIDEのBuild Analyzer
STM32CubeIDEのBuild Analyzer

最初の図で示したG0AdcTemplate移設後のCubeIDE Build Analyzerを示します。RAM、FLASH使用率が一目で解ります。その他のIDE画面や操作は、旧SW4STM32と殆ど同じです。

Serial Console

CubeIDEは、Serial Console画面を持っています。従来環境では別途必要であったVirtual COM Port (VCP)用のTera Termなどのツールが不要となり、IDEだけでVCP入出力が確認できます。高まるVCP重要性が最新IDEへ反映されたと思います(関連投稿:STLINK-V3の4章)。

但し、バックグラウンドが、Tera Termの黒からSerial Console画面では白になったため、テンプレートで用いたVCP出力文字色を、デフォルトの白から黒へ変更した方が見易いです。この色変更後のSerial Consoleが下図右側です。

TeraTerm画面とSTM32CubeIDEのSerial Console画面
TeraTerm画面とSTM32CubeIDEのSerial Console画面

最新開発環境移設の課題と対策、テンプレート改版予定

現状のCubeIDE v1.1.0は、コード生成後、日本語コメントに文字化けが発生します。また、エディタタブ幅が2のまま変更できません。これら以外にも細かな不具合があります。このままでは、筆者には使いにくいIDEです。一方、Build AnalyzerやSerial Consoleは、とても役立ちます。
CubeIDEプラグイン版CubeMX v5.4.0は、Repository旧ファームウェアへの変更機能が無く、最新ファームウェアのみ利用可能です。

これら移設課題に対して、投稿その1から本稿で対策を示しました。

現状は、従来SW4STM32からCubeIDEへの「IDE移設過渡期」です。筆者は暫く両IDEを併用するつもりです。そして、新環境の使いにくい箇所が解消された時点でCubeIDEへ完全移設し、同時に汎用MCU第2位、シェア20%超のSTM32MCU向けテンプレートとしてSTM32FxテンプレートとSTM32G0xテンプレートを、本稿変更などを加え最新開発環境対応へ全面改版する予定です。

既に弊社テンプレートをお持ちの方や全面改版を待てない方は、まとめ6章の方法で移設可能です。但し、投稿その2で示した多くのリスクがありますのでお勧めはしません、自己責任で行ってください。

なお、新開発のSTM32G4テンプレートは、初めから最新CubeIDE、CubeMXで開発着手します。

*  *  *

STマイクロエレクトロニクスのSTM32CubeIDE v1.1.0改版により、旧SW4STM32開発アプリケーションを新環境へ移設する連続3回の投稿、いかがでしたでしょうか? 詳細説明がリンク先となり、筆者にしては長文投稿でしたので、解りづらかったかもしれません😌。

IoTによりMCU開発環境は、より急ピッチで変わります。最新デバイスと最新API利用が、その時点で最も効率的で優れたMCUアプリケーション開発手段です。環境急変にも柔軟対応できる開発者が求められます。

最新開発環境に上記のような課題が多少あっても、従来SW4STM32開発済みアプリケーションの最新STM32CubeIDE移設は、6章で示した1行追記のみで成功しました。

但し、顧客や管理者の方には、開発環境更新、移設の危うさや開発者の心理的負担、何よりもそれらへの対応時間は、あまり表に出てこない部分、また移設してみて初めて判る部分で理解されづらいものです。

本稿がMCUアプリケーション顧客、管理者、開発者の方々のご参考になれば幸いです。

P.S:2019年11月12日、2か月遅れでWindows 10 1909配布が始まりました。年2回のWindows 10大型更新トラブル話は多数あります。MCU開発環境は、年2回どころか度々更新されます。開発者は、その度にトラブル対処をしているのです👍。ちなみに本稿は、全てWindows 10 1903での結果です。



STM32CubeIDE v1.1.0更新と文字化け対策(その2)

STマイクロエレクトロニクス(以下STM)の統合開発環境:STM32CubeIDEが、v1.1.0に更新され、前投稿:その1では、従来SW4STM32プロジェクトをSTM32CubeIDEインポート時の日本語文字化け対策と、最新STM32MCU開発環境を示しました。

その2では、最新開発環境での文字化けと、開発環境更新リスク、ファームウェア更新へのリスク対応案について示します。

最新開発環境の文字化け

2019年11月時点のSTM32MCU最新開発環境と、IDEのみ従来のSW4STM32を使ったソフトウェア開発環境が下図です。

STM32MCU最新開発環境
STM32MCU最新開発環境

その1で示したSW4STM32プロジェクトインポート時のSTM32CubeIDEソースコード文字化けは、Shift-JISからUTF-8への手動エンコード変換で解決しました。

今回指摘する問題は、最新環境であってもSTM32CubeMX(以下、CubeMX)でコード再生成すると、STM32CubeIDE(以下、CubeIDE)ソースコードに日本語文字化けが発生することです。

このCubeMX起因の文字化けは、新規CubeIDEプロジェクト作成でも発生します。つまり、CubeIDEでプロジェクトを新規作成しmain.cへ日本語コメントを入力、次に生成済みCubeMXプロジェクトファイルを開き初期化コードを生成、CubeIDEへ戻ってmain.cを見ると日本語コメントに文字化けが発生します。
※スタンドアロン版、プラグイン版両方のCubeMXを試し、また、表示フォントもいろいろ変更しましたが、文字化けが発生します。対策がお判りの方は、教えてください😌。

もちろん、英語でコメント記入すれば問題はありません。日本語コメントの場合のみです。

一方、従来IDEのSW4STM32へCubeMX出力の場合には、文字化け無しです。ソースコードへ日本語コメントを追記する筆者のような方は、文字化け発生が解消されるまでは、SW4STM32とCubeIDE併用が良いかもしれません。

開発環境更新リスク

MCU開発ソフトウェア(=アプリケーション)への影響が一番大きいのは、ファームウェア:FW_F0/F1/G0/G4更新です。統合開発環境:CubeIDEやコード生成ツール:CubeMXの更新は、操作性や見た目へ変化を与えますが、アプリケーションそのものへの影響は、少ないです。

MCUアプリケーション開発は、STM32MCUに限らずベンダ提供API:Application Programming Interfaceのユーザ開発アプリケーションによる操作です。ファームウェア更新は、このベンダ提供APIのバグ取りや、新デバイス追加に関連するものが一般的です。開発済みユーザアプリケーションの場合は、デバイスは変わらないので、ファームウェア更新による影響があるのは使用中APIです。

従って、開発したアプリケーションの使用APIが変わらなければ、ファームウェア更新は問題ないハズです。

ところが、稀にファームウェア更新により正常に動作していたAPIにも影響が生じトラブルが発生することがあります。ファームウェア更新には、このリスクがあることも知っておきましょう。
※このリスク対策としてCubeMXは、旧版ファームウェアをRepositoryフォルダへ保存し、いつでも旧版へ戻せる準備をしています。

ベンダAPI、つまりファームウェア互換性には期待しない方が無難です。

理由は、最新ベンダMCU製造プロセス(=ハードウェア)、WindowsなどのパソコンOS、ベースのEclipse IDE、ARM CMSISなどのアプリケーション下層の更新、などなど様々なバージョンアップの組合せ結果が、ベンダAPI更新や刷新となるからです。

ベンダAPI互換が、既存ユーザにとっては理想です。しかし、元々非力なMCU能力を、従来API互換へ使うよりも、むしろファームウェア更新時点で、MCU能力を最も引き出すAPIへ使い、新規ユーザへアピールしたいとベンダが判断してもやむを得ないと思います。
※高性能MPU/GPUでさえAPI互換が無いことがあります。APIとは、そういうものだと割切って、例えAPIが変わっても柔軟に対応できるソフトウェア開発者が求められるのかもしれません。

ファームウェア更新リリースノートに、このAPI互換性の詳細説明を求めるのは、多分無理です。既存ユーザは、開発環境、特にファームウェア更新に関しては、慎重に対処すべきだと思います。

MCUアプリケーションは、開発完了時の開発環境依存度が非常に高いソフトウェアです。

最新デバイスと、最新APIの組合せが、その時点で最も効率的で優れたMCUアプリケーション開発手段と言えます。
※ルネサスのCS+には、アプリケーション開発完了時の開発環境を、一括圧縮保存する便利機能があります。Eclipse IDEにもプラグインで同様の機能を追加できると思います。

ファームウェア更新リスク回避策

筆者が考えるMCUアプリケーション開発に対するファームウェア更新リスクの回避策が、下記です。

MCUアプリケーション開発に対するファームウェア更新リスク
MCUアプリケーション開発に対するファームウェア更新リスク
  1. ユーザ開発アプリケーションが顧客システムで稼働中、しかもバグなどの問題が無い場合は、あえて前章リクスがあるファームウェア更新はしない
  2. アプリケーション開発が進行中の場合は、旧版ファームウェアで開発継続し、完成後に最新版を試す
  3. 開発済みアプリケーションへ機能追加の場合は、開発時ファームウェアで機能追加し、完成後に最新版を試す
  4. 新にアプリケーション開発を始める場合は、APIバグ可能性のより少ない最新ファームウェア開発環境で着手

開発完了から時間が経ったアプリケーション改版時には、開発当時のファームウェア更新への対策時間も加味しスケジュールを作成することをお勧めします。さもないと、肝心のアプリケーション改版前の段階でつまずいてしまいます。

※弊社販売中テンプレートは、テンプレート応用例として、評価ボード実装済みSWやLEDを制御するシンプルテンプレートと、Baseboardで各種機能を追加したBaseboardテンプレートの2つを添付しています。このうちBaseboardテンプレートは機能豊富な代償として、上記ファームウェア更新リスクに出会うことが稀にあります😫。テンプレートなので、本当は原理を解っていただくシンプルテンプレートのみを添付したいのですが、Baseboardテンプレート付きの方が売れるのでやむを得ない状況です😥。

投稿その1、その2と前振りが長くなりました。次回、汎用MCUシェア第2位の販売中STM32FxテンプレートSTM32G0xテンプレートを使って、最新開発環境への移設実例、トラブル対応を示します。

STM32CubeIDE v1.1.0更新と文字化け対策(その1)

2019年10月16日、STマイクロエレクトロニクス(以下STM)の無償統合開発環境:STM32CubeIDEが、v1.1.0に更新されました。v1.0.2からMajor releaseです。筆者が従来使ってきたAC6社)SW4STM32からのIDE乗換と、STM32G4テンプレート(前投稿参照)向けの新しい開発環境構築に丁度良いタイミングです。その1は、更新内容、Windows起因のエディタ文字化け対策などを示します。

STM32CubeIDE v1.1.0更新内容

マルチコアSTM32MP1などの新デバイス、コード生成ツールのSTM32CubeMX v5.4.0(2019/10/11)、ベースIDEのEclipse™(2019-09)対応などが主な更新内容です(Eclipseの状況は、コチラの投稿2章などを参照してください)。RN01114に詳細な更新内容があります。

従来のSW4STM32作成のプロジェクトを、STM32CubeIDEへインポートすると、ソースコード日本語追加コメントに文字化けが発生します。この文字化けは、STM32CubeIDE最初のリリースから変わらず残ったままなので、対策を示します。

文字化け対策

Windows 10 1903までのSW4STM32でソースコードへ日本語コメントを入力し保存すると、Shift-JISでエンコード化します。このエンコードが、STM32CubeIDEのエディタ文字化けの原因です。対策は、UTF-8エンコードへの変換です。

Shift-JISからUTF-8へのエンコード変換方法は、様々あります。筆者がソフトウェア開発者へお勧めするのは、無償テキストエディタ:Notepad++です。予約語色分け表示や、矩形編集などのソースコード編集に便利な機能があり、プラグインでCompareなどの機能追加も簡単、動作も軽快なエディタです。
※Windows 1903のメモ帳保存時、右下の文字コード(E)に、UTF-8を選択することでもエンコード変換ができます(コチラの記事に、UTF-8へのWindows変更経緯があります)。

Notepad++を使ったShift-JISからUTF-8へエンコード変換は、メニューから簡単にできます。右下欄に現在のエンコードも表示されますので便利です。

Notepad++でソースコードエンコードをShift-JISからUTF-8へ変換
Notepad++でソースコードエンコードをShift-JISからUTF-8へ変換

Shift-JISからUTF-8へエンコード変換前と、変換後のSTM32CubeIDEのソースコード表示です。エンコード変換で文字化けが解消されました。これで、SW4STM32からSTM32CubeIDEへIDEを乗換えることができます。

Shift-JISからUTF-8 変換でSTM32CubeIDEの文字化け解消
Shift-JISからUTF-8 変換でSTM32CubeIDEの文字化け解消

注意点は、SW4STM32プロジェクト→STM32CubeIDEプロジェクト変換は可能ですが、逆にSTM32CubeIDEプロジェクト→SW4STM32プロジェクトへ戻すことができない点です。筆者は、IDE毎にワークスペースを別々に設定し、SW4STM32プロジェクトをSTM32CubeIDEワークスペースへ手動コピー後、ソースコードのShift-JIS→UTF-8変換、最後にプロジェクトIDE変換で対応しています(プロジェクトIDE変換方法は次章説明)。

なお、Windows 10 1903でSTM32CubeIDEのソースコードに日本語入力しても、UTF-8でエンコード保存されます。

STM32CubeIDE v1.1.0の使い方

STM32CubeIDE v1.1.0の使い勝手は、SW4STM32と殆ど同じです。EclipseベースのIDEは、どれでも同じ使い勝手で、IDE提供ベンダが変わっても利用経験がそのまま活かせるのが特徴です。それでも、ベンダ毎に多少の差があり、STM32CubeIDEで言えばℹ️クリックで表示されるInformation Centerです。

STM32CubeIDEのInformation Center
STM32CubeIDEのInformation Center

Start a project

Import SW/TS projectをクリックすると、SW=AC6社)SW4STM32旧プロジェクト、TS=Atollic 社)TrueSTUDIO旧プロジェクトを、STM32CubeIDE新プロジェクト変換ツールが起動します。変換は、ワークスペース内の旧プロジェクトをそのままSTM32CubeIDEでのみ動作する新プロジェクトに変換します。

Atollic社のTrueSTUDIOはSTMに買収され、日本語対応などの改版が行われましたが、結局新デバイス追加がなく事実上Discontinueとなりました。経緯などは、コチラの投稿の手順4を参照してください。AC6社)SW4STM32も、最近は更新がありません。STM製のSTM32CubeIDEがリリースされたので、TrueSTUDIOと同じくDiscontinueになると思います。

Start new STM32 projectをクリックすると、新たにSTM32CubeIDEプロジェクトが作成できます。表示されるダイアログに従っていけば、問題なく新しいSTM32CubeIDEプロジェクトができます。

Target SelectionダイアログのOther Venderクロス検索
Target SelectionダイアログのOther Venderクロス検索

面白いのは、ダイアログのTarget Selectionです。vendersにSTM以外の選択肢もあります。今回は、STM32G4テンプレート開発に使う評価ボードSTM32G474RE(Cortex-M4、Flash:512KB、RAM:128KB)を選択しますが、他ベンダ、例えばTIのMSP432P401M比較がどのように使えるかは、今後調査します。

Quick links

Documentation、Start Guide、What’s Newの3つのQuick linksがあります。

Documentationをクリックすると、主要PDF技術資料へアクセスできます。ここに、リリースノートやSW4STM32からのマイグレションガイドもありますので、目を通しておくと良いでしょう。

初めてSTM32CubeIDEを使う方は、Getting Startedをクリック。基本操作は、これだけ読めば必要十分、英文全11ページのよくできた資料が読めます。

What’s Newは、リリースノートのことです。

汎用MCU第2位のSTM32MCU最新ソフトウェア開発環境

STM32MCUは、汎用MCUで第2位、シェア20%を超えています(関連投稿は、コチラ)。2019年4月新発表のSTM32CubeIDEは、半年を経て今回Major releaseし、v1.1.0になりました。無償IDEで、シェア続伸に向けて続々と新発売されるSTM32MCUデバイスへ対応中なのは、STM32CubeIDEだけです。

STM32CubeIDEを使い、本ブログ関連STM32MCUの最新ソフトウェア開発環境が、下表です。

名称 機能 2019/11/01版数 MCU評価ボード
STM32CubeIDE Eclipseベースの統合開発環境 1.1.0
STM32CubeMX 初期化Cソースコード生成ツール 5.4.0
STM32CubeG0 STM32G0シリーズ用ファームウェア:G0_FW 1.3.0 STM32G071RB
STM32CubeG4 STM32G4シリーズ用ファームウェア:G4_FW 1.1.0 STM32G474RE
STM32CubeF0 STM32F0シリーズ用ファームウェア:F0_FW 1.11.0 STM32F072RB
STM32CubeF3 STM32F3シリーズ用ファームウェア:F3_FW 1.8.0 STM32F103RB

次回は、弊社販売中のSTM32FxテンプレートSTM32G0xテンプレートを、上記最新ソフトウェア開発環境へ移設する予定です。

汎用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ソフトウェアでは論外なため、開発者負担は増すばかりです😫。

STM32CubeIDE v1.0.1更新

STマイクロエレクトロニクス(以下STM)のSTM32マイコンマンスリー・アップデート2019年7月号P9に、STM32CubeIDEのv1.0.1更新が記載されています。

STM32CubeIDE v1.0.1更新内容

内蔵のコード生成ツールSTM32CubeMXがv5.2.0からv5.2.1に変更されたこと、バグ修正が主な更新内容です(RN0114(2019/07/11))。

STM32CubeIDE v1.0.1更新内容
STM32CubeIDE v1.0.1更新内容

最新のSTM32CubeMX v5.2.1により、STM32G0x LL APIを活かしたソフトウェア開発がSTM32CubeIDE v1.0.1でも可能となりました。つまり、弊社推薦のSTM32MCU開発環境:SW4STM32+STM32CubeMX v5.2.1+STM32G0 FW 1.2.0と同じ土俵に今回の更新でなった訳です。

関連投稿:続報STM32CubeIDE

ベースEclipse IDE状況

STM32CubeIDE v1.0.1のベースEclipse IDE は、ECLIPSE™ 2019-03 です。Eclipse最新版は、ECLIPSE™ 2019-06(2019/06/19)ですので、ベースに合わせてSTM32CubeIDEも更新されるでしょう。

Eclipse IDEは、昨年の2018年6月までは、Photon、Oxygen、Neonなどのリリース名が付いていましたが、6月以降は、ECLIPSE™リリース年-月に変更されました。3か月毎に更新され、次回は2019-09予定です。
※メジャー/マイナー更新かは、判りにくくなりました。

STM32CubeIDE v1.0.1使用所感

今回の更新で期待していた日本語対応に関しては、旧STM32CubeIDE v1.0.0からの改善は見られません。

例えば、SW4STM32プロジェクトをSTM32CubeIDEへインポートすると、日本語ソースコードコメントが文字化けします。Preferences>Text Editors>Colors and Fontsを変えても同様です。

付属エディタを使っての直接日本語入力は問題ありませんが、SW4STM32からのマイグレーションツールでの文字化け発生は、回避手段があるとは思いますが面倒です。Atollic社)TureSTUDIO最終版で見せた日本語メニュー実装などは、先の話になりそうです。

また、旧v1.0.0では正しく表示されていたInformation Centerページも、‘表示できません’となります。

RN0114の2.3 Known problems and limitations項目も多いので、あえて今すぐにSW4STM32に変えてSTM32CubeIDE v1.0.1を使う必要性は感じません。土俵(付属開発ツール版数)が同じになっただけです。

現行SW4STM32 → 新STM32CubeIDE切替えタイミング

コードサイズ制限無しのSTM32MCU無償IDEは、旧Atollic社)TrueSTUDIOは既にDiscontinue、AC6社)SW4STM32も新デバイスへの更新をしない可能性が高いと思います。新しいIDE:STM32CubeIDEへ切替えるタイミングが、そろそろ近づいてきました。

筆者としては、SW4STM32の更新状況を注視しつつ現行IDE使用を維持し、次回のSTM32CubeIDE更新タイミングで新IDEへ切替えるつもりです。

STM32G0動画と専用テンプレート

STマイクロエレクトロニクス(以下STM)の公式ブログで、STM32G0を理解できるPart.0~10の動画(英語版)を紹介しています。
各動画は、休憩時間に視聴するのに丁度良い6分から15分程度の長さです。

動画リスト

13:13     Pt. 0, Install Procedure

6:05       Pt. 1, Saving Content of the Flash of the STM32

13:47     Pt. 2, Blinky

13:09     Pt. 3, PWM

9:10       Pt. 4, External Interrupt

14:20     Pt. 5, Low Power (Pt. 1)

6:23       Pt. 6, Low Power (Pt. 2)

13:19     Pt. 7, Printf

13:27     Pt. 8, Low Layer Drivers

17:37     Pt. 9, DMA

15:14     Pt. 10, Flashing STM32

少し聞きにくい英語ですが、スライドを見るだけでも内容は解ると思います。

開発環境

動画のIDEは、KeilのSTM32G0/F0/L0専用無償版を使っています。既にSTM32CubeIDEやSW4STM32を利用中の方は、これらIDEとKeil専用版を同時インストールすると、STM32G0/F0/L0のみコンパイル可能となるトラブルが発生するらしいので注意してください。

IDE以外は、コード生成ツール:STM32CubeMX、評価ボード:Nucleo-G071RB、通信アプリ:Tera Termなどおなじみの環境での解説です。

STM32G0のSTM32F0/F1をカバーする広い守備範囲、Low Layer API開発メリットや重要性などが理解できると思います。残念なのは、STM32G0x全シリーズ搭載の最新ADC解説が無いことです。ADCに関しては弊社関連投稿を参照ください。

STM32G0x専用テンプレート

動画Part8紹介のLL APIを活用したSTM32G0x専用テンプレートを発売中です。

STM32G0xシリーズのプロトタイプ開発着手時に必要となるLPUARTやLED制御などの複数サンプルソフトがあらかじめ実装済みで、評価ボードADC入力変換値のTera Term出力も実装済みです。

STM32G0xシリーズ性能をフルに発揮したアプリケーション早期開発や、STM32G0習得に最適です。

ご購入、お待ちしております。

STM32G0x専用テンプレート発売

LL API利用のSTM32G0x専用テンプレートを、2019年6月1日発売開始します。

STマイクロエレクトロニクス(以下STM)2018年12月新発売のSTM32G0xデバイスは、高性能・低電力なCortex-M0+と70nm新プロセス動作速度向上により、STM32G0x単独で従来汎用STM32F0/F1をカバーする性能と超低電力動作、低価格が特徴です。

このSTM32G0x専用LL (Low-Layer) API利用テンプレートが、今回1,000円(税込)で発売するSTM32G0x専用テンプレートです。

※従来から販売中のSTM32Fxテンプレートは、HAL API利用の汎用テンプレートです。

STM32G4シリーズ追加、全5種となったSTM32 Mainstream MCUs

2019年5月28日、超高性能汎用STM32G4xが発表されました。これでSTM汎用MCUは全5種となりました。一覧が下図です。

STM32汎用MCUラインナップ
STM32汎用MCUラインナップ(出典:STM32 Mainsterm MCUsに加筆)

STM32G0x専用テンプレートは、軽量・高速・エキスパート向きLL APIを利用します。STM32G0x性能をフル発揮するアプリケーションのプロトタイプ開発に最適です。

※STM32G0xや専用テンプレートの本ブログ関連投稿は、下欄タグ🏷:STM32G0x、または、専用テンプレートをクリックしてください。

STM32G0x専用テンプレート適用例2種、API比較評価用2種

LL APIとHAL APIの比較評価のため、汎用テンプレートをSTM32G0xへポーティングしたHAL APIテンプレートも添付します。同一アプリケーションでのLLとHALのリソース使用量、ユーザ記述量、API可読性などを具体的に評価・分析できます。全て評価ボード:Nucleo-G071RB上で動作確認済みです。

STM32G0x専用テンプレート適用例
STM32G0x専用テンプレート適用例

SimpleTemplateは、最も簡単なテンプレート適用例で、基本的なSTM32G071RB周辺回路とテンプレート動作が理解できます。AdcTemplateは、全STM32G0xシリーズ共通周辺回路:2.5Msps 12ビットADC制御をSimpleTemplateに追加し、全てのSTM32G0xプロトタイプ開発の起点となるテンプレートです。

SimpleTemplate、AdcTemplateともにLL APIを利用したSTM32G0x専用テンプレートと、汎用テンプレートをSTM32G0xへポーティングしたHAL APIテンプレートを提供します。

STM32G0x専用テンプレート適用例は、評価ボードのGPIOやLED、LPUART通信など必須の複数STM公式サンプルプロジェクトが実装済みで、すぐにプロトタイプ開発着手ができるLL API利用アプリケーションプロジェクトです。

※HAL版はAPI比較評価用です。2019年5月末時点のコード生成ツールSTM32CubeMX(v5.2.1)とSTM32G0 FW(v1.2.0)は、LL APIでのみSTM32G0x性能をフルに引き出すことができます。

※STM32MCU間でアプリケーション移植・流用性を最大限に保証するHAL APIを利用したソフトウェア開発を希望される方は、STM32Fxテンプレートの購入をご検討ください。

付属説明資料でLL APIアプリケーション開発着手時の障害解消

STM32G0x専用テンプレート付属説明資料のもくじを示します。

STM32G0x専用テンプレート付属説明資料もくじ
STM32G0x専用テンプレート付属説明資料もくじ

説明資料P1~P3は、STM32G0x専用テンプレートサイトから無料ダウンロード可能です。全14ページの詳細な説明により、LL APIが理解でき、STM32G0xデバイス専用アプリケーションのプロトタイプ開発着手時の様々な障害を取り除き、スピード開発するのに専用テンプレートは最適です。

STM32G0x専用テンプレートは、コチラの手順でご購入可能です。よろしくお願いいたします。

*  *  *

STM32CubeMX v5.2.1改版時の注意点

2019年5月24日、STM32CubeMXがv5.2.1へ改版されました。インストール時の注意点を示します。

STM32CubeMX v5.2.1改版
STM32CubeMX v5.2.1改版

STM32CubeMX v5.2.1ダウンロードは、Install Nowクリックのみです。但しダウンロード後、一旦STM32CubeMXを終了し、再起動時は、下記のように管理者と してインストールを実行する必要がありますので注意してください。

STM32CubeMX v5.2.1.Update
STM32CubeMX v5.2.1.Update。インストールは管理者として実行する必要がある。

続報:STM32CubeIDE

2019年5月8日STマイクロエレクトロニクス(以下ST)公式ブログで無償STM32CubeIDEの続報が掲載されました。STM32マンスリー・アップデート2019年5月号のトップページにも掲載中です。

STM32CubeMXがビルドインされたST初のIDE:STM32CubeIDE内蔵ツール版数と、ライバルIDEに相当するSW4STM32とTrueSTUDIOの今後を予想します。

STM32CubeIDE内蔵ツール版数

STM32CubeIDEにビルドインされたツール版数が下記です。FWは、本ブログ対象STM32F0/F1/G0のみ掲載します。ビルドインSTM32CubeMXの使い勝手は、単独STM32CubeMXツールと同じです。

内蔵ツール 2019年5月16日版数
STM32CubeIDE 1.0.0
STM32CubeMX 5.2.0
STM32F1  FW 1.7.0
STM32F0  FW 1.10.0
STM32G0  FW 1.2.0

STM32CubeIDE起動時に各ツール更新がチェックされるので、起動に多少もたつきを感じます。MicrosoftのC2R:Click to Runに近い機能です。

STM32G0 FW 1.2.0インストールには、STM32CubeMX 5.2.0以上が必要な点は注意が必要です。単独でSTM32CubeMX 5.1.0使用中の方が、FW更新してもSTM32G0 FW 1.2.0の検出すらできません。先ず、STM32CubeMXを 5.2.0へ更新後、再更新チェックでSTM32G0 FW 1.2.0が使えます。

全てがビルドインされたSTM32CubeIDEなら、このような版数による最新版インストールトラブルが回避できるでしょう。

STM32CubeIDEのAdvanced Debug機能

STMCubeIDE you are able to(出典:How to use STM32CubeIDE動画)
STMCubeIDE you are able to(出典:How to use STM32CubeIDE動画)

How to use STM32CubeIDEから抜粋したSTM32CubeIDE新機能が上図です。Advanced DebugのLive Expressions viewやSWV real-time tracing viewは、デバッグがより楽しく容易になる機能だと思います。

STM32CubeIDEライバル、無償AC6)SW4STM32と旧Atollic)TrueSTUDIOの今後

気になるのは、STM32CubeIDEと同様のコードサイズ制限なし無償IDE、AC6社)SW4STM32と旧Atollic社)TrueSTUDIOの2つのIDEが、今後更新され続けるかです。

ブログ内に、SW4STM32とTrueSTUDIO各ユーザに向けた注意書きがあります(Before STM32CubeIDE, What SW4STM32 and TrueSTUDIO Users Must Know章)。ブログでは、どちらのIDEユーザに対しても新しいSTM32CubeIDEへの移行を促しているようです。有償のIARとKeilのIDEに対しては、これまで通りです。

TrueSTUDIOは、既にSTM32G0 FW 1.2.0未対応です(関連投稿:TrueSTUDIOとSTM32CubeMXインストール方法の手順4参照)。SW4STM32は、最新デバイスをフォロー中ですが、近い将来、TrueSTUDIOと同じ運命、つまり、ツール改版への遅れや最新MCUへ対応しない可能性があります。

2017年末にSTに買収されたAtollicのIDE開発力が、新しいST純正STM32CubeIDE開発へ使われたとすると、現行のTrueSTUDIOが最新STM32G0xデバイスに未対応なのも納得がいきます。いわゆるデスコン(Discontinue)の前兆です。

なお、既成SW4STM32プロジェクトやTrueSTUDIOプロジェクトに対しては、STM32CubeIDEマイグレーションツール(UM2579など)がSTM32CubeIDE初期画面に用意されています。既成プロジェクトは、そのままSTM32CubeIDEで開くことはできず、また、一旦マイグレーションすると、元のSW4STM32プロジェクトへは戻せません。

このため、UM2579では、既成プロジェクトをバックアップ後、マイグレーションすることを明記しています。

STM32CubeIDE初期画面のマイグレーションツール(出典:UM2579)
STM32CubeIDE初期画面のマイグレーションツール(出典:UM2579)

STM32CubeIDEの使い勝手は、SW4STM32に近く、しかもAdvanced Debug機能でデバッグも面白くなりそうです。現版STM32CubeIDE 1.0.0は日本語対応がイマイチです。この点が改良されればSW4STM32からのマイグレーションを検討する予定です。

速報:STM32CubeIDE

STマイクロエレクトロニクス(以下STM)公式ブログで、中国で開かれたSTM32 SummitにおいてSW4STM32とTrueSTUDIO、STM32CubeMXを統合した新しい統合開発環境:STM32CubeIDEを発表しました。

STM公式ブログ:STM32CubeIDE Makes a Massive Appearance in China。STM32CubeIDEは、既にSTMサイトよりダウンロード可能です。

STM32CubeIDE(出典:STMサイト)
STM32CubeIDE(出典:STMサイト)

STM32CubeIDEの主な特徴

  • EclipseベースIDE
  • マルチOS対応(Windows、Linux、macOS)
  • SW4STM32とTrueSTUDIOプロジェクトのインポート機能

STM32CubeIDE

早速STM32CubeIDEをインストールしてみました。所感は、STMが買収したAtollic® のTrueSTUDIOというよりむしろ、SW4STM32へSTM32CubeMXをプラグインしたような画面です。

STM32CubeIDE画面
STM32CubeIDE画面。SW4STM32へSTM32CubeMXをプラグインした画面に近い。

STM32CubeIDE v1.0.0は、最新版STM32CubeMX v5.2.0とSTM32G0 FW v1.2.0/STM32F0 FW v1.10.0 /STM32F1 FW v1.7.0など開発に必要となるツールもパッケージとしてインストールできます。従来の個別インストールとツールアップデートが面倒だと感じる方には、朗報になるでしょう。

現在STM32G0x専用テンプレート開発は、SW4STM32で継続中です。しかし、販売時にはこのSW32CubeIDEでリリースする方が、SW4STM32からのマイグレーションガイドUM2579も付属済みですので良いかもしれません。

マイグレーション操作は簡単です。販売中のSTM32Fxテンプレートへもこのマイグレーションで対応できると思います。

STM32MCU開発環境の場合、IDE、STM32CubeMX、デバイス毎のFW、これら3つのバージョンがともに最新でないと、上手く動作しないことや不具合発生はありえます(例えば、STM32CubeMX v5.1.0では最新のSTM32G0 FW v1.2.0がインストールできないなど)。

STM32CubeIDEの出現で、バージョン管理が容易になれば良いと思います。以上、速報をお伝えしました。
動画がコチラで見られます。