nRF5340DK版はMCUboot未使用か

2024/07/12

前回、評価ボードnRF5340 MDBT53-1Mモジュールピッチ変換基板のボード定義ファイルではなくnRF5340DKの定義ファイルをベースにすると動いた。 ではその2つを比べてみればわかるかとビルドしたフォルダを比較したのだが、nRF5340DKベースの方が生成されたファイルが少ないことに気付いた。 ビルドディレクトリの直下にmcuboot/が無い。

まさか。。。

vscodeのnRF Connect Extensionに ACTIONS > nRF Kconfig GUI という項目がある。 ビルド済みのKconfig設定が見えるようだ。

MCUbootを使うかどうかはCONFIG_BOOTLOADER_MCUBOOTなのでフィルタする。
チェックが無い。

image

念のため、評価ボードで提供されている定義ファイルでビルドした方で確認。
チェックされている。

image

ということは、nRF5340DK版はMCUbootを使っていないのだろう。

nRF5340DKでMCUbootを有効にする

nRF5340DK設定の方でCONFIG_BOOTLOADER_MCUBOOTにチェックすると、これはこれでビルドされない。 と思ったら、チェックした後に「Save To File」でプロジェクトのprj.confに保存してからビルドするとmcuboot/ができた。
そして ACTIONS > Flash で焼くと、動いた。

本当にMCUbootを使っているのかが、あまり自信を持てない。 MCUbootの方のmain()にブレークポイントを設定すると止まったのだが、Continueしても動いてくれなかった。 止まる以上は通っていると思いたいのだが、どうなんだろう。

ボタンを押したまま起動するとDFUモード?になるのだが、あれは元からコードがあるようだ。 devicetree の alias で mcuboot_button0 が定義されていたら使えそうなのだが、押したまま起動しても普通にLED点滅になる。
うーむ。

MDBT53でMCUbootを無効にする

逆のパターンで、提供された定義ファイルの方でMCUbootを使わないようにした。 こちらは、ビルドは通るのだが ACTIONS > Flash でエラーになってしまう。 エラーログにも出ていないのでよくわからない。MCUbootを使わなくなったのでFlashに焼き込むファイルが変わったせいとか?