SW4STM32からSTM32CubeIDE移設

STマイクロエレクトロニクス(以下STM)MCUの統合開発環境(IDE)を、従来のSW4STM32から新しいSTM32CubeIDEへ移設するのは簡単です。STM32CubeIDE初期画面に、SW4STM32からSTM32CubeIDEへのプロジェクト変換機能があるからです。

しかし、本稿はSTM社自身による新しいSTM32CubeIDE発表を、STM32MCU純正開発ツールラインナップの完成ととらえ、SW4STM32で開発したSTM32FxテンプレートSTM32G0xテンプレートを、STM32CubeMX起点のSTM32CubeIDE移設方法とそのメリットを示します。

SW4STM32/TrueSTUDIOからSTM32CubeIDE移設背景

IDE開発元の買収&消滅、C/C++コンパイラ改版、Eclipse改版、WindowsなどのOS改版等々、IDE移設が生じる原因は、様々です。IDEは、MCU開発者と最も長い付合いをするツールで、しかも顧客先で稼働中ソフトウェアの変更手段ですので、IDE移設はできれば避けたい出来事です。

SW4STM32は、STM32MCU向けコードサイズ制限なしの無償IDEで、サードパーティAC6社が提供してきました。また、サードパーティAtollic社のTrueSTUDIOも同じくSTM32MCU向け無償IDEとして人気がありましたが、Atollic社をSTMが買収し、TrueSTUDIOはDiscontinue、代わりにSTM自社開発のSTM32CubeIDE無償提供を始めました(Atollic社買収の目的は、STM32CubeIDE開発だと思います)。

STM32 Software Development Tools(出典:STMサイト)
STM32 Software Development Tools(出典:STMサイト)

ポイントは、従来サードパーティが提供してきたコードサイズ制限なし無償IDEを、STM自らSTM32CubeIDEで提供し、「STM32CubeMX/IDE/Programmer/Monitorから構成されるSTM純正のSTM32MCU開発ツールラインナップが完成」したことです(上図)。

このうち、STM32CubeMoniterは、比較的新しいデバッガで、本ブログで紹介を予定しています。

STM32CubeIDEフォルダ構成

STM32CubeIDEは、SW4STM32やTrueSTUDIOよりも後発IDEですので、SW4STM32/TrueSTUDIO開発プロジェクトを、STM32CubeIDEプロジェクトへ変換し取込む機能があります。この機能の使用結果が下図左側です。

STM32CubeIDE変換機能移設プロジェクト(左)とSTM32CubeIDE新規プロジェクト(右)のフォルダ構成比較
STM32CubeIDE変換機能移設プロジェクト(左)とSTM32CubeIDE新規プロジェクト(右)のフォルダ構成比較

左側は、弊社がSW4STM32で開発したSTM32G0x SimpleTemplateプロジェクトを、STM32CubeIDEの変換機能を使ってSTM32CubeIDEプロジェクトへ移設後のProject Explorer、一方、右側は、STM32CubeIDEで新規にSTM32G0プロジェクトを作成した時のProject Explorerです。

左右でプロジェクトのフォルダ構成が異なっていることが判ります。

左:変換機能利用の移設プロジェクトは、従来のSW4STM32フォルダ構成がそのままSTM32CubeIDEで再現されます。

右:STM32CubeIDE新規プロジェクトのフォルダ構成は、Coreフォルダ内にIncフォルダとSrcフォルダがまとめられています。これがSTM32CubeIDE本来のフォルダ構成です。
※ここでのCoreは、下図Application code層を示します。

STM32CubeIDE本来のフォルダ構成は、MCUがCortex-M4のSTM32G4などへ代わっても、Core>Inc/Src構成は不変で、Driversフォルダの中身がSTM32G4対応へ変わるのみです。つまり、よりCMSIS対応のアプリケーション開発に向いた構成です。

CMSIS Structure(出典:Keil CMSIS Version 5.6.0 Generalサイト)
CMSIS Structure(出典:Keil CMSIS Version 5.6.0 Generalサイト)

※CMSIS対応は、関連投稿:mbed OS 5.4.0のLチカ動作、LPCXpresso824-MAXで確認の3章 CMSISを参照してください。

このようにSTM32CubeIDEは、開発者が「本来のアプリケーション開発に集中し易い、つまりIncとSrcのコード作成に集中できるMCU非依存のフォルダ構成」です。

さらに、他の「STM32MCU純正開発ツールとの相性良さや、新発売MCUデバイスへの素早い対応」も期待できます。

これらは、サードパーティIDEになかったSTM自社開発STM32CubeIDEの大きなメリットです。

STM32CubeMX起点のSTM32CubeIDE移設

STM32Fx/G0xテンプレートは、SW4STM32で開発しました。STM32CubeIDEプロジェクト変換機能を使って、従来SW4STM32フォルダ構成のままSTM32CubeIDEへの移設は簡単です。しかし、前章のSTM32CubeIDE本来のフォルダ構成の方が、より大きなメリットが期待できます。

そこで、本来のSTM32CubeIDEプロジェクトフォルダ構成へ、SW4STM32プロジェクトを移設します。

これには、STM32Fx/G0xテンプレート開発時に自作したSTM32CubeMXプロジェクトファイル(前章の左側:SimpleTemplate.ioc)を使います。

STM32CubeMXは、STM32MCUソフトウェア開発の起点となるコード生成ツールです。このSTM32CubeMXから移設を始めれば、次段のSTM32CubeIDEも本来の新規プロジェクト構成で自動生成されます。

さらに、開発アプリケーションで使うLL API/HAL APIの選択や変更も、STM32CubeMXで行います。従って、LL APIが「主」で開発したSTM32G0xテンプレートを、HAL APIへ変えるのも容易です。
※LL API「主」からHAL APIへも「主」へ変更する理由は、STM32G0シリーズがRoot of Trust対応メインストリーム(汎用)MCUだからです。STM32G0専用のLL APIアプリケーションよりも、汎用HAL APIアプリケーションの方が、Root of Trust実現には向いています。詳しくは、関連投稿:STM32G0/G4のRoot of Trust(2)を参照してください。

SW4STM32のSTM32CubeMXプロジェクトファイル(SimpleTemplate.ioc)を起点としてSTM32CubeIDEへ移設したProject Explorerが下図です。前章の右側:STM32CubeIDE新規プロジェクトと同じフォルダ構成で移設されていることが判ります。

STM32CubeMXプロジェクトファイル起点でSTM32CubeIDEへ移設
STM32CubeMXプロジェクトファイル起点でSTM32CubeIDEへ移設

但しこの方法では、SW4STM32でユーザ(筆者)が追加作成したファイル、前章左側:Launcher.c/Led.c/Lpuart.c/UserDefine.hは、手動で移設する必要があります。

まとめ

STM32CubeIDEの提供で、STM32MCU純正開発ツールラインナップが完成しました。
※STM32CubeIDE v1.3.0に残っていた日本語文字化けは、コチラの投稿方法で解決しました。

SW4STM32/TrueSTUDIOなどの従来IDEからSTM32CubeIDE 移設のメリットは、他のSTM純正開発ツール(STM32CubeMX/Programmer/Monitor)との好相性や新発売MCUデバイスへの早い対応です。

従来IDEプロジェクトの移設は、STM32CubeIDEプロジェクト変換機能を使うと簡単です。しかし、移設メリットを活かすには、旧IDEフォルダ構成から、STM32CubeIDE本来の構成となるSTM32CubeMXプロジェクト起点の移設を、弊社STM32Fx/G0xテンプレートへ適用します。

STM32CubeIDE対応の各テンプレート改版完成は、本ブログで発表します。