[lang:ja] mbed CLIをWindowsで使ってみる(環境構築編)

Note

今は、mbed CLI Windows Installerなるものがあって、一発で環境構築できるそうです。
mbed CLI Windows Installerを使ったほうがお手軽そうです。

mbed OS 5が発表されました。既に日本語でもいくつか紹介されていますが、皆が使い慣れたmbed 2.0(Classicと呼ばれています)と、これまでのmbed OSがうまく融合して、mbed OS 5となりました。mbed OS 5を使用したアプリケーションは、従来のmbedのオンラインコンパイラでも開発やビルドを行うことができます。一方、オフライン開発(オンラインコンパイラを使わない開発)では、これまでのmbed OSではyottaというパッケージ管理システムを使ってビルドをするようになっていたのですが、これが廃されmbed CLIが導入されました。

mbed OS 5は、mbed 2.0と比較するとRTOSが標準で搭載、従来のmbed OSと比較するとイベント駆動型のアーキテクチャからRTOSに、という違いがあります。前置きはさておき、mbed OS 5を手元のWindowsでビルドできるような環境を整えてみましょう。

Windows 10 Proの64bit版を使用しています。(Anniversary Updateは、mbedのドライブが見えないとか、色々不具合報告があるので未適用です。)

ちなみに、OS Xにbrewでサクっと環境構築する方法は、巨匠Tedd OKANO氏が執筆しています。Macユーザーの皆さまは、こちらを御覧ください。

1. 要るモノ

  • Python 2.7系(python-2.7.12.amd64.msiを使用。2.7じゃないと幸せになれないと思います。)
  • Git(Git-2.9.3-64-bit.exeを使用。)
  • Mercurial(mercurial-3.9.0-x64.msiを使用。)
  • GNU ARM Embedded Toolchain 4.9系( gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exeを使用。5系には不安が残るそうです。)

インストーラー付きで配布されているパッケージばかりですので、ダブルクリックしてインストールしまくります。気を付けなければならないのは、インストーラーでディレクトリをPATHに追加するかどうか聞かれるものは追加するようにすることです。コマンドプロンプトで、

C:¥>python --version
Python 2.7.12

C:¥>git --version
git version 2.9.3.windows.1

C:¥>hg --version
Mercurial - 分散構成管理ツール(バージョン 3.9)
(詳細は https://mercurial-scm.org を参照)

Copyright (C) 2005-2016 Matt Mackall 他
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。

こんな感じにコマンドを叩いてパスが通っていることを確認します。gccにはパスが通っていなくても構いません。もし、設定したのにコマンドが見つからなければ、いちどログアウトしてみるか、再起動をしてみてください。

次に、いよいよmbed CLIのインストールをします。

C:¥>pip install mbed-cli

これで準備は完了です。

2. 動作を確認する

ここでは、C:¥mbedを作業フォルダにして、試しにblinkyをビルドしてみます。 まずは、作業フォルダを作り、blinkyのサンプルプロジェクトをインポートします。

C:¥>cd ¥

C:¥>mkdir mbed

C:¥>cd mbed

C:¥mbed>mbed import https://developer.mbed.org/teams/mbed-os-examples/code/mbed-os-example-blinky

少々時間がかかりますがインポートを終えると、「mbed」というディレクトリの中に「mbed-os-example-blinky」というディレクトリができています。なお、これをインポートするとディスクを250MBほど使用する様です。作業は、このディレクトリの中で行います。

C:¥mbed>cd mbed-os-example-blinky

次に、mbedをパソコンに接続します。接続した状態で「mbed detect」というコマンドを使うと、パソコンに接続されているmbedを検出し、そのmbedのツールチェーン等への対応状況を表示してくれます。

C:¥mbed¥mbed-os-example-blinky>mbed detect

[mbed] Detected LPC1768, port None, mounted E:
[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

これを参照しながら、開発ターゲットやツールチェーン(コンパイラ)を設定します。

その前に、手元のパソコンにインストールされているコンパイラのパスなどを指定しておきましょう。

2016/08/14  17:06                32 .gitignore
2016/08/14  17:06    <DIR>          .hg
2016/08/14  17:07                 8 .mbed
2016/08/14  17:06    <DIR>          img
2016/08/14  17:06               229 main.cpp
2016/08/14  17:07    <DIR>          mbed-os
2016/08/14  17:06                77 mbed-os.lib
2016/08/14  17:07             1,374 mbed_settings.py
2016/08/14  17:06             2,872 README.md

mbed-os-example-blinkyの中には、このようなファイルがあると思います。このうち、「mbed_settings.py」に設定を記述します。

C:¥mbed¥mbed-os-example-blinky>notepad mbed_settings.py

等として、適当なテキストエディタで設定ファイルを開きましょう。 GCCのパスは、GCC_ARM_PATHに書くみたいです。筆者の環境の場合、次の様に記述をしました。

GCC_ARM_PATH = "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2015q3/bin"

次に、開発ターゲットやツールチェーン(コンパイラ)の設定をします。ここでは、mbed LPC1768のアプリケーションをgccでビルドするように設定しました。

C:¥mbed¥mbed-os-example-blinky>mbed target LPC1768
[mbed] LPC1768 now set as default target in program "mbed-os-example-blinky"

C:¥mbed¥mbed-os-example-blinky>mbed toolchain GCC_ARM
[mbed] GCC_ARM now set as default toolchain in program "mbed-os-example-blinky"

ビルドは「mbed compile」コマンドで行います。コマンドを実行すると、次の様なメッセージが表示されます。

C:¥mbed¥mbed-os-example-blinky>mbed compile
Building project mbed-os-example-blinky (LPC1768, GCC_ARM)
Scan: .
Scan: FEATURE_BLE
Scan: FEATURE_CLIENT
Scan: FEATURE_COMMON_PAL
Scan: FEATURE_UVISOR
Scan: FEATURE_IPV4
Scan: FEATURE_IPV6
Scan: FEATURE_STORAGE
Scan: mbed
Scan: env
Compile: main.cpp

   (((中略)))

Compile: test_env.cpp
Link: mbed-os-example-blinky
Elf2Bin: mbed-os-example-blinky
+---------------------+-------+-------+------+
| Module              | .text | .data | .bss |
+---------------------+-------+-------+------+
| Fill                |   127 |     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           | 48000 |  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): 50320 bytes
Image: .¥.build¥LPC1768¥GCC_ARM¥mbed-os-example-blinky.bin

最後の行に、できあがったバイナリの場所がしるされていますので、これをmbedにコピーします。

C:¥mbed¥mbed-os-example-blinky>copy .¥.build¥LPC1768¥GCC_ARM¥mbed-os-example-blinky.bin E:¥

コピーを終えたら、mbed LPC1768のリセットボタンを押します。すると、さきほどビルドしたアプリケーションが実行され、mbed LPC1768のLED1が点滅をはじめます。

3. GCC以外のコンパイラを使ってみる

普段はOS Xユーザーの筆者がWindowsでmbed OS 5のビルド環境を整える記事を書いているのは、GCC以外のコンパイラを使いたいからです。ビルドしたバイナリが保存される場所は、ツールチェーンごとに異なるので便利でした。

3.1 MDK-ARM編

MDK-ARMのarmccを使うには、特に設定を編集する必要はありませんでした。 ビルドする前に、

C:¥mbed¥mbed-os-example-blinky>mbed toolchain ARM

と、ツールチェーンとしてARMを指定するだけです。

3.2 EWARM編

IARのEWARMを使うには、mbed_settings.pyを編集して次のような行を記述します。

IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.5/arm"

筆者は、Embedded Workbench 7.5.1を使っているので、上記の様なパスになりました。ツールチェーンは、

C:¥mbed¥mbed-os-example-blinky>mbed toolchain IAR

と設定します。


Report

3 comments on [lang:ja] mbed CLIをWindowsで使ってみる(環境構築編):

10 May 2017

はじめまして、Takahiroと申します。 主にSTM32向けの開発環境を構築するために情報収集をしています。 記事を読ませていただきましたが、一つ質問があります。 GNU ARM Embedded Toolchainに関して、5以上は不安が残るので4.9を推奨されていますが、具体的になにか不具合があるのでしょうか? 他のページでも4.9を推奨する記事が多かったのですが、根拠となる一次情報が見つからなかったため判断しかねております。 ちなみに自分はSTM32のCortex-M4系を主なビルド対象としています。 浅学ながらご指導いただけると幸いです。

21 May 2017

Takahiro K wrote:

根拠となる一次情報が

これだと思います。

https://github.com/ARMmbed/mbed-cli

version 5.0 or any more recent version might be incompatible with the tools.

お世話になります。上記記事を見ながらCLIインストールして動作確認しているのですが、 mbed import からエラーが発生して困ってます。screen shot付けます。mbed SDK2.0がないと言われてますが MDK ARM は、MDKCM524.EXEというファイルでインストールしてあるはずですが、どうすればいいのでしょうか?/media/uploads/ishimatsu/2017-10-19_-7-.png

Please log in to post comments.