JF1DIR業務日誌(はてなblog版)

アマチュア無線局JF1DIRのアクティビティをつづっています。

Mbed OS 2をMbed OS 5 CLIで動かす

前回の記事で、Mbed OS 5のCLIをインストールし実際にARMを動かすのをお見せしました。Mbed OS 5に対応していないボードをtargetにすると、そのままではコンパイルできないのでイマイチ使い物にならないと思い込んでましたが、実は(まぁ当たり前ですが)そんなことはありませんでした。GitHubのMbed CLIのページを見るとMbed OS 2を動かせるとあります。引用すると、

$ mbed new mbed-classic-program --mbedlib
[mbed] Creating new program "mbed-classic-program" (git)
[mbed] Adding library "mbed" from "https://mbed.org/users/mbed_official/code/mbed/builds" at latest revision in the current branch
[mbed] Downloading mbed library build "f9eeca106725" (might take a minute)
[mbed] Unpacking mbed library build "f9eeca106725" in "D:\Work\examples\mbed-classic-program\mbed"
[mbed] Updating reference "mbed" -> "https://mbed.org/users/mbed_official/code/mbed/builds/f9eeca106725"
[mbed] Couldn't find build tools in your program. Downloading the mbed 2.0 SDK tools...

とこれはWidowsでの動作例ですが、--mbedlibオプションで昔のmbedライブラリまるごとごっそりとgitで引っ張ってくることができるようです。しかし、実際にやってみると、

$ mbed new mbed-classic-program --mbedlib
[mbed] Creating new program "classic-test" (git)
[mbed] Adding library "mbed" from "https://mbed.org/users/mbed_official/code/mbed/builds" at latest revision in the current branch
[mbed] Updating reference "mbed" -> "https://mbed.org/users/mbed_official/code/mbed/builds/tip"
[mbed] Couldn't find build tools in your program. Downloading the mbed 2.0 SDK tools...

となり、mbedライブラリをダウンロードしません。mbed-classic-program/mbedのディレクトリが空っぽです。
ならばマニュアルで強引にライブラリをダウンロードしようと、ブラウザでhttps://os.mbed.com/users/mbed_official/code/mbed/にアクセスし、ダウンロードレポジトリのzipファイルをクリックしてダウンロードしてきました。unzipしてできたファイルを丸ごと、先のmbed-classic-program/mbedにコピーしてしまうと、一応、プロジェクト内のファイル構成がおなじになるはずです。
ターゲットをLPC11U35のQuickStart Board互換(秋月で売ってる互換ボード)として、Lチカのmain.cppを適当にこしらえ、コンパイルしてみます。

$ cat main.cpp
#include "mbed.h"
DigitalOut led(P0_8);
int main()
{
  led = 0;
  while(1) {
    led = !led;
    wait(0.5);
  }
}
$ mbed compile -m lpc11u35_401
Building project mbed-classic-program (LPC11U35_401, GCC_ARM)
Scan: .
Scan: env
Scan: mbed
Compile [100.0%]: main.cpp
Link: mbed-classic-program
Elf2Bin: mbed-classic-program
+--------------------------+-------+-------+------+
| Module                   | .text | .data | .bss |
+--------------------------+-------+-------+------+
| BUILD/lpc11u35_401       |   228 |     4 |   24 |
| [fill]                   |   281 |     0 |    6 |
| [lib]/c_nano.a           |  2391 |   100 |   12 |
| [lib]/gcc.a              |  1044 |     0 |    0 |
| [lib]/mbed.a             |  1368 |     0 |   30 |
| [lib]/misc               |   244 |     8 |   28 |
| mbed/TARGET_LPC11U35_401 |  2928 |     8 |   24 |
| Subtotals                |  8484 |   120 |  124 |
+--------------------------+-------+-------+------+
Total Static RAM memory (data + bss): 244 bytes
Total Flash memory (text + data): 8604 bytes

Image: ./BUILD/lpc11u35_401/GCC_ARM/mbed-classic-program.bin

はい。これでMbed OS 2のボードでも無事にMbed CLIでビルドすることができました。やれやれ。