あけましておめでとうございます。田舎のジジババの家に帰省して、毎年恒例気疲れで過ごした年越しです。げっそり.
今回は昨年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 記事です。
ということで、とりあえず以下のコマンドで属性が解除できました。
$ 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
あたりでエラーが出ていますね。これで処理が止まっていたのか。
ということで長くなってしまったので実際に使ってみた感想や使い方については次回、ということで失礼します。
実は僕、インストールに成功して安心してしまって、まだ使ってないんですよぉぉぉぉ(すみません...)
コメント
Thanks for the great information. I read your article using google translate (I don't know Japanese) and managed to installed the STMCuteProgrammer on my Mac!
However, I still not be able to run STMCuteProgrammer from either the icon in /Application folder or the command line. Any idea what else I need to do?
Thank you for reading my blog post.
Did you try to execute
for the installed app package?
I suppose STmicro tends to add an unnecessary attribute to app file for some reason.
Don't hesitate to reply here with any error message if you have problems.
Thanks for your reply. Yes, I did this:
```
xattr -c /Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer
```
The app seems to run and then quickly exited.
There is a STM32_Programmer_CLI within STM32CubeProgrammer.app/Contents/MacOs/bin directory that seems to run but I have not figure out how to use it yet.
A billion thanks! I finally managed to install it!
..By the way, I don't really understand how a big company like ST releases such a crappy SW installer. It's a shame!
That's good! I spent a lot of time (a few hours?) in that terrible app executable.
ST doen't check if it works well, I suspect.
I'm testing the latest installer works, but still now it doesn't!
I don't want to admit that ST **supports** macOS fully.