2016/04/18

[nrf]手抜きなnRF51822のはじめ方(非mbed)

4月なので、「春だからnRF51822でBLEでもやってみるか」と思ってる方がいるかもしれない(いないかもしれない)。

なので、ちょろっとはじめてみたい人向けに書いてみよう。
mbedが使えるともうちょっと簡単かもしれないのだけど、私は使わないので、非mbed環境限定だ。
うん、その時点でニーズがかなり少なそうだ。

あと、はじめ方しか書かないので、どうやってやるかなどは調べてくだされ。
キーワードがわかれば、検索すればもっとよい記事が出てくるはずだ。


準備するもの

  • nRF51822が載った技適取得済みの基板
  • nRF51822のSDK
  • Keil(MDK-ARM)
  • nRFgo Studio
  • SEGGER JLink Lite
  • AndroidかiOSのスマートフォンやタブレット(BLEが使えるもの)
  • 電源とか、ハンダ付けするものとか
  • Windowsのパソコン

パソコンはWindowsでもMacでもLinuxでもよさそうだけど、KeilがWindows用なので、今回はWindows限定にする。

mbedだと、JLinkとかなくても使えるのだろうけど、よく知らんのだ。


nRF51822が載った技適取得済みの基板

がんばって探そう。


nRF51822のSDK

ここら辺からダウンロードしよう。
zipファイルなので、適当に場所を作って置くがよい。

注意としては、ネットにあるサンプルがSDKのバージョンによってAPIがコンパイルできないレベルで違っていたりするから、注意しよう。
これを書いている時点の最新は、nRF5 SDK v11.0.0だ。

今回は、SDKに入っているサンプルをちょっと動かすだけしかやらない。


Keil(MDK-ARM)

Keilもいくつか種類があるが、nRF51822はCortex-M0コアなので、MDK-ARMの評価版(MDK-ARM Lite)でよいだろう。
評価版だと、ROMが32KBまでしかリンクできないのだが、ちょろっと動かす分にはそのくらいで十分だ。

https://www.keil.com/demo/eval/arm.htm
登録がいるので、ちょっとめんどうかもしれない。
住所を書いても、送ってきたりはしないので、そんなに神経質にならなくてもよいだろう。


nRFgo Studio

なんやかや使うツール。
JTAG(SWD)のアプリなどもインストールしてくれる。

http://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822#Downloads
ここの、上から順番に行くと、ブロックの

  • PRODUCT SPECIFICATION
  • REFERENCE MANUAL
  • SOFTDEVICES
  • SOFTWARE

となって、そのSOFTWAREの下の方にある。
64bitと32bitがあるので、お好きな方を。

Keilに何かするのもセットでやってくれるので、Keilのインストール後の方がよいだろう。


つなぐ

パソコンと、SEGGER J-Link LITEと、nRF51822基板をつなごう。


サンプルをビルドする

SDKの中にサンプルが入っている。
これは、v11.0.0の構成。

image

なんでもよいのだろうが、Peripheralを動かすのがわかりやすいだろう。
Nordicのドキュメントでは、だいたいble_app_hrsが例になっているので、今回もそれにする。

なお、SDKのv10.0.0とv11.0.0ではこの辺りの構成が変わっている。
v10.0.0まではPeripheralを動かすときは「S110」だったのだが、v11.0.0からは「S130」になっている。
今までのS110をS130に読み替えればよいかというと、あまりそういう訳でもないのが、やっかいなところだ。

まあ、そういうのは自分で調べよう。
簡単に違いが知りたいなら、v10.0.0のSDKもダウンロードして、同じble_app_hrsのサンプルを比較するとよいだろう(main.cだけ見ればよいかな)。

 

話を戻そう。

image

この「pca10028とかはなんじゃ?」と思いそうだが、これはNordicの開発ボードの名前だ。
10028と10031にはnRF51422_xxACが、10036と10040にはnRF52832_xxAAが載っている。

って、nRF51822がないやん!となる。
そう、ないのだ。
だから、nRF51422のプロジェクトを開いて、nRF51822に変更する。

image

Keilに拡張子が割り当てられているから、ダブルクリックすると開くだろう。

image

こんなのが出てきたが、はい、にしてもインストールしてくれなかった。
SDKのzipファイルを解凍した一番上にそれっぽいmsiファイルがあるので、それをインストールする。。。のはKeil4でバージョンが違うから止めて、Keilを終了させ、サイトから8.5.0を取ってくる
そのまま実行すると、勝手にKeilのインストーラがうまいことやってくれる。

今の最新Packは8.6.0なのだが、プロジェクトの設定はPackのバージョンも指定してあるので、同じバージョンの方が楽なのだ。

インストールして、またプロジェクトを開くと、今度は大丈夫だった。
まずは、ビルドできることを確認しよう。

image

マウスカーソルを重ねるとヘルプが出るから、適当に探してくれ。
正常なら、ErrorもWarningも出ないはずだ。

次に、nRF51822向けにしていく。
まず、ツリーの2階層目で右クリックし「Options for …」を選択。

image

Outputタブで名前を変えておくとよいかな。
別に変えなくてもいいのだけど、気分的な問題だ。

image

 

Targetタブの設定を変える(のは、本当は後だが、先に確認する)。
だいたい、変えるのは「IROM1」と「IRAM1」だ。

IROM1は、少し前に話が出たS110だのS130だのに関係する。
これらは「SoftDevice」と呼ばれる、まあ、大ざっぱに言えばOSっぽいものだ。
nRF5 SDK v11.0.0が対応しているSoftDeviceでPeripheral機能が使えるものは、S130のv2.0.0だ。
という情報は、Nordicのサイトから得ることになる。

image

SDKのバージョンが変わってもSoftDeviceのバージョンが同じこともあるし、逆もある。

使うSoftDeviceがわかったら、今度はそのSoftDeviceの情報を探す。
で、私はいつもリリースノートを読むのだが、どこから取得していいかわからんかった・・・ので、SDKに入っているリリースノートを読む。
実を言うと、だいたいSDKと一緒にSoftDeviceも梱包されているので、それを見ればいいのだ。
ただ、ときどきSoftDeviceだけアップされるときもあるので、調べ方は知っておいた方がよいだろう。

image

見たいのは、リリースノートの、これ。

image

FLASHのサイズと、RAMの最小サイズ。
これが、さっきのTargetタブと関係している。

たとえば、ble_app_hrsでは、こうなっている。

image

IROM1が0x1B000から始まっているのは、SoftDeviceが0x1B000まで使っているからだ。
サイズが0x25000なのは、0x1B000+0x25000=0x40000=256KBということだ。

IRAM1は、なんだろう?
nRF51822はRAMが0x20002000から始まるのだけど、0x80だけずらしてあるな。
・・・わからない! 宿題にさせてくだされ。

S130としては最低0x13C8バイト使うのだけど、0x5F80+0x80-0x2000=0x4000=16KBということで、めいっぱい確保している。
まあ、特に分ける必要がないということだろう。

 

こんな感じでTargetタブの内容を決めるのだけど、まずはここは見るだけにしておいて、先にDeviceタブでデバイスを変更する。
何でかというと、Deviceタブで別のデバイスを選択すると、Targetの中身が消されるからだ。
私は先にTargetのスクリーンショットを撮ってからDeviceを変更するようにしている。

 

あとは、C/C++タブやAsmタブで「BOARD_PCA10028」となっているところを変更する。
これを何に使うかというと、SDKのexamplesの中にある「bsp」が見ている。
この中で、ボタンやLEDのGPIO定義をしているのだ。
だから、自分のボード用の定義を新しく作って、bspに反映して、このプロジェクトの提議も変更する、というのが、まあ正当な流れになるんじゃなかろうか。

bspの変更は、自分で見てみよう。
プルアップとかプルダウンが違ったりすると、けっこう変更しないとだめだったりする。

 

最後に、Debugタブ。
ここで、右側のラジオボタンがチェックされているだろう。
デフォルトはULINK2/MEなどになっているから、これをJ-Link/J-Trace Cortexなどにする。
その横のSettingsボタンを押すと、J-Linkと通信しに行くから、接続設定ができているかわかるだろう。


このくらいまで説明したら、もうあとはできるんじゃなかろうか?
設定変更してビルドが通れば、あとはLOADボタンを押してnRF51822に焼けばよい。
デバッグしたければ、dボタンを押す。

image

 

最後はばたばたして、実際に焼くところまでやってないので、気が向いたら次回やろう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。