mbed OS ベータ版でLチカしてみる

注: この記事はベータ版のソフトウェアを利用したものになるので、今後変わる可能性があります。

mbed OSのβ版がいつのまにやら公開されていたので、試してみることにしました。

https://docs.mbed.com/docs/getting-started-mbed-os/en/latest/FirstProjectmbedOS/ の手順通りにすすめてLチカをやってみます。

1. yottaのインストール

mbed OSを利用するためには事前にyottaというパッケージ管理システムの導入をする必要があります。

インストールは http://yottadocs.mbed.com/#installing に記載されている手順で行います。

yotta自身はPythonで書かれているそうで、pipを使って入れることができます。

Mac OSではbrewコマンドとpipコマンドでインストールすることができます。

$ brew tap ARMmbed/homebrew-formulae
$ brew install python cmake ninja arm-none-eabi-gcc
$ pip install yotta

yottaを使うことで、パッケージの導入やビルドがコマンド一発でできるようになるのと、 デバイスの構成を module.json 書いておけるので、他の人が利用する際に再現しやすくなりますね。

2. mbed OSアプリケーションを作る

https://docs.mbed.com/docs/getting-started-mbed-os/en/latest/GettingStartedmbedOS/に書かれている手順通りに進めます。

適当な作業ディレクトリを作ります。

$ mkdir blinky
$ cd blinky

yottaプロジェクトの雛形を作ります。

$ yotta init
Enter the module name: <blinky>
Enter the initial version: <0.0.0>
Is this an executable (instead of a re-usable library module)? <no>
Short description: LED chikachika
Keywords:  <>
Author: mia-0032
Repository url (where people can submit bugfixes): https://github.com/mia-0032/mbed-os-blinky
"https://github.com/mia-0032/mbed-os-blinky" isn't a valid "repoObject" value.
Repository url (where people can submit bugfixes): git@github.com:mia-0032/mbed-os-blinky.git
Homepage: https://github.com/mia-0032/mbed-os-blinky
What is the license for this project (Apache-2.0, ISC, MIT etc.)?  <Apache-2.0>

作成するとこんな感じになります。

$ tree
.
├── blinky
├── module.json
├── source
└── test

source ディレクトリがソースコード、test ディレクトリがテストコードの置き場になります。

module.jsonの中身は以下のような感じになります。

{
  "name": "blinky",
  "version": "0.0.0",
  "description": "LED chikachika",
  "keywords": [],
  "author": "mia-0032",
  "repository": {
    "url": "git@github.com:mia-0032/mbed-os-blinky.git",
    "type": "git"
  },
  "homepage": "https://github.com/mia-0032/mbed-os-blinky",
  "license": "Apache-2.0",
  "dependencies": {}
}

dependencies に必要なパッケージを記載しておけば、ビルド時に依存関係を解決してくれるようです。

なお、このままでは正常にビルドできなかったため、最後の行を以下のように変更しました。

-  "dependencies": {}
+  "dependencies": {},
+  "bin": "./source"

module.jsonのドキュメントを読むと、モジュールとして公開せず、実行ファイルを生成する場合は指定する必要があるようです。

次に、書き込むボードを選択します。

$ yotta search --limit 1000 target

とすると対応するボードがずらずら出てくるので、今回はだいぶ前のmbed祭りでいただいた Freescale FRDM-K64Fを使います。

$ yotta target frdm-k64f-gcc
...(省略)...
You need to log in to do this.
Press enter to continue.
Your browser will open to complete login.
# エンターを押すとブラウザが開いてmbed.orgへのログインが求められるのでログインします。

すると、yotta_targetsディレクトリに指定したボードの設定が展開されています。

サンプルプログラムを動かすためには、mbed-driversというパッケージが必要とのことなのでインストールします。

$ yotta install mbed-drivers

module.jsonを見てみるとdependenciesmbed-driversが追加されています。

  "dependencies": {
    "mbed-drivers": "~0.10.3"
  }

また、yotta_modulesディレクトリにインストールしたパッケージが追加されています。

sourceディレクトリにアプリケーションコードを書いていきます。

今回はサンプルコードを適当にコピペして作った以下のコードを source/app.cpp として保存します。

#include "mbed/mbed.h"

static void blinky1(void) {
    static DigitalOut led1(LED1);
    led1 = !led1;
    printf("LED1 = %d \r\n",led1.read());
}

static void blinky2(void) {
    static DigitalOut led2(LED2);
    led2 = !led2;
    printf("LED2 = %d \r\n",led2.read());
}

static void blinky3(void) {
    static DigitalOut led3(LED3);
    led3 = !led3;
    printf("LED3 = %d \r\n",led3.read());
}

void app_start(int, char**) {
    minar::Scheduler::postCallback(blinky1).period(minar::milliseconds(300));
    minar::Scheduler::postCallback(blinky2).period(minar::milliseconds(500));
    minar::Scheduler::postCallback(blinky3).period(minar::milliseconds(1500));
}

ここまでで、アプリケーションの作成は終わりです。

3. ビルドと実行

ビルドするには以下のコマンドを実行します。

$ yotta build

4. mbedボードのファームウェアのアップデート

FRDM-K64Fのファームウェアのバージョンは、PCにつないで認識されたドライブの中のMBED.HTMファイルに書かれています。

ブラウザではなくテキストエディタで開くとバージョンが書かれている部分があります。

<!-- mbed Microcontroller Website and Authentication Shortcut -->
<!-- Version: 0203 Build: May 30 2014 19:00:51 Git Commit SHA: ebe7dab202606d9dd80804b70ce95580d3077e23 Git local mods:Yes-->

アップデートする前はVersion: 0201だったので、ファームウェアのアップデートを行いました。

手順は

Firmware FRDM K64F - Handbook | Mbed

に書かれている通りです。

5. mbedへ書き込み

以下のコマンドでビルドしたファイルをmbedへコピーして、mbedのリセットボタンを押せば完了です。

$ mv build/frdm-k64f-gcc/source/blinky.bin /Volumes/MBED/

上手くいくと下のような感じでLEDがチカチカします。

ソースコードは以下に公開しています。

コードをgit cloneしてyotta buildするだけでbinファイルを作ることもできるので、ぜひお試しください。

関連エントリ

©2023 みや All rights reserved.