hiro99ma blog

何か技術的なこと

ncs: USBでのDFU (3)

2024/12/04

引き続き DFU についての調査を行う。
今日は手元に実機が無いので座学?だけである。

DFUイメージの圧縮

ちょうど、MCUboot のイメージを圧縮した形で DFU に利用できる機能がまだ Experimental ではあるが使えるという記事が公開されていた。

この図からすると、イメージが小さくなった分、稼働する app イメージの領域を大きくできるようになっているように見える。
となると swap-move とかするときは既存のイメージを圧縮しながら入れ替えるのだろうか?
でもそれだと同じサイズだけ入れ替えるようにするのは難しいと思う。
SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y があるから swap ではなく overwrite するということか?

検索しても SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY がよくわからないので Nordic AI に質問した。
推測は当たっていたようで、上書きするそうだ。
このオプションを指定したときは Downgrade protection も一緒にやると良いとのこと。
また、nRF53 みたいに net core もあってお互いのバージョンが合わないと動作しないパターンは指定した方が無難だという紹介もされていた。
なるほどねー。

そういうのを見ると、swap-move を使った運用はあまり多くないのかもしれない。
ただ、ファームウェアの更新は怖いから戻せるようにしたいという心理もある。

Nordic のページにも圧縮について書いてあった。
↑のブログ記事が昨日公開だったので、同時に更新したのかもしれない。

ブログ記事より突っ込んだことが書いてあり、疑問も解消された。

すぐ試すわけではないが、意図が分かりづらい CONFIG については Nordic AI に質問する方が理解しやすいことがわかったのはよかった。
Kconfig search v2.8.0 みたいなページはあるけれど説明が端的だし、MCUboot 関係だと出てこなかったりするのだ。

ときどきダウングレード禁止?

関係ないが、バージョン 1, 2, 3 まではダウングレード可能で、4 で net core とのインターフェースを変更するので 4 はダウングレード不可、みたいなことはできるのだろうか?
MCUboot を Second Bootloader にすればできそうな気はするが、バージョン 5 がリリースされてもバージョン 4 でないとアップグレードできない、みたいな縛りを入れないとうまくいかなくなるな。
Downgrade protection を読めばわかりそうだが、まだ後回しだな。

nRF Connect SDK での MCUboot

Nordic のページに MCUboot の章があるのだが、書いてあることが細かい。
MCUboot そのものを改造するつもりがなければ全部読まなくてもよいのではなかろうか。
しかし、一番それっぽいページでも特に詳しいことは書かれていない。

DevAcademy をベースに調べるのが良いのか?

現状での問題点

sysbuild で試そうとしているためか DFUモードにはなるものの Serial Recovery としてアップグレードするツールが反応してくれない。
8月に MCUboot のことを調べたが、これは MCUboot ありにすると起動しなくなることが問題だったので DFU までは踏み込んでいない。

UART と CDC-ACM の違い程度だと思って Exercise 1 はスルーしたのだが、ちゃんとやっておくべきか。

< Top page