Help us understand the problem. What is going on with this article?

Homebrewでmbedローカルビルド環境作成

More than 3 years have passed since last update.

mbedに入門してローカルビルドしてみたので、メモ。

開梱〜Lチカまで

mbedを始めましょう!のページを見れば解決するので省略。

ローカルビルド環境を作る

基本的にmbedはオンラインコンパライラを使い、バイナリがサーバーから降ってくるという形で開発を進めます。なので、現場でトラブルが起こり、かつネット接続ができない場合などは切腹するしかないので、ローカルビルド環境をHomebrewでサクっと作ろうと思います。

HomebrewでGCC-ARM ToolChainを入れる

今回はGCCでビルドすることにして、下記Formulaを入れます。

% brew tap nitsky/stm32
% brew install arm-none-eabi-gcc

mbed SDKをクローンしてくる

とりあえずhomeでやります。このリポジトリをクローンします。

% cd ~
% git clone https://github.com/mbedmicro/mbed.git

各種プラットフォーム用ライブラリをビルドする

mbed SDKでは、自分の使用するmbed用ライブラリを事前にビルドする必要があります。
まずはクローンしてきたSDKにユーザ設定ファイルを追加。

% cd mbed
% touch workspace_tools/private_settings.py

このコマンドで、対応しているプラットフォーム+αを確認できます。

% python workspace_tools/build.py -h

例えば、LPC1768のライブラリを作成する場合はこんな感じ。

% python workspace_tools/build.py -m LPC1768 -t GCC_ARM

これでバイナリを作成する環境が整ったので、次はテストプログラムをビルドしてみます。

サンプルプログラムのビルド

まずは、SDKに同梱されているサンプルプログラムのリストを表示してみます。

% python workspace_tools/make.py -L
[  0] MBED_A1: Basic
[  1] MBED_A2: Semihost file system
[  2] MBED_A3: C++ STL
[  3] MBED_A4: I2C TMP102
[  4] MBED_A5: DigitalIn DigitalOut
[  5] MBED_A6: DigitalInOut
[  6] MBED_A7: InterruptIn
[  7] MBED_A8: Analog
[  8] MBED_A9: Serial Echo at 115200
[  9] MBED_A10: PortOut PortIn
[ 10] MBED_A11: PortInOut
.
.

このような形で120個くらいのサンプルプログラムが羅列されます。
次のようなオプションを指定して、0番目のBasicをビルド。

  • -m ターゲット = LPC1768
  • -t ビルド環境 = GCC_ARM
  • -p ソースコード = 0 (番号で指定)
  • -d binの生成ディレクトリ = ~/mbed/bin
% mkdir ~/mbed/bin
% python workspace_tools/make.py -m LPC1768 -t GCC_ARM -p 0 -d ~/mbed/bin

これで、指定した~/mbed/binbasic.binが生成されるはず。
あとはいつもどおり、このbasic.binをmbedに書き込み、リセットをかませばOKです。

自分のプロジェクトのビルド

最後に、自分のプロジェクトをオンラインコンパイラからエクスポートしてきて、ビルドします。この場合、プロジェクト内にターゲットのライブラリが同梱されているので、GCCのToolchainさえ入っていれば、上記のライブラリのビルドはしなくてもOKなんだろうな、たぶん(未確認)。

  • mbed Compiler を開く
  • Program WorkSpace (左のプロジェクトツリー) の所望のプロジェクトを右クリック
  • Export Program
  • ターゲットとToolchainを選択してExport

ダウンロードされたプロジェクトを解凍し、任意の場所に置く。そして、

% cd your_project_path
% make

これでOK。your_project_path直下にyour_project.hexが生成されます。

注意:Yosemiteではbinを書き込めないターゲットあり

こちらのフォーラムにある通り、現時点では、Yosemiteでmbedにプログラムを書き込めません。これに対処すべく、こちらで対策スクリプトを書いてくださっています。ありがとうございます!

最近は、別の解決方法も提案されているようです。daemonを走らせて、通常通りmbedにドラッグ&ドロップ出来るようにする方法のようです(未確認)。

一度やってしまったのでメモ。mbedをつないでいないときにmbed-on-Yosemite.appを使ってしまうと、/Volumes/MBEDなるファイルができてしまい、mbedをつないでもプログラムが書き込めなくなる。/Volumes/MBEDを消せば元通り書けるようになります。

@tedd_okano さんが修正版を作成してくれております。ありがとうございます!

ちなみに

Google先生に聞くと、gcc-arm toolchainは下記のリポジトリがたくさん出てきます。

% brew tap darconeous/embedded
% brew install arm-none-eabi-gcc

しかしながら、2014/12/11時点では、このformulaではビルドがうまくいかない…。

[ERROR] arm-none-eabi-gcc: error: nano.specs: No such file or directory

どうやらこれはUbuntu版のものらしく、かつ、そいつにバグがあるとか。
gcc-4.8.2以降でこうなってしまった、とのこと。
上記リポジトリで参照しているToolChainのバージョンを4.7.4〜4.9.0まで試してみましたが、ダメでした。ググりすぎて参考ページをメモしていないので、詳細は省きます。

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away