MCUboot (2)
2024/07/11
評価ボード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か。
しかし、正解が分からないのに調査していくのは大変そうだ・・・。