SW4STM32でmbedプロジェクトをコンパイルする方法(Windows)

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日現在)
デバイスドライバの更新待ちです。


2016年9月5日追記


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
こちらからダウンロードすることができますので、インストールしておきます。

2016-08-31_03h16_35

今回はjre-8u101-windows-x64.exeをダウンロードしてインストールしました。

gcc

https://launchpad.net/gcc-arm-embedded/
こちらからダウンロードすることができます。

2016-08-31_03h05_27

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でも特に問題なく使用することができています。
こちらは会員登録が必要ですので、会員登録をしてログインします。

スクリーンショット 2016-08-31 02.51.37

今回は最新版の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

2016-08-31_03h30_57

本来ならば TARGET_NUCLEO_F446RE/TOOLCHAIN_GCC_ARM となって間にスラッシュが入るべきところ、 TARGET_NUCLEO_F446RETOOLCHAIN_GCC_ARM と1文字抜けてしまっています。
その時々で抜ける文字は変わるようです。
存在するはずのファイルが参照できないエラーにぶつかったときにはパスをもう一度よく確認してみてください。もしかしたら長すぎるのかもしれません。

ですから、 C:\SW4STM32 などのようになるべくパスが短くなるようにします。

2016-08-31_03h20_57

プロジェクトのエクスポート

mbedのオンラインコンパイラでプロジェクトをエクスポートします。
2016-08-31_03h35_26

プロジェクトのインポート

FileメニューからImport…を選択します。
Existing Projects into Workspaceを選びます。
2016-08-31_03h25_15
先ほどエクスポートしたzipファイルを選択し、Finishをクリックするとインポートできます。
2016-08-31_03h25_50

あとはプロジェクトをビルドするだけです。

これでワークスペース内のプロジェクトフォルダの中にDebugフォルダができ、その中にプロジェクト名.binができますのでこれを書き込むことができれば成功です。

2016-08-31_03h24_34

uVisionなどオフライン環境はほかにもたくさんありますが、無料で制限なしで使える環境はほとんどないようです。
Windowsだけではなく、UbuntuやOS Xでも使えるのでしばらくはSW4STM32でNucleo用にコンパイルしていこうと思います。

コメント

  1. kittyan より:

    エラーについて質問させていただきます。

    ”このフォルダまでのパスが長すぎるとコンパイル時に実行するMakefileの1行あたりのコマンドが長すぎてエラーが出てしまいます。” についてですが、掲載された内容と同様にパスを短くしてもエラーが改善されませんでした。
    デバイスはNUCLEO-446REで、NUCLEO-303K8では同じ環境下でエラーが出ませんでした。
    リンク時の参照オブジェクトファイル?が多すぎるためのエラーのような気がするのですがこのようなことはあるのでしょうか。

    • Tiryoh より:

      コメントありがとうございます。

      おそらく、オブジェクトファイルが増えたか、ファイル名が長くなったのだと思います。
      具体的にはどのようなエラーが出ていますでしょうか?
      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

      • kittyan より:

        エラーはご指摘の通り、No such file or directoryでした。
        コマンドの文字数を調べたところ、8191文字を超えてしまっていましたので、設定から私には不必要なオブジェクトファイルを読み込まないようにしたところ文字数が8191文字を下回り、無事ビルドが通りました。

        Windowsが8191文字までしかコマンドを読めないのは初めて知りました。。。
        本当にありがとうございます!

        p.s Windowsのローカルの開発環境が困ったことになりますね。この先さらにファイルが増えていくだろうに。。。

  2. kittyan より:

    エラーはご指摘の通り、No such file or directoryでした。
    コマンドの文字数を調べたところ、8191文字を超えてしまっていましたので、設定から私には不必要なオブジェクトファイルを読み込まないようにしたところ文字数が8191文字を下回り、無事ビルドが通りました。

    Windowsが8191文字までしかコマンドを読めないのは初めて知りました。。。
    本当にありがとうございます!

    p.s Windowsのローカルの開発環境が困ったことになりますね。この先さらにファイルが増えていくだろうに。。。