System Workbench for STM32(SW4STM32)でmbedプロジェクトをコンパイルする方法のメモ。
今年5月にMac向けにも提供されるようになったSW4STM32を使ってmbedのプロジェクトをコンパイルする方法をメモしておきます。
STM32マイコンのMac OS X向け無償開発ツールを発表|STマイクロエレクトロニクスのプレスリリース
http://prtimes.jp/main/html/rd/p/000000703.000001337.html
SW4STM32はAc6社のeclipseベースのIDEで、openSTM32.orgがサポートしています。
残念ながらこのopenSTM32.orgコミュニティは日本語には対応していません。
使用環境
- Windows 10 Pro 64bit(Version 1511)
Windows 10 Anniversary Updateを適用するとNucleoをmbedとして使用することができなくなります。
Nucleoボードがリムーバブルディスクとしてエクスプローラに認識されず、バイナリファイルをコピーしてプログラムを書き込むことができません。(2016年8月31日現在)
デバイスドライバの更新待ちです。
Windows 10 Anniversary Updateとmbedインターフェースファームウェアの互換性の問題は、KB3176936を適用する事で解決するみたいです。LPCマイコンのUSBでのISPとの問題も解決する模様です。 https://t.co/unzsGYbOK1
— Switch Science (@ssci) August 29, 2016
Windows UpdateのKB3176936を適用することでNucleoボードをリームーバブルディスクとして認識させることができるようになっていたことを確認しました。
インストール
以下の3つをインストールします。
- Java Runtime Environment (JRE)
- gcc-arm-none-eabi
- SW4STM32
Java
「3億のデバイスで走る」で有名なJavaです。
http://www.java.com/ja/download/manual.jsp
こちらからダウンロードすることができますので、インストールしておきます。
今回はjre-8u101-windows-x64.exeをダウンロードしてインストールしました。
gcc
https://launchpad.net/gcc-arm-embedded/
こちらからダウンロードすることができます。
2016年8月31日現在の最新版は6です。今回は事前に用意してあったgcc-arm-none-eabi-5_4-2016q2-20160622-win32.exeをインストールしました。
SW4STM32
http://www.openstm32.org/Downloading+the+System+Workbench+for+STM32+installer
こちらからダウンロードすることができます。
Windows7と書いてありますが、Windows10でも特に問題なく使用することができています。
こちらは会員登録が必要ですので、会員登録をしてログインします。
今回は最新版のinstall_sw4stm32_win_64bits-v1.8.exeをインストールしました。
設定
簡単な話なのですが、躓いてしまったことなのでメモしておきます。
初回起動時にワークスペースを指定します。よくあるのはここでドキュメントフォルダ直下や C:\Users\User\workspace
などだと思います。
このフォルダまでのパスが長すぎるとコンパイル時に実行するMakefileの1行あたりのコマンドが長すぎてエラーが出てしまいます。
arm-none-eabi-g++: error: C:/SW4STM32/NucleoF446RE_LANCER2015Clone/mbed/TARGET_NUCLEO_F446RETOOLCHAIN_GCC_ARM/stm32f4xx_ll_usb.o: No such file or directory
本来ならば TARGET_NUCLEO_F446RE/TOOLCHAIN_GCC_ARM
となって間にスラッシュが入るべきところ、 TARGET_NUCLEO_F446RETOOLCHAIN_GCC_ARM
と1文字抜けてしまっています。
その時々で抜ける文字は変わるようです。
存在するはずのファイルが参照できないエラーにぶつかったときにはパスをもう一度よく確認してみてください。もしかしたら長すぎるのかもしれません。
ですから、 C:\SW4STM32
などのようになるべくパスが短くなるようにします。
プロジェクトのエクスポート
mbedのオンラインコンパイラでプロジェクトをエクスポートします。
プロジェクトのインポート
FileメニューからImport…を選択します。
Existing Projects into Workspaceを選びます。
先ほどエクスポートしたzipファイルを選択し、Finishをクリックするとインポートできます。
あとはプロジェクトをビルドするだけです。
これでワークスペース内のプロジェクトフォルダの中にDebugフォルダができ、その中にプロジェクト名.binができますのでこれを書き込むことができれば成功です。
uVisionなどオフライン環境はほかにもたくさんありますが、無料で制限なしで使える環境はほとんどないようです。
Windowsだけではなく、UbuntuやOS Xでも使えるのでしばらくはSW4STM32でNucleo用にコンパイルしていこうと思います。
コメント
コメント一覧 (4件)
エラーについて質問させていただきます。
”このフォルダまでのパスが長すぎるとコンパイル時に実行するMakefileの1行あたりのコマンドが長すぎてエラーが出てしまいます。” についてですが、掲載された内容と同様にパスを短くしてもエラーが改善されませんでした。
デバイスはNUCLEO-446REで、NUCLEO-303K8では同じ環境下でエラーが出ませんでした。
リンク時の参照オブジェクトファイル?が多すぎるためのエラーのような気がするのですがこのようなことはあるのでしょうか。
コメントありがとうございます。
おそらく、オブジェクトファイルが増えたか、ファイル名が長くなったのだと思います。
具体的にはどのようなエラーが出ていますでしょうか?
makeコマンドで「No such file or directory」とエラーが出ている状態でしょうか?
Consoleのタブでエラーの詳細を確認してみてください。
mbed.hを最新版に更新してみたところ、私の環境ではF446RE、F303K8ともにコンパイルに失敗してしまいました。
存在するはずのオブジェクトファイルまでのパスが異なるために「No such file or directory」というエラーが出ます。
リンク時のコマンドがWindowsのコマンドで使用できる8191文字を1000文字近く超えてしまっていました。
( https://support.microsoft.com/ja-jp/help/2823587 )
私はmbed.hのリビジョンを129にして使用しています。
最新版ではありませんが、使用に際して今のところ問題はありません。
F446RE、F303K8どちらも使用することができています。
リビジョンについては以下のハンドブックに書いてありました。
もしよろしければ併せてご確認ください。
https://developer.mbed.org/handbook/Compiler-Version-Control
エラーはご指摘の通り、No such file or directoryでした。
コマンドの文字数を調べたところ、8191文字を超えてしまっていましたので、設定から私には不必要なオブジェクトファイルを読み込まないようにしたところ文字数が8191文字を下回り、無事ビルドが通りました。
Windowsが8191文字までしかコマンドを読めないのは初めて知りました。。。
本当にありがとうございます!
p.s Windowsのローカルの開発環境が困ったことになりますね。この先さらにファイルが増えていくだろうに。。。
エラーはご指摘の通り、No such file or directoryでした。
コマンドの文字数を調べたところ、8191文字を超えてしまっていましたので、設定から私には不必要なオブジェクトファイルを読み込まないようにしたところ文字数が8191文字を下回り、無事ビルドが通りました。
Windowsが8191文字までしかコマンドを読めないのは初めて知りました。。。
本当にありがとうございます!
p.s Windowsのローカルの開発環境が困ったことになりますね。この先さらにファイルが増えていくだろうに。。。