STM32CubeIDE/MX Major Release

2021年7月19日、STマイクロエレクトロニクスのMCU統合開発環境が、STM32CubeIDE v1.7.0とSTM32CubeMX v6.3.0へ更新されました。Major releaseです。開発済みMCUのSTM32CubeMX設定を、簡単に別ターゲットMCUへ移植する機能を解説します。

Major Release

STM32CubeIDE(以下、CubeIDE)は、ベースのEclipse IDE 更新に追随し年数回更新があります。今回のCubeIDE v1.7.0更新内容に、特に気になる点はありません。

一方CubeIDE付属コード生成ツール:STM32CubeMX v6.3.0(以下、CubeMX)には、開発済みMCUのCubeMX設定を、別MCUや別シリーズMCUへ簡単に移植する機能があります。移植性の高いHAL(Hardware Abstraction Layer)APIと併用すると、開発済みソフトウェアの再利用が簡単で強力なAPI生成ツールになりました。

STM32CubeMX設定移植機能

CubeMXには詳細な英語ユーザマニュアルUM1718 Rev35(全368ページ)があり、p1に主要機能説明があります。本ブログでもCubeMXコード生成機能の使い方やその重要性、STM32F0からF1へのソフトウェア移植方法などを何度か紹介してきました(検索窓に「STM32CubeMX」と入力すると関連投稿がピックアップされます)。

従来投稿は、MCUのCubeMX設定を、ターゲットMCUへ各項目を見ながら手動移植する方法でした。この方法は、予めターゲットMCUとの互換性が解っている場合や、移植周辺回路が少ない場合には有効です。

しかし、MCUの種類が増え、別シリーズMCUへ、または多くの周辺回路設定を個別に移植したい場合は、事前チェックは面倒です。そんな時に役立つ2機能が、UM1718 p1太文字記載の下記です。

  • Easy switching to another microcontroller
  • Easy exporting of current configuration to a compatible MCU

どちらもCubeMX画面のPinout & Configurationタブ選択、Pinoutプルダウンメニュー>List Pinout Compatible MCUs (Alt-L)をクリックすると、Full Compatible/Need Hardware change MCUが一覧表で表示されます。

List pinout compatible MCUs
List pinout compatible MCUs

STM32G0xテンプレート例

販売中STM32G0xテンプレートで使用中の汎用MCU:STM32G071RB(Cortex-M0+/64MHz、Flash/128KB、RAM/36KB)の例を示します。これは、評価ボードNUCLEO-G071RB搭載MCUです。

STM32G071RB Full and Partial match MCU List
STM32G071RB Full and Partial match MCU List

評価ボード搭載のLQFP64パッケージでフィルタ設定すると、青色:完全互換の汎用STM32G0シリーズMCUが12アイテム、黄色:一部ハードウェア変更が必要な低電力STM32L0シリーズMCUが17アイテムリストアップされます。

例えば、FlashやRAMを増量したい場合には、STM32G0B1RBへ開発ソフトウェアがそのまま移植できることが解ります。また、より低電力化したい場合には、STM32L071RBへも移植可能です。あとは、ターゲットMCUを選択し、STM32G0xテンプレートのCubeMXプロジェクト設定を全て移植するか、または一部周辺回路のみを移植するかの選択も可能です。

つまり、開発済みソフトウェアを別MCUへ移植する際に、容易性(完全互換/一部HW変更)と方向性(大容量化/低電力化など他MCUシリーズ適用)を評価でき、かつ、ターゲットMCU選択後は、ダイアログに従って操作すれば、CubeMX設定全て、または周辺回路毎にターゲットMCUへ自動移植ができる訳です。

CubeMX設定の移植後は、ターゲットMCU上で通常のようにコード生成を実行すれば、周辺回路初期設定や動作に必要となる関数群の枠組みが作成されます。その枠組みへ、STM32G0xテンプレートのHAL API開発済みソフトウェアをコピー&ペーストし、ターゲットMCUへのソフトウェア移植が完了です。

汎用MCUとHAL APIプロトタイプ開発

最新メインストリーム(汎用)プロトタイプ開発イメージ
最新メインストリーム(汎用)プロトタイプ開発イメージ

CubeMX設定の自動移植が簡単なことは、前章まででご理解頂けたと思います。

前例STM32G0xテンプレート開発ソフトウェアの移植可能なMCU数が12+17=29と大きいのは、汎用MCUとHAL APIを使ったソフトウェア資産だからです。

最新IoT MCU開発でも、STM32G0/G4シリーズなどの移植性が高い汎用MCU(=メインストリームMCU)とHAL APIを使って主要機能をプロトタイプ開発し、CubeMX移植機能を使ってターゲットIoT MCUへ移植すれば、最新IoT MCUの差分機能開発に集中できます。

つまり、「汎用MCUとHAL API利用のプロトタイプ開発は、他MCUへの移植性が高く、汎用との差分開発に集中できる高い生産性」をもたらす訳です。

※STM32G0/G4シリーズは、新プロセスで従来汎用STM32F0/F1/F3シリーズを高速・低電力化・セキュリティ強化した新しい汎用MCUです。コチラの関連投稿や、STM32U5発表と最新IoT MCU動向を参照してください。

STM32G0とG4のセキュリティ対応(出展:STM32 Security対応表に加筆)
STM32G0とG4のセキュリティ対応(出展:STM32 Security対応表に加筆)

まとめ

STマイクロMCU統合開発環境が、STM32CubeIDE v1.7.0とSTM32CubeMX v6.3.0へMajor Releaseされました。

開発済みMCUのCubeMX設定を、別MCUへ簡単に移植する機能があり、移植性が高い汎用(メインストリーム)MCUとHAL APIによるプロトタイプ開発ソフトウェア資産を、効率的に他MCUへ再活用できる統合開発環境になりました。

補足:NUCLEO評価ボードのユーザLED不足対策

汎用MCUとHAL APIプロトタイプ開発には、低価格で入手性も良いNUCLEO評価ボードが適しています。

但し、NUCLEO評価ボードのユーザ緑LED(LD2)とSW(B1)が、各1個と少ない点が残念です。CubeIDEサンプルプログラムは、単機能サンプル動作なので各1個でもOKですが、少し複雑な例えばRTOS並列動作確認などには、特にLEDが不足します。

お勧めは、赤LED 2個、SW 1個が実装済みのArduinoプロトタイプシールドです。残念ながらNUCLEO評価ボードSW(B1)は操作できないのでシールドSWで代用します。評価ボードArduinoピンとの配線や、付属ブレッドボードへの回路追加も簡単です。ST以外の様々なMCUベンダのArduinoコネクタ付き評価ボードでも使えます。

NUCLEO評価ボードLED不足対策のArduinoプロトタイプシールド。付属ブレッドボードに回路追加も容易。
NUCLEO評価ボードLED不足対策のArduinoプロトタイプシールド。付属ブレッドボードに回路追加も容易。

NUCLEO-G474REとArduinoプロトタイプシールドの使用例を示します。ArduinoプロトタイプシールドのLED1は、Lpuart受信、LED2は、SW操作、評価ボードのLD2は、1s/500ms/40ms点滅の動作確認に使っています。

STM版RTOSアプリケーションテンプレート構想もこの環境で検討中です(関連投稿:STM32RTOS開発3注意点(前編)、(後編))。