既に記事がポストされていますが、mbed OS(執筆時点では、mbed OS 15.11 Technology Previewとなっています)を使ってLチカを行ってみました。ターゲットのmbedボードはFRDM-K64Fを使っています。Lチカができるまでの手順を以下に示します。
yottaのインストール
先ずは、mbed OSのビルドツールyottaをインストールします。私はOS Xを使っていますが、このページの手順に従ってインストール。
執筆時点のyottaバージョンは、0.9.4でした。
ビルド手順
①プロジェクト用のサブディレクトリを作成しyotta initを実行
$ mkdir led $ cd led $ yotta init Enter the module name: Enter the initial version: <0.0.0> Is this an executable (instead of a re-usable library module)? yes Short description: LED blink using D12 pin Author: todotani What is the license for this project (Apache-2.0, ISC, MIT etc.)?
Is this an executableと聞かれるので、yesを入力します。参考にしたサイトの情報では、生成されたmodule.jsonファイルのマニュアル修正が必要とありましたが、執筆時点の環境では不要になっていました。yotta initの挙動も微妙に違っているようで、最終的なリリース版ではまた変更があるかもしれません。
②ターゲットの設定と、ドライバーのインストール
$ yotta target frdm-k64f-gcc $ yotta install mbed-drivers
③Lチカコード
sourceディレクトリにソースファイルを格納します。ファイル名はなんでもよいのですが、今回の例では、led.cppとしました。mbed OSのチュートリアルには、以下に示すような、mbed OSのスケジューラーminarを使ってLチカルーチンを周期起動するコードが載っています。
#include "mbed-drivers/mbed.h" static void blinky(void) { static DigitalOut led(LED1); led = !led; printf("LED = %d \r\n",led.read()); } void app_start(int, char**) { minar::Scheduler::postCallback(blinky).period(minar::milliseconds(500)); }
このコードがmbed OS流の書き方なのだと思いますが、以下のような、従来のmbed風の書き方でも動作しました。mbed OSではプログラムのエントリポイントはmain()でなく、app_start()になるようです。
#include "mbed-drivers/mbed.h" DigitalOut myLed(D12); void app_start(int, char**) { while(1) { myLed = 1; wait(0.5); myLed = 0; wait(0.5); } }
DigitalOutクラスを使った出力ピンの指定やピン番号(D12など)の指定は、従来のmbedと共通です。まだ使ったことはないですが、ヘッダーファイルの定義を見ると、I2Cクラスなども従来のmbedと同様の使い方ができそうです。基本的な入出力は従来のmbedと同様に出来そうです。
④ビルドとターゲットボードへの書き込み
$ yotta build $ cp ./build/frdm-k64f-gcc/source/led.bin /Volumes/MBED/
ビルドが完了すると、build/<target名>/soruce/ディレクトリ配下にbinファイルが生成されるので、mbedにコピーします。リセットボタンを押すとプログラムが動き出します。
参考情報