まだnRF51822自体がよくわかってないので、サンプルを焼くだけだ。
まず、Nordicのユーザ登録をしよう。
http://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822
Registerをクリックした先で、いくつか入力して登録。
メールが来たりして登録が完了したら、ログイン。
左側に「MY KEYS」があるので、クリック。
ここで、BVMCN5102-BKを購入したときに入っていた紙に書いてあるプロダクトキーを打ち込んでADD。
そうすることで、ダウンロード保護されていた開発環境などがダウンロードできるようになる。
今の私は、これがダウンロードできるようになった(スペックシートなどは保護されてない)。
とりあえず、全部ダウンロードしてから考えることにした。
nANはアプリケーションノートのPDF。RMはリファレンスマニュアル。PSはスペックシート。
nRF-MCPはMaster Control Panelなんだけど、いるかどうかわからん。
この中でインストールがいると思うのは、これらか。
- nRFgo Studio
- S110-SD-v?(今は6.0.0が最新なので、v6にした)
- nRF518-SDK
SDKは統合開発環境とかじゃなくて、ヘッダやサンプルソースのような、純粋の開発環境。
nRFgo Studioは、焼かれているSoftDeviceの確認や、焼き換えに使う。
次は、デバッガの準備。
SEGGER社のJ-Link LITE CortexMが付属しているので、そのドライバをインストールする。
上記サイトに行くと、左側にDownloadsがあるので、クリック。
Productでコンボボックスから「J-Link LITE CortexM」を選択。
ドライバのダウンロードっぽいリンクが出てくるので、クリック。
そうすると、J-Link downloadsに飛ぶ。画像はLITEのじゃないけど、問題なさそう(J-Linkって黄色かと思ってた)。
今回はWindows環境なので、Windows用をダウンロード。
そうすると、シリアル番号の入力を求められる。
シリアル番号は、J-Linkのチップの上に書いてある。下画像の赤いところだ。
打ち込むとダウンロードできるので、ダウンロードして展開してインストール。
なお、このシリアル番号は接続の時にも使う。
BVMCN5102とJ-Link LITEはこんな接続になる。
ピンの穴が埋まっているのだが、逆にすると差し込めてしまうので注意だ。
ケーブルに油性マジックで3本の線が引かれている方がJ-Link側だと思う。
が、もう少し待とう。
まだクロスコンパイラが入っていないのだ。
今回は、gcc + eclipseを使う。
通常のARM開発と一緒のようなので、使い慣れた環境があるならそれでもよさそうだ。
私はあまり考えたくなかったので、NordicのアプリケーションノートnAN29に従うことにした。
「nRF51 Development with GCC and Eclipse」がそのタイトルだ。
では、順番にやっていこう。
1. Required tools
- nRF51 SDKのインストール
- GNU Tools for ARM Embedded Processorsのインストール
- v4.7 2013q1と指定されてるけど、めんどうだったので右側から安定版っぽいのを探した
- バージョンが上がって、warningがデフォルトでエラー扱いになってうっとうしいかも
- CodeSourceryのとは、また別なの?
- Makefile.windowsの編集
- Core Utilityのインストール
- Makeのインストール
- cygwin入ってるけど、もういわれるがままにインストールした
- J-Link
- これは、さっき入れたやつ
- eclipse
- JunoのC/C++とあるけど、Android SDKがあったのでそれを使った。
- 分けた方が良かったか・・・。
- よし、せっかくなのでLunaでやり直そう!
1.1. Setting up Eclipse
- CDTのMain FeatureとGDB Hardware Debuggingにチェックを入れてインストール
- http://embsysregview.sourceforge.net/updateをインストール
- これでレジスタ値が見やすくなる
- eclipseのpluginsの中にembsysregviewがあるので、その中にnRF51 SDKに入っているnRF51.xmlをコピー
- うちの環境だと、こんな感じ
C:\Winappli\eclipse-cdt\plugins\org.eclipse.cdt.embsysregview.data_0.2.4.r168\data\cortex-m0\Nordic
1.2. Import existing Eclipse project to Workspace
- ここら辺をImportする。
C:\Nordic Semiconductor\nRF51 SDK_v5.2.0.39364\Nordic\nrf51822\Board\nrf6310\s110\ble_app_hrs
2. Setting up a project for debugging in Eclipse
- 書いてある通りにやる。
- SEGGER J-Link GDB Serverを立ち上げる
- BVMCN51に電源供給してなかったら、少しすると上ダイアログが消えるので、USBで電源供給してから起動すること。
- このダイアログが出た状態でeclipseのDebugを開始させると、ビルドし直して、焼いて、main()の先頭で止まってくれる。
- 毎回cleanしてビルドされるので、ちょっとうっとうしいかも・・・。
- まあ、書き換えればいいんだけどね。
- あとは、走らせるなりなんなり・・・。
と行きたいところだが、サンプルそのままではたぶん動作しない。
理由は前の方のブログ記事を見てほしいが、BVMCN5102は素のままでは32Kの外部クロックがない。
で、サンプルは外部がある前提で書かれている。
内蔵32Kがあるんだから、そっち前提にしてほしいような・・・。
ぶつぶつ言っていても仕方ないので、サンプルを修正する。
その前に、STATIC_ASSERTの解決をしよう。
Include/app_common/app_util.hにSTATIC_ASSERTマクロの定義があるのだが、gccのバージョンが新しいとエラー扱いになってしまうのだ。
https://devzone.nordicsemi.com/question/4192/static_assert-and-gcc-instead-of-keil/
#define STATIC_ASSERT(EXPR) typedef char static_assert_failed[(EXPR) ? 1 : -1] __attribute__((unused))
そして本題の32Kクロック。
main.cのble_stack_init()を書き換え。
元:
SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);
変更後:
SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);
4000MSじゃなくてもいいけど、とにかくRC_250_PPMを選ぶ。
これをやっても動かないなら、SoftDeviceのバージョン違いを疑ってnRFgo Studioを使って焼き直そう。
動くと、こんな感じのパケットが吐き出される。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。