STM32 CubeMX Programmer(STM32CUBEPROG)が出たぞ (1)

あけましておめでとうございます。田舎のジジババの家に帰省して、毎年恒例気疲れで過ごした年越しです。げっそり.

今回は昨年12月末にリリースされていた、STM32 CubeMX Programmer(STM32CUBEPROG) についてやってみた & レビューを行いたいと思います。当然 Mac 中心に。
リリースをまとめた記事はここで、ダウンロードページはここになります。

個人的には SWD と UART 書き込みが同時に公式ツールで対応されたということが一番嬉しいです。これまで SWD 書き込みには ST-Link 以外のインターフェイスを
SW4STM32 で使う場合、色々設定が必要でした。CLI とかコンフィグファイルとか弄るの嫌いではないので良かったのですが、我が WMMC では STM32 を標準のマイコンとして採用するという計画があるのでこれはメリットになるんですよ。このツールが公式でリリースされたので、導入に一役買ってくれるだろうと非常に安心しました。

いきなり詰まったインストール作業

めちゃくちゃ詰まりました。半分以上は僕のせいなのですが。でもまあデベロッパーの方々ならハマりそうな事案ですのでここで取り上げさせていただきます。

まず上のリンクから zip ファイルをダウンロードします。この中には Windows 版、Mac 版、Linux 版のインストーラがあります。ファイルサイズ的に Windows は自己展開になっているんですかね。それ以外はネットワークからダウンロードするタイプだと思います。続いて実行なのですが、Mac では例のごとく展開先の .app ファイルは起動しません。ですので仕方がないですがコマンドラインでいきます。例えば以下のように。

$ ./SetupSTM32CubeProgrammer-1.0.0.app/Contents/MacOsSetupSTM32CubeProgrammer-1_0_0_macos

これで起動します。一方でダブルクリックで起動しない理由は、どうやらファイル属性によるものらしいです。ここでちょっと脱線。

ファイル属性の解除 for Mac

外部からダウンロードしたファイルに関して、Mac に限るのですが、変な(?)特殊属性がつくことがあるというのです。そのついている属性は xattr コマンドで調べられます。実際インストーラには com.apple.quarantine と言う属性がありました。どうやらこれがダブルクリックで起動しない原因。参考にしたのは以下の Qiita 記事です。

# Extended Attribute mac でファイルをダウンロードすると必ずついてくる「@(アットマーク)」 ```bash $ ll total 34864 -rw-r--r--@ 1 white_aspara25 st...

ということで、とりあえず以下のコマンドで属性が解除できました。

$ xattr -c SetupSTM32CubeProgrammer-1.0.0.app

こうすることで本インストーラは既にダブルクリックで起動出来るようになりました。また、同様のことを行えば CubeMX のインストーラも同じように起動可能になります

インストール続き

話を戻します。続いて適当にポチポチやってインストールしていきます。途中選択肢がありますが、書き込み機能のみを使うのであれば以下のようにデフォルトのままでいいでしょう。

以上でダウンロードが始まり、インストールがサクッと完了する…はずです。ダウンロード完了した方おめでとうございます。僕はダメでした。

Step 6 / 8 で止まる人へ

僕です。これでだいぶハマりました。どうやら Java 9 が原因でダウンロードが始まらないっぽいです。僕のマシンでは速攻に Java 9 をインストールして、速攻 Java 8 とはおさらばしていました。メジャーアップデートで旧バージョンを一切残さないなんてアホですね。新しいもの好きの方や、新しく導入された jshell ってシェル芸できるのか とか頭のおかしい人とかはハマるのでは、と思います。如何せんリリースが直近なので英語で検索しても何も情報がヒットしませんでした。つらかった。

それでは以下解決法です。まず Java 8 を消してしまった人は適当に Homebrew あたりで復活させましょう。

$ brew install java8

そして、Java 8 を優先させたい場合は環境変数をこんな感じで設定。

$ export JAVA_HOME=$(/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8")

これで実行してもらえればいけます。環境変数変えたくないよ!と言う方は適当に以下のコマンドでイケルと思いますよ。

$ JAVA_HOME=$(/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8") ./SetupSTM32CubeProgrammer-1.0.0.app/Contents/MacOsSetupSTM32CubeProgrammer-1_0_0_macos

これで僕はサクッと行きました。はぁぁ、よかったぁ

ちなみに

Java 9 を用いた場合、コンソールにエラーログが出ていました。

Command line arguments:
====================
Installation started
Exception in thread "IzPack - Unpacker thread" java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader
    at com.izforge.izpack.installer.unpacker.UnpackerBase.logIntro(UnpackerBase.java:253)
    at com.izforge.izpack.installer.unpacker.UnpackerBase.unpack(UnpackerBase.java:285)
    at com.izforge.izpack.installer.unpacker.UnpackerBase.run(UnpackerBase.java:242)
    at java.base/java.lang.Thread.run(Thread.java:844)

URLClassLoader あたりでエラーが出ていますね。これで処理が止まっていたのか。


ということで長くなってしまったので実際に使ってみた感想や使い方については次回、ということで失礼します。
実は僕、インストールに成功して安心してしまって、まだ使ってないんですよぉぉぉぉ(すみません…)