RaspberryPiでエッジデバイスを作って、実際にデプロイしてみました。今のところ順調にデータを送ってくれています。しかしながら、やっぱりlinuxはちょっと重たい感じもするし、値段はともかくオーバースペックという感もあります。
以前予定していた通り、mbedでの開発を考えてみました。これからならmbedOSベースだろうということで、とりあえずはmbedOSに慣れてみよう、ということで。。。。
一昨年の11月にリリースされると聞いていたので楽しみにしていましたが、現在TechnologyPreviewのようです。
mbedOSを導入
mbedのwebにあるInstallationを見ながら進めます。ホストはMacOSです。
ここでは、直接インストールするのではなく、Dockerを使ってみます。
私の理解では、Dockerは実行環境を仮想化する仕組みで、実際の計算機の実行環境と全く別に設定された「コンテナ」とよばれる環境中で作成したアプリケーションを実行できるものです。こうすることで、特定のアプリケーションを動かすための実行環境を使っている開発環境と別に用意できるため、開発環境上でのソフトウエアのコンフリクトを防げるとともに、「コンテナ」をそのまま実際の実行環境に移行できるので「開発時の環境と実行時の環境を全く同じ」にできます。
1. dockerを導入
dockerのwebからMac版をダウンロードしてインストール。
インストール途中で「起動してみてもいいよ」的な状態になるので、とりあえず無視して終了。
2. docker 起動
Launchpadから「Docker Quickstart Terminal」を起動すると、クジラのアスキーアートとともに起動。
何がなんだか解らないので、tutorialにある
を実行してみると、
|
|
ということで、新しい「コンテナ」にhello-worldのイメージを展開してその中にある実行ファイルを実行して、それがDocker clientにこのメッセージを送信、それがターミナルに表示されている、という形になっているとのこと。
インストールはうまく行っているということなので、次に。
3. yottaのインストール
mbedOSのアプリケーションはすべてyottaによって作成される必要がある、ということですので、こちらを参考にyottaをインストールします。
$ docker pull mbed/yotta
これでdockerのmbed/yottaコンテナを持ってきます。yottaのコマンドをこのコンテナに対して発行することで独立した環境でyottaを実行できる、という感じかとおもいます。
そのためのスクリプトとしてyotta.shを使うようです。
これをwgetして、
$ ln -s {pathToTheDownloaded}/yotta.sh /usr/local/bin/yotta
とすることで、$ yotta ~ ~ ~
の形でyottaをコンテナ内で実行できるようになります。
試してみる
blinkyを試してみます。といってもmbedOSでサポートされているボードが手元に無いので、途中までですが。。。。
先のリンクにあった通りに実行してみます。
|
|
とすることで、ディレクトリが作業用としてイニシャライズされます。
モジュール(作ろうとしているアプリケーション)の名前やバージョン、ライブラリなのか実行形式なのか、短い説明、ライセンスを聞かれますので、適宜答えると終了です。
次に、ターゲット環境を設定。
現状、おなじみのmbedデバイスはあまりサポートされていないようです。
次のコマンドでターゲットの設定ファイルがリストアップされます。
$ yotta search target
といっても、あまり見通しのよいリストではない感じですね。
ここでは、サンプル通り
$ yotta target frdm-k64f-gcc
としてみます。mbedアカウントのログインが必要のようです。コンソールに出てくるURLをコピーしてブラウザでログインすると処理が進みます。
しばらくして、ダウンロードとデプロイが完了したあとに、チェックしてみます。
|
|
なにやら設定されたようです。
次にdependenciesをインストールします。ライブラリ、ということでしょうか。
|
|
bliknkyのソースコードを用意して、./source/app.cpp
として保存します。
|
|
ビルドしてみます。結構時間がかかります。2分とか。(最初だけかも)
|
|
てな感じで終了。
./build/frdm-k64f-gcc/source/
にblinky.bin
というファイルが出来ていて、それがターゲットの実行ファイル(の転送できる形)のようです。
手元にボードが無いのでここまで。
本筋ではないですが、dockerはかなり便利ですね。インストール作業無し(コンテナを引っ張ってくるだけ)でこれだけのツールがReadyToUseになります。コンテナを作ってくれた人には感謝です。
大抵は、インストールがうまく行かなくて2、3度はコケてしまうこともあり、場合によってはついにあきらめてしまうこともあるので。。。。