日別アーカイブ: 2014/07/19

mbed を動かしてみる

高性能SoCばかり追っていて最近のマイコン事情をほとんど知らなかったのですが,たまたま流れてきた “mbed” なるものを試してみました.

mbed とは?

mbed は「プロトタイプ開発向けのワンボードマイコンと開発環境」で最近流行のフィジカルコンピューティングを可能とするものなので,元々 NXP 独自のリリースだったものが OpenHard/Software になって各社でリリースされるようになりました.

で、いわゆるマイコンボードと何が違うのかと言うと「オンラインビルドができる」というのです.ところでオンラインビルドってなんだろう…

手元に入手したのは「STmicro Nucleo F401RE」と「NXP LPCXpresso LPC11U68」です.それぞれ展示会でアンケートによるサンプル配布されたものが放置されていたので貸していただきました.どちらもブリスターパックに入ってるのはなかなかインパクトがあります.

IMG_6343

双方とも Arduino Shield 互換のコネクタを持っているため,Arduino 互換周辺ボードを活用することが出来ます.これらが簡単に活用できるといろいろ面白そうです.

PCに接続

mbed 環境を使うにはどちらのボードも変わらないので F401RE を例に導入してみます.

PCへの接続は USB 経由で,F401RE は mini-B でボードに接続します.Windows にてドライバを要求されるので,STMのサポートページからアーカイブをダウンロードして導入し,成功すれば次のドライバがインストールされます.

  • ディスクドライブ > MBED microcontroller USB Device
  • ポート(COMとLPT) > STMicroelectronics STLink Virtual COM Port (COMxx)
  • Universal Serial Bus devices > STMicroelectronics STLink dongle

USB 一つでデバッガ・マスストレージ・シリアルの3つが接続されたことになります.ICE や JTAG を接続してる環境を見てるとこんなのでいいのかと思うほどシンプルです.

mbedサイトに登録、そして開発

上記に成功するとドライブが追加されていて,中にある mbed.htm をブラウザで開くと mbed.org のサイトに行きます.ここでサインアップしてユーザを作成することで,mbed.org 上にある開発環境が web ブラウザ上で使えるようになります.

サンプルを使った大まかな流れとしては,まずサンプルプログラムを開発環境(mbed compiler) に取り込みます.

  1. プロフィールのページ右下の「ST Nucleo F401RE」をclick
  2. 製品ページの右下の「example programs」の導入したいプログラムをclick
  3. 「Import the program」をclick

新たにプログラムを一から開発する場合は,Workspace を作る必要があります.

  1. 右上の「Compiler」をclick (mbed compiler のページへ)
  2. 「New」で新たにWorkspaceを作成,templete を使うか Empty Program で空を作成
    (空の場合は mbed パッケージを import する必要あり)

Workspace の準備ができたらソースを登録,コンパイルして実機に投入します.

  1. ソースを作成・編集して保存 (起動関数は引数なしの main() )
  2. Compile
  3. 出来たバイナリファイル(firmwareイメージ)を追加されたドライブにコピー
  4. USB が一瞬切断されて,firmwareイメージが自動的にflash に書かれて実行

ローカルPCで実施しているのはブラウザの操作とイメージのコピーだけです.チュートリアルを紹介するサイトがいろいろありますので,検索して流れを追ってみるとよいでしょう.まずはLED点滅,次にシリアル表示がお約束ですが,どちらも mbed.org にはサンプルが登録されているのでそのまま Workspace に import して試すことができます.

mbed-f401re

ちなみにコードは以下のような感じで、LED を1秒おきに点滅する例です.

#include "mbed.h"
DigitalOut myled(LED2);
int main()
{
    while(1) {
        myled = 1;
        wait(1.0);
        myled = 0;
        wait(1.0);
    }
}

sample を使えばここまで10分かそこらで “Hello, World” に相当する LED 点滅に到達できると言うのはかなり衝撃でした.昔ならまず最初にIDEやtoolchainのインストール,そしてボード接続と転送でつまずきますから…

IMG_6344

 開発環境だけじゃない?

mbed.org に登録すると開発環境が得られるだけでなく, Repogitory を作成して管理・公開したり,コミュニティとのQ&Aに参加したり,必要な周辺機器を衝動買い(!)することができます.フィジカルコンピューティングという キーワードによってどんどん組込みマイコン開発環境の障壁が取り除かれて参加人口が増えつつあり,この取り組みは非常にすばらしいことだと思います.

とはいえ,これだけ上位操作で簡単に制御できるとなるとこの下回り作ってる人たちは結構苦労してるんだろうなぁ…