mbed CLI (コマンドライン・インタフェース)を Mac OS X で使ってみる

mbed OS 5が発表され,これまでのmbed Classic(mbed 2.0)環境とmbed OS(mbed 3.5)がうまく統合されました.
このmbed OS 5ではオンライン・コンパイラに加え,自分のPC上でもコマンドラインでコンパイルが可能になっています.(さらにmbed.orgやGithubと連携したバージョン管理も可能になっています)

このインターフェースは「mbed CLI (Command Line Interface)」と呼ばれ,次のページのビデオでその使い方が紹介されています.
https://docs.mbed.com/docs/mbed-os-handbook/en/5.1/getting_started/blinky_cli/

せっかくMacを使っているのですから,簡単にインストールしてササッと使えればいいのですが,基本的にUNIXのツールであるこれらのコマンドを使えるようにするには,いくつかの手順が必要です.

このノートブック・ページでは,Mac OS X(バージョン10.11.6)mbed LPC1768でこれらの環境を動かしてみた手順をまとめてあります.

Information

「ワタシ,Windowsユーザなんですけど」という方は,ツボイ大先生が書かれた
『[lang:ja] mbed CLIをWindowsで使ってみる(環境構築編)』を御覧ください ( ´ ▽ ` )ノ

LinuxでのCLI環境のセットアップについては,こちらの『mbed OS 5 の CLI 開発環境を Linux 上に構築する』を参照ください.


0. 準備編

mbed CLIは簡単にインストールして使うことができるようになっているのですが,その下準備としていくつかのソフトをインストールしておかなくてはなりません.
この例では「Homebrew」と呼ばれるパッケージマネージャを使って,必要なソフトを準備します.


0.1 Xcodeのアップデートをしておく

まずその前に,HomebrewはXcodeの最新版を必要とするため,まずXcodeのインストールまたはアップデートをしておきます.
Mac OS Xのアプリケーション:App StoreからXcodeをインストールまたはアップデートしておいてください.

Xcode_in_app_store


0.2 Homebrewのインストール

Homebrew自体のインストールも簡単です.
ターミナル.appを開き以下のコマンドを打って実行するだけです.
※ このHomebrewのインストール・コマンドはbash上で実行する必要があります.もし他のシェルを設定して使っている場合はbashで実行してください.

Information

以下に出てくるコマンドの例には,行頭に「$」マークが付いていますが,これはユーザの入力を待つプロンプトです.実際にコマンドを入力する際にはこれを打つ必要はありません.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


0.3 Pythonのインストール

mbed CLIの実行に必要なPythonをインストールします.

$ brew install python
$ brew link --overwrite python


0.4 GitとMercurial,GCC_ARMのインストール

GCC_ARM はコンパイラ,GitとMercurialはコードのインポートや公開を行うために必要なツールです.
以下のコマンドを順番に実行してコンパイラをインストールします.

$ brew tap ArmMbed/homebrew-formulae
$ brew install arm-none-eabi-gcc

Information

参考:坪井さんから新しい方法についてのアドバイスを頂きました.
旧内容では以下のようなコマンドを掲載していました.

$ brew tap PX4/homebrew-px4
$ brew update
$ brew install git hg gcc-arm-none-eabi


0.5 mbed CLIのインストール

mbed CLIツールのインストールが終われば,これで準備は完了です.

$ pip install mbed-cli


1. 動作確認編

ここからはmbed CLIの紹介ビデオに従って,動作を確認していきます.


1.1 mbedコードのインポート

Lチカ(LED点滅)のサンプルコードで動作を確認します.
まずこの実験を行う前に実験用のディレクトリを作っておきました.
ここではその例として自分のユーザディレクトリの下にmbed_os5という名前のディレクトリを用意し,その中で作業を行いました.

自分のユーザディレクトリ内にディレクトリを作るには以下の様なコマンドを順に実行します

$ cd
$ mkdir mbed_os5

ディレクトリを用意したらそのディレクトリへ移ってから

$ cd ~/mbed_os5

以下のコマンドを実行します.

$ mmbed import https://github.com/ARMmbed/mbed-os-example-blinky

インポートを行うと,インポートしたプログラム名のディレクトリが,実験用ディレクトリの中にできています.
新しくできたmbed-os-example-blinkyディレクトリへ移動して中身を確かめてみましょう.

$ cd mbed-os-example-blinky
$ ls

$ ls
CONTRIBUTING.md  main.cpp         mbed-os.lib      resources
README.md        mbed-os          mbed_settings.py

lsコマンドの実行例


1.2 実行環境の設定

次に実行環境の設定を行います.
mbed detectコマンドを実行すると,その時点でMacに接続されているmbedを検出してその結果を返してきます.

$ mbed detect

$ mbed detect
   (((中略)))
[mbed] Detected LPC1768, port /dev/tty.usbmodem14202, mounted /Volumes/MBED, interface version unknown:
[mbed] Supported toolchains for LPC1768
| Target  | mbed OS 2 | mbed OS 5 |    uARM   |    IAR    |    ARM    |  GCC_ARM  |
|---------|-----------|-----------|-----------|-----------|-----------|-----------|
| LPC1768 |     -     | Supported | Supported | Supported | Supported | Supported |
Supported targets: 1
Supported toolchains: 4

mbed detectコマンドの実行例


もしmbedが接続されていなければ,「mbedが検出できなかった」メッセージが返ってきます.

$ mbed detect
[mbed] Working path "~/mbed_os5/mbed-os-example-blinky" (library)
[mbed] Program path "~/mbed_os5/mbed-os-example-blinky"
[mbed] No mbed targets were detected on your system.

mbed detectコマンドの実行例:mbedが検出できなかった


次にツールチェーン(コンパイラ)とターゲットの指定を行います.
mbed detectコマンドで返ってきた情報を元に,ここではツールチェーンにGCC_ARM,ターゲットにLPC1768を指定します.

$ mbed toolchain GCC_ARM
$ mbed target LPC1768

$ mbed toolchain GCC_ARM
[mbed] Working path "~/mbed_os5/mbed-os-example-blinky" (library)
[mbed] Program path "~/mbed_os5/mbed-os-example-blinky"
[mbed] GCC_ARM now set as default toolchain in program "mbed-os-example-blinky"
$ mbed target LPC1768
[mbed] Working path "~/mbed_os5/mbed-os-example-blinky" (library)
[mbed] Program path "~/mbed_os5/mbed-os-example-blinky"
[mbed] LPC1768 now set as default target in program "mbed-os-example-blinky"

mbed toolchain / mbed targetコマンドの実行例


1.3 コンパイル

いよいよコンパイルです.
mbed compileのコマンド一発でコンパイル(ビルド)を行ってくれます.

$ mbed compile

$ mbed compile  
   (((中略)))

---
Building project mbed-os-example-blinky (LPC1768, GCC_ARM)
Scan: mbed-os-example-blinky

   (((中略)))
   
Link: mbed-os-example-blinky
Elf2Bin: mbed-os-example-blinky
Post-Build: mbed-os-example-blinky
| Module           |         .text |       .data |        .bss |
|------------------|---------------|-------------|-------------|
| [fill]           |     608(+608) |       4(+4) |     22(+22) |
| [lib]/c.a        |   4736(+4736) | 2108(+2108) |     89(+89) |
| [lib]/gcc.a      |     760(+760) |       0(+0) |       0(+0) |
| [lib]/misc       |     180(+180) |       4(+4) |     28(+28) |
| main.o           |       76(+76) |       0(+0) |       0(+0) |
| mbed-os/drivers  |       70(+70) |       0(+0) |       0(+0) |
| mbed-os/hal      |   1626(+1626) |       4(+4) |     67(+67) |
| mbed-os/platform |   4400(+4400) |   260(+260) |   348(+348) |
| mbed-os/rtos     |   6520(+6520) |   168(+168) | 5973(+5973) |
| mbed-os/targets  |   2720(+2720) |       4(+4) |   241(+241) |
| Subtotals        | 21696(+21696) | 2552(+2552) | 6768(+6768) |
Total Static RAM memory (data + bss): 9320(+9320) bytes
Total Flash memory (text + data): 24248(+24248) bytes

Image: ./BUILD/LPC1768/GCC_ARM/mbed-os-example-blinky.bin

mbed compileコマンドの実行例


1.4 実行バイナリのコピー (ターゲットへの書き込み)

コンパイルが完了すると,実験用ディレクトリの中のBUILDLPC1768GCC_ARMディレクトリに実行ファイル:mbed-os-example-blinky.binができます.これをmbedにコピーして,mbed基板上のリセットボタンを押せば,実行できます.

もしコマンドライン上でファイルのコピーを行うなら,次のようなcpコマンドで実行できます.

$ cp BUILD/LPC1768/GCC_ARM/mbed-os-example-blinky.bin /Volumes/MBED/

あるいはBUILDディレクトリをFinderで開いて,GUI上でドラッグ・アンド・ドロップでコピーすることもできます.
コマンドラインではopenコマンドを使って指定したディレクトリを開くことができるので,次のようなコマンドを用いることでFinderからは直接見えなかったディレクトリをGUI上で開くことができます.

$ open BIULD

under_dot_build
この図のフォルダ名は「.build」になっていますが,現バージョンのmbed-cliでは上記の通り「BUILD」フォルダができます

このファイルをマウスでつまんでmbedに入れれば,GUI上で簡単にコピーできます.



mbed CLIを使ってみて

プログラムをインポートした後のmbed-osディレクトリ(mbed2.0のプログラムの場合はmbedディレクトリ)はどちらも250MBを超える大きな容量となるようです.複数のプログラムを容量の少ないローカルマシンで管理する場合には注意が必要となりそうです.

sizeof_project

更新情報

2020年6月2日更新
坪井さんから新しい方法についてのアドバイスを頂きそれに従ってひと通りの動作を試してみたら,いろいろ変わってた.なので必要な部分を更新.

  • 指摘いただいたインストールコマンド
  • サンプルコードのインポート先URL
  • コマンド実行時の各画面表示
  • コンパイル結果が入るフォルダ名

しかしサンプルコードをコンパイルして走らせてみただけなのに,何故かLED1の点滅周期が異常に長いぞ ( ꒪﹃ ꒪) ?


6 comments on mbed CLI (コマンドライン・インタフェース)を Mac OS X で使ってみる:

15 Aug 2016

1.1 mbedコードのインポート のところ、
$ cd /mbed_os5
になってますが、チルダ消えてますか?
$ cd ~/mbed_os5

16 Aug 2016

ご指摘頂きありがとうございます.
その通りチルダが消えてしまっていました.
訂正しました.

03 Jan 2017

今試したら、最後のビルドディレクトリが.buildではなく、BUILDディレクトリになっていました。 Image: ./BUILD/LPC1768/GCC_ARM/mbed-os-example-blinky.bin

マシンに依存しているのでしょうか?

by たまねぎおじさん

21 Jan 2020

Step 0.4のGCC_ARMのインストール、今はbrewのformulaeがMbedチームから出ています。
https://github.com/ARMmbed/homebrew-formulae
これでOS 5.15でサポートされているGCC 9がインストールできます。

16 Nov 2020

No space left on device となります。どうすればよいでしょうか。

16 Nov 2020

cp BUILD/NUCLEO_F303K8/GCC_ARM/mbed-os-example-blinky.bin /[デバイスディレクトリ] を実行した際にです。

Please log in to post comments.