MCUboot (2)
評価ボードnRF5340 MDBT53-1Mモジュールピッチ変換基板が自分でビルドしたアプリを焼くと動かない件の調査である。
MCUbootのカスタマイズ
なんにせよ、MCUbootのカスタマイズは必要になるはずだ。 ビルドするパラメータの変更で済むのか、あるいはボードごとにコードの追加もあるのかわからないが、本体を変更せずにカスタマイズできるようにはなっているだろう。
Customizing the bootloaderによると、デフォルトでのMCUbootの設定はbootloader/mcuboot/boot/zephyrにある。
私の環境でいえばC:\ncs\v2.6.1\bootloader\mcuboot\boot\zephyr\prj.confだ。
このファイルにはCONFIG_xxxが列挙してある。
カスタマイズするとしたらCONFIG_xxxを変更していくことになりそうだが、
使い方ガイドの手順を見る限りでは
Build Configurationで”Board”の種類を選ぶところだけだ。
一度ビルドすると”Extra CMake arguments”が更新されるが、”Board”とは関係ないようだ。
なおアプリはシンプルなblinkyを使っている。

Build Configurationで設定しないとなると、”Board”で選択するところで既に決まっているのだろう。
Boardのカスタマイズ
使い方ガイドの設定ではssci_mdbt53_dev_boardディレクトリとssci_mdbt53_dev_board_cpuapp.confファイルの場所が指定されている。
ssci_mdbt53_dev_board_cpuapp.confにはCONFIG_xxxが列挙されていた。
このファイルはおそらく各ncsバージョンのディレクトリ内に配置するしかなさそうだったが、bootloader/mcuboot/boot/zephyr/boards/ssci_mdbt53_dev_board_cpuapp.confに配置するのでMCUboot関連だろう。
ちなみに、ファイルがあるときのログはこんな感じで、
Parsing C:/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/Kconfig
Loaded configuration 'C:/ncs/custom_boards/boards/arm/ssci_mdbt53_dev_board/ssci_mdbt53_dev_board_cpuapp_defconfig'
Merged configuration 'C:/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/prj.conf'
Merged configuration 'C:/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/boards/ssci_mdbt53_dev_board_cpuapp.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/pcd/pcd.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/partition_manager/ext_flash_mcuboot_secondary.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration 'U:/Prog/BLE/nrf-ncs/blinky/build/mcuboot/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to 'U:/Prog/BLE/nrf-ncs/blinky/build/mcuboot/zephyr/.config'
ファイルがないときはこんな感じ。”Merged configuration”が減っている。
エラーになるのはsyscalls/kernel.hなどに宣言がある関数がundefined referenceになるからのようだ。
Parsing C:/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/Kconfig
Loaded configuration 'C:/ncs/custom_boards/boards/arm/ssci_mdbt53_dev_board/ssci_mdbt53_dev_board_cpuapp_defconfig'
Merged configuration 'C:/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/prj.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/pcd/pcd.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/partition_manager/ext_flash_mcuboot_secondary.conf'
Merged configuration 'C:/ncs/v2.6.1/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration 'U:/Prog/BLE/nrf-ncs/blinky/build/mcuboot/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to 'U:/Prog/BLE/nrf-ncs/blinky/build/mcuboot/zephyr/.config'
アプリプロジェクトのproj.confは読み込んでいないようなので、変更するならssci_mdbt53_dev_board_cpuapp.confなのだろうか。
Configuration and building とOverview of build and configuration system を見るとなんとなく設定の概要が見えてくる気がする。
- 全体としては
cmakeによるビルド- ファイル:
CMakeLists.txt,*.cmake
- ファイル:
- パラメータは3ブロックある
- Kconfig:
CONFIG_xxxなどからconfigureファイルを生成Kconfig,proj.conf,*.config
- Devicetree: ハードウェアの記述
*.dts,*.dtsi,*.overlay
- Partition Manager: メモリレイアウト
pm.yml,pm_static.yml
- Kconfig:
この3つの中から選ぶなら、今回エラーを返しているのはflash_area_open()なのでPartition Managerか。
しかし、正解が分からないのに調査していくのは大変そうだ・・・。