2014/06/28

[ble]BVMCN5102-BKにビルドして焼く

まだnRF51822自体がよくわかってないので、サンプルを焼くだけだ。

まず、Nordicのユーザ登録をしよう。
http://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822

image

Registerをクリックした先で、いくつか入力して登録。
メールが来たりして登録が完了したら、ログイン。

左側に「MY KEYS」があるので、クリック。

image

ここで、BVMCN5102-BKを購入したときに入っていた紙に書いてあるプロダクトキーを打ち込んでADD。
そうすることで、ダウンロード保護されていた開発環境などがダウンロードできるようになる。
今の私は、これがダウンロードできるようになった(スペックシートなどは保護されてない)。

image

とりあえず、全部ダウンロードしてから考えることにした。

image

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のチップの上に書いてある。下画像の赤いところだ。

image

打ち込むとダウンロードできるので、ダウンロードして展開してインストール。
なお、このシリアル番号は接続の時にも使う。


BVMCN5102とJ-Link LITEはこんな接続になる。
ピンの穴が埋まっているのだが、逆にすると差し込めてしまうので注意だ。
ケーブルに油性マジックで3本の線が引かれている方がJ-Link側だと思う。

image

が、もう少し待とう。
まだクロスコンパイラが入っていないのだ。

今回は、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を立ち上げる
    image
    image
  • 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を使って焼き直そう。
動くと、こんな感じのパケットが吐き出される。

image

0 件のコメント:

コメントを投稿

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

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