« 2016年2月 | トップページ | 2016年8月 »

2016年4月の記事

mbed TY51822r3でmbed OSを使う

スッッチサイエンスさんからBLEつきのmbedボード、mbed TY51822r3を買いました。mbed TY51822r3はまだオフィシャルにmbed OSのサポート対象になっていないのですが、mbed OS対応ボードのNordic nRF51-DKと互換性があります(差分は動作クロックが32MHzとなっており、Nordic nRF51-DK の16MHzと異なること)。差分がクロック周波数だけならきっとmbed OSが動いてBLEで遊べるだろうと思い、ポッチてみた次第です。

ということで、mbed TY51822r3でmbed OSを動かしてみました。最初はNordic nRF51-DK をターゲットボードに指定して、ダウンロードしたSDKのSystemInit関数を書き換えて32MHzクロックを有効にすれば良いのかと思っていたのですが、スイッチサイエンスさんの @ytsuboi さんがご自身のGitHubでmbed TY51822r3用のターゲット定義情報や32MHzクロックに対応したSDKをすでに公開されていることを教えていただき、このリソースを活用させていただきました。

mbed OSで開発を行う際には、最初にターゲットにするボードを指定して定義ファイルをダウンロードする必要があります。ターゲットとするボードがmbed OSのオフィシャルサイトに登録されている場合は、そのボード名を指定すればよいのですが(例えば、Nordic nRF51-DK の場合はnrf51dk-gcc)、プライベートなGitHubに登録されている定義情報をurlやgitリポジトリーを指定してダウンロードする方法がわかりませんでした(色々と試したのですがうまくいかず)。そのため、mbed TY51822r3用の定義ファイルを一旦ローカルにダウンロードして、ローカルレボジトリとしてターゲット指定する方法でビルドしています。このあたりについては、もっとうまいやり方があればコメント下さい。

以下、mbed TY51822r3でmbed OS対応のアプリをビルドする手順を示します。

ビルドはOS Xで行っています。
mbed OSのフィルを格納するディレクトリを~/mbedOSとします。

$ cd ~/mbedOS

# mbed TY51822r3用の定義ファイルをダウンロード
$ git clone https://github.com/ytsuboi/target-ty51822r3-gcc

# mbed TY51822r3用のSDKをダウンロード
$ git clone https://github.com/ytsuboi/nrf51-sdk

$ mkdir ty51822-blink                  # 作成するプロジェクトのフォルダーを作成
$ cd ty51822-blink 
$ yotta init                           # プロジェクトの初期化

$ cd ~/mbedOS/target-ty51822r3-gcc/    # DLしたターゲットファイルのフォルダーに移動
$ yotta link-target                    # ローカルリンクを設定
$ cd ~/mbedOS/ty51822-blink/           # プロジェクトフォルダーに戻る
$ yotta link-target ty51822r3-gcc    # ローカルリンクのターゲット名として、ty51822r3-gccを登録
$ yotta target ty51822r3-gcc           # ローカルリンクty51822r3-gccをターゲトに指定

$ yotta target                         # 関連ファイルDL後にターゲットが設定されていることを確認
ty51822r3-gcc 1.0.0 -> /Users/kenshi/mbedOS/target-ty51822r3-gcc
nordic-nrf51822-gcc 1.0.0
mbed-gcc 1.2.2

$ yotta install mbed-drivers           # ドライバーのダウンロード
$ cd ~/mbedOS/nrf51-sdk/script         # ローカルにDLしたSDKファイルのフォルダーに移動

# スクリプトを実行してSDKをプロジェクトフォルダーにコピー
# command line: pick_nrf51_files.py  <SDKフォルダーのパス> <プロジェクトフォルダーのパス>
$ python pick_nrf51_files.py ~/mbedOS/nrf51-sdk/ ~/mbedOS/ty51822-blink/

$ cd ~mbedOS/ty51822-blink/            # プロジェクフォルダーに移動
<add source/app.cpp>                   # ソースファイルを書く 
$ yotta build                          # ビルド

# 出来上がったhexファイルをmbedにコピーして実行
$ cp build/ty51822r3-gcc/source/ty51822-blink.hex /Volumes/MBED/

サンプルーコード(普通のLチカです…)

#include "mbed-drivers/mbed.h"

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

void app_start(int, char**) {
    minar::Scheduler::postCallback(blinky1).period(minar::milliseconds(100));
}

無事mbed OSでLチカが動きました。mbed TY51822r3はGPIOのドライブ能力が0.5mAと小さく、LEDを直接ドライブすることができないため、FETを使ってスイッチングする必要があります。

« 2016年2月 | トップページ | 2016年8月 »

2017年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
無料ブログはココログ