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 PX4/homebrew-px4
$ brew update
$ brew install git hg gcc-arm-none-eabi

参考:brewコマンドによるGCC_ARMのインストール


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

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

$ mbed import https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-blinky

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

$ cd mbed-os-example-blinky
$ ls

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

lsコマンドの実行例


1.2 実行環境の設定

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

$ mbed detect

$ mbed detect

[mbed] Detected LPC1768, port /dev/tty.usbmodem1422, mounted /Volumes/MBED
[mbed] Supported toolchains for LPC1768
+---------+-----------+-----------+-----------+-----------+-----------+
| Target  | mbed OS 2 | mbed OS 5 |    ARM    |  GCC_ARM  |    IAR    |
+---------+-----------+-----------+-----------+-----------+-----------+
| LPC1768 | Supported | Supported | Supported | Supported | Supported |
+---------+-----------+-----------+-----------+-----------+-----------+
Supported targets: 1
Supported toolchains: 3

mbed detectコマンドの実行例


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

$ mbed detect

[mbed] No mbed targets where detected on your system.

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


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

$ mbed toolchain GCC_ARM
$ mbed target LPC1768

$ mbed toolchain GCC_ARM
[mbed] GCC_ARM now set as default toolchain in program "mbed-os-example-blinky"
$ mbed target LPC1768
[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: .

   (((中略)))

Scan: mbed
Scan: env
Compile: main.cpp

   (((中略)))

Link: mbed-os-example-blinky
Elf2Bin: mbed-os-example-blinky
+---------------------+-------+-------+------+
| Module              | .text | .data | .bss |
+---------------------+-------+-------+------+
| Fill                |   119 |     0 |   13 |
| Misc                | 31909 |  2196 | 2176 |
| features/frameworks |  3936 |    92 |  792 |
| hal/common          |  2861 |     4 |  269 |
| hal/targets         |  3574 |     4 |  244 |
| rtos/rtos           |    22 |     4 |    0 |
| rtos/rtx            |  5571 |    20 | 2682 |
| Subtotals           | 47992 |  2320 | 6176 |
+---------------------+-------+-------+------+
Allocated Heap: 2048 bytes
Allocated Stack: 3072 bytes
Total Static RAM memory (data + bss): 8496 bytes
Total RAM memory (data + bss + heap + stack): 13616 bytes
Total Flash memory (text + data + misc): 50312 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上でドラッグ・アンド・ドロップでコピーすることもできます.
ただし.buildディレクトリはドットで始まる名前となっているため,Finder上で不可視ディレクトリとして扱われてしまいます.
コマンドラインではopenコマンドを使って指定したディレクトリを開くことができるので,次のようなコマンドを用いることでFinderからは直接見えなかったディレクトリをGUI上で開くことができます.

$ open .build

under_dot_build

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



mbed CLIを使ってみて

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

sizeof_project


Report

3 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 たまねぎおじさん

Please log in to post comments.