2019/08/17

Zephyr (7)

そろそろ、BLEのサンプルを動かそう。


その前に。。

NordicSemiconductorのGitHubに何かないか見ていたら、nrfxというリポジトリがあった。

Standalone drivers for peripherals present in Nordic SoCs

もしかしてSoftDeviceの部分をオープンソースにしたのか??と思ったけど、Peripheral部分だけのようだ。
nRF5 SDKから切り出したというところか。
MDKのことも書いてあるので、自分のところで出したSDKだけだと利用者が増えないので、切り出しやすいところを出して、他の環境でも使えるようにしているのだろうか。


あと、ログも。
RTTが使えるかどうかで効率はずいぶん変わってくる。

https://docs.zephyrproject.org/latest/samples/subsys/logging/logger/README.html

loggerのサンプルを動かしたが、RTT Viewerには出てくれない。
ファイルを見てみると、prj.confの他にprj_rtt.confというものもあった。

CONFIG_LOG_BACKEND_RTT=y
CONFIG_USE_SEGGER_RTT=y

差分はこの2行の追加だけ。

CMakeLists.txtに

set(CONF_FILE "prj_rtt.conf")

を追加(末尾ではダメだったので、minimumの次くらいに追加)してビルドして焼き直すと、RTT Viewerに現れた。

image

printk()はそのまま、時間が出ているところはログ関数、というところだろうか。

ログ出力するだけのサンプルかと思ったけど、スレッド使ったりして、簡単に読めるものではなかった。
main()ないし。

ともかく、RTTを有効にすればRTTに出力できることは分かった。

 

違うCONFファイルを使いたい場合は、CMakeLists.txtに書かずとも、westのオプションでよいようだ。

https://docs.zephyrproject.org/latest/application/index.html#basics


では、BLEのサンプルを動かそう。
自分で書くのは、ずいぶん後になるだろう。

Bluetooth: Peripheral HR
https://docs.zephyrproject.org/latest/samples/bluetooth/peripheral_hr/README.html

私が使っているnRF51822のボードには外部RCがないので、RTT Viewerを使いたいのもひっくるめてprj.confに追記した。

CONFIG_LOG_BACKEND_RTT=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_CLOCK_CONTROL_NRF5_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF5_K32SRC_250PPM=y

 

>west build samples\bluetooth\peripheral_hr --pristine

うーん、CLOCK_CONTROL_NRF5_K32SRC_RCなど知らない、といわれてしまった。
Nordicのブログに書いてあったのだが、時代が変わったのだろうか。

今はNRF5ではなくNRFだけでになったようだ。

https://github.com/zephyrproject-rtos/zephyr/blob/v2.0.0-rc1/drivers/clock_control/Kconfig.nrf#L30

では、修正を。

CONFIG_LOG_BACKEND_RTT=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_250PPM=y

ビルドはできたが、焼いても動かない。
blinkyの点滅を先頭に組み込んだが、それも動いていなさそうだ。
うーん。

 

あれ。

Memory region         Used Size  Region Size  %age Used
           FLASH:      110415 B       256 KB     42.12%
             SRAM:       20144 B        32 KB     61.47%
         IDT_LIST:         152 B         2 KB      7.42%

SRAMが61.47%の使用率・・・。
私が使っているnRF51822はrevision 2なのだが、revision 2のSRAMは16kB・・・。

image

嘘・・・私のnRF51822、SRAM少なすぎ?

 

main.cを削っていったが、16kB以内にすることができなかった。
あとちょっとなのだけど、これで動いたとしてもアプリがほとんど書けないということになるので、やる気が出ない。。

 

nRF52を使おうとしたら、BLE Nanoが出てきた。
うちにあるのは古いやつなので、これもたぶん16kBだろう。
こっちはSupport Boardなので、一応試しておこう。

Memory region         Used Size  Region Size  %age Used
           FLASH:       84495 B       256 KB     32.23%
            SRAM:       15064 B        16 KB     91.94%
        IDT_LIST:         152 B         2 KB      7.42%

入るんだ・・・。
私のCONFIGの削り具合が足りてなかったということだろうか。

そして、BLE NanoはMbedっぽくなっていて、DAP対応?しているため、west flashで焼くことができる。
焼き終わると立ち上がって、Advertisingしだした。

image

nRF ToolboxでHRMを使うと、ちゃんとバッテリーとHRが見える。

 

ということは、私が使ってるnRF51822だってできるはずだ。
次はそれを試そう。

0 件のコメント:

コメントを投稿

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

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