hiro99ma blog

何か技術的なこと

ncs: USBでのDFU (8)

2024/12/08

引き続き DFU についての調査を行う。

FOTA over BLE

イメージのダウンロードが BLE 経由になるだけのはずである。
自作するのは大変だが ncs にしくみがあるので使わせてもらおう。

章のタイトルが “FOTA over Bluetooth Low Energy” なのに最初の行に “DFU over Bluetooth Low Energy” と書いてあるのは気にしないことにした。
ncs には CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU があるので楽よ、ということらしい。
“SAMPLE” とあるので自作したければするがよい、というところか。
SMP server という言葉も出てくるので Apache Mynewt のしくみなのだろう。

設定は prj.conCONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y を足すだけ! 簡単!!
DFU over USB のために追加した MCUMGR の設定などもいらなさそう。

nRF5340 を立ち上げるとサービスが増えていた。

image

FOTA を実行するアプリはモバイル側の nRF Connect Device Manager というアプリだそうだ。
Exercise 3 Step 5.2 に “Uncheck” と書いてあって画像があるが、これはこのチェックを外せという意味であってこの画像のように設定せよという意味ではなさそうだ。
“Only nearby devices” にチェックしたがそっちは特に変わらなかった。

image

出てきたデバイスをタップするとこうなった。

image

せっかく Echo があるので疎通テストしてみた。
同じ文字列が返ってきた。

image

下のタブからイメージをアップしそうなアイコンをタップ。
“Select File” で DFU するファイルを選択する。
Step 5.4 では build/zephyr/app_update.bin と書いてあるが ncs v2.8.0(sysbuild) にはそういうファイルは無い。
これは アプリ名/zephyr/なんとか.signed.bin というファイルになったそうだ。
ncs だと zephyr.signed.bin だろう。これしかないし。
が、mcumgr-clidfu_application.zip が使えたんでこっちもできるよね?

image

この選択は mcumgr-cli のときに “test” して “reset” したのと同じイメージで “Test and Confirm” だそうだ。

image

始まった!

image

アップロードが終わると Device Status のところがクルクルし始める。

image

少し経つと State が Confirming になる。
左下はスクリーンショットを撮っていたときの名残だから気にしないでおくれ。

image

おしまい。

image

端末の再起動は自分でやらないといけないのかもしれない。
再起動すると Advertising までに時間がかかっていたので、何かやってるのかも。
感覚的なものなのでちょっと自信がない。

LED の点滅を変えたアプリをアップロードして変わっていたので、おそらく FOTA は成功している。 あっさり動いてしまった。

モバイル側

nRF アプリに FOTA を組み込んで nRF Connect for Mobile(Device Managerではなく)を起動して connect すると、右上に DFU アイコンが表示されていることに気付くだろう。

image

つまり FOTA するアプリは他のアプリに組み込むことができるということだ。
やり方も書いてある。

私は試してないけどね!

おわりに

nRF5340 でアプリ側の更新だけだが FOTA over BLE を動かすことができた。
ぜいたくを言えば、いつでも FOTA できるようになっているよりも指定したときだけしか FOTA できないようにしたいところだ。
アプリにまったく手を加えずにサービスを追加できたし、そういう制御だってやれそうではないか。
まあ、これは気が向いたら調べよう。

アプリ経由で DFU/FOTA する場合、アップロードしたアプリにうっかり DFU 機能を組み込み忘れるとそれ以降は J-Link を使わないとアップデートできなくなる。
まあ、製品リリースだったらテストするだろうし心配しなくてよいとは思うが気をつけよう。

< Top page