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をインストールまたはアップデートしておいてください.
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
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 実行バイナリのコピー (ターゲットへの書き込み)
コンパイルが完了すると,実験用ディレクトリの中のBUILD
→LPC1768
→GCC_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 |
この図のフォルダ名は「.build」になっていますが,現バージョンのmbed-cliでは上記の通り「BUILD」フォルダができます
このファイルをマウスでつまんでmbedに入れれば,GUI上で簡単にコピーできます.
mbed CLIを使ってみて
プログラムをインポートした後のmbed-osディレクトリ(mbed2.0のプログラムの場合はmbedディレクトリ)はどちらも250MBを超える大きな容量となるようです.複数のプログラムを容量の少ないローカルマシンで管理する場合には注意が必要となりそうです.
更新情報
2020年6月2日更新
坪井さんから新しい方法についてのアドバイスを頂きそれに従ってひと通りの動作を試してみたら,いろいろ変わってた.なので必要な部分を更新.
- 指摘いただいたインストールコマンド
- サンプルコードのインポート先URL
- コマンド実行時の各画面表示
- コンパイル結果が入るフォルダ名
しかしサンプルコードをコンパイルして走らせてみただけなのに,何故かLED1の点滅周期が異常に長いぞ ( ꒪﹃ ꒪) ?
6 comments on mbed CLI (コマンドライン・インタフェース)を Mac OS X で使ってみる:
Please log in to post comments.
1.1 mbedコードのインポート のところ、
$ cd /mbed_os5
になってますが、チルダ消えてますか?
$ cd ~/mbed_os5