mcuboot, Image in the primary slot is not valid, Unable to find bootable image

I followed the course to enable MCUBOOT over BLE it is successful for the project peripheral_lbs but not my application.

uart log;

*** Booting nRF Connect SDK v3.5.99-ncs1-1 ***
I: Starting bootloader
I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Boot source: none
I: Image index: 0, Swap type: none
E: Image in the primary slot is not valid!
E: Unable to find bootable image

build log:

Building peripheral
west build --build-dir /home/longqi/peripheral/build /home/longqi/peripheral --pristine --board nrf52833dk_nrf52833 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=/home/longqi/peripheral -Dmcuboot_OVERLAY_CONFIG=/home/longqi/ncs/v2.6.1/nrf/subsys/partition_manager/partition_manager_enabled.conf -Dmcuboot_secondary_app_OVERLAY_CONFIG=/home/longqi/ncs/v2.6.1/nrf/subsys/partition_manager/partition_manager_enabled.conf -DCONFIG_CORTEX_M_DEBUG_MONITOR_HOOK=y -DCONFIG_DEBUG_OPTIMIZATIONS=y -DCONFIG_DEBUG_THREAD_INFO=y -DCONFIG_SEGGER_DEBUGMON=y -DCACHED_CONF_FILE=/home/longqi/peripheral/prj.conf -DDTC_OVERLAY_FILE=/home/longqi/peripheral/nrf52833dk_nrf52833.overlay

-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: /home/longqi/peripheral
-- CMake version: 3.21.0
-- Found Python3: /home/longqi/ncs/toolchains/2be090971e/usr/local/bin/python3.9 (found suitable version "3.9.18", minimum required is "3.8") found components: Interpreter
-- Cache files will be written to: /home/longqi/.cache/zephyr
-- Zephyr version: 3.5.99 (/home/longqi/ncs/v2.6.1/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: nrf52833dk_nrf52833
-- Found host-tools: zephyr 0.16.5 (/home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.5 (/home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk)
-- Found Dtc: /home/longqi/ncs/toolchains/2be090971e/usr/bin/dtc (found suitable version "1.5.0", minimum required is "1.4.6")
-- Found BOARD.dts: /home/longqi/ncs/v2.6.1/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833.dts
-- Found devicetree overlay: /home/longqi/peripheral/nrf52833dk_nrf52833.overlay
-- Generated zephyr.dts: /home/longqi/peripheral/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/longqi/peripheral/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/longqi/peripheral/build/zephyr/dts.cmake
Parsing /home/longqi/ncs/v2.6.1/zephyr/Kconfig
Loaded configuration '/home/longqi/ncs/v2.6.1/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833_defconfig'
Merged configuration '/home/longqi/peripheral/prj.conf'
Merged configuration '/home/longqi/peripheral/build/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to '/home/longqi/peripheral/build/zephyr/.config'
Kconfig header saved to '/home/longqi/peripheral/build/zephyr/include/generated/autoconf.h'
-- Found GnuLd: /home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd (found version "2.38")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
CMake Warning at /home/longqi/ncs/v2.6.1/zephyr/subsys/bluetooth/host/CMakeLists.txt:100 (message):
CONFIG_BT_FIXED_PASSKEY is enabled

A fixed passkey is easy to deduce during the pairing procedure, do not use in
production.


CMake Warning at /home/longqi/ncs/v2.6.1/nrf/samples/common/mcumgr_bt_ota_dfu/CMakeLists.txt:14 (message):
MCUmgr Bluetooth OTA DFU: suboptimal configuration of Bluetooth Controller
buffers. Consider using optimal values defined in the
/home/longqi/ncs/v2.6.1/nrf/samples/common/mcumgr_bt_ota_dfu/Kconfig file
for CONFIG_BT_BUF_ACL_TX_SIZE, CONFIG_BT_BUF_ACL_RX_SIZE and
CONFIG_BT_CTLR_DATA_LENGTH_MAX options


CMake Warning at /home/longqi/ncs/v2.6.1/nrf/samples/common/mcumgr_bt_ota_dfu/CMakeLists.txt:27 (message):
MCUmgr Bluetooth OTA DFU: suboptimal configuration of Bluetooth Host
buffers. Consider using optimal values defined in the
/home/longqi/ncs/v2.6.1/nrf/samples/common/mcumgr_bt_ota_dfu/Kconfig file
for CONFIG_BT_BUF_ACL_TX_SIZE, CONFIG_BT_BUF_ACL_RX_SIZE and
CONFIG_BT_L2CAP_TX_MTU options


-- Found Python3: /home/longqi/ncs/toolchains/2be090971e/usr/local/bin/python3.9 (found version "3.9.18") found components: Interpreter

=== child image mcuboot - begin ===
loading initial cache file /home/longqi/peripheral/build/mcuboot/child_image_preload.cmake
Loading Zephyr default modules (Zephyr base).
-- Application: /home/longqi/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr
-- CMake version: 3.21.0
-- Found Python3: /home/longqi/ncs/toolchains/2be090971e/usr/local/bin/python3.9 (found suitable version "3.9.18", minimum required is "3.8") found components: Interpreter
-- Cache files will be written to: /home/longqi/.cache/zephyr
-- Zephyr version: 3.5.99 (/home/longqi/ncs/v2.6.1/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: nrf52833dk_nrf52833
-- Found host-tools: zephyr 0.16.5 (/home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.5 (/home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk)
-- Found Dtc: /home/longqi/ncs/toolchains/2be090971e/usr/bin/dtc (found suitable version "1.5.0", minimum required is "1.4.6")
-- Found BOARD.dts: /home/longqi/ncs/v2.6.1/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833.dts
-- Found devicetree overlay: /home/longqi/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/app.overlay
-- Generated zephyr.dts: /home/longqi/peripheral/build/mcuboot/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/longqi/peripheral/build/mcuboot/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/longqi/peripheral/build/mcuboot/zephyr/dts.cmake
Parsing /home/longqi/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/Kconfig
Loaded configuration '/home/longqi/ncs/v2.6.1/zephyr/boards/arm/nrf52833dk_nrf52833/nrf52833dk_nrf52833_defconfig'
Merged configuration '/home/longqi/ncs/v2.6.1/bootloader/mcuboot/boot/zephyr/prj.conf'
Merged configuration '/home/longqi/ncs/v2.6.1/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration '/home/longqi/peripheral/build/mcuboot/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to '/home/longqi/peripheral/build/mcuboot/zephyr/.config'
Kconfig header saved to '/home/longqi/peripheral/build/mcuboot/zephyr/include/generated/autoconf.h'
-- Found GnuLd: /home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd (found version "2.38")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/longqi/ncs/toolchains/2be090971e/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
CMake Warning at /home/longqi/ncs/v2.6.1/nrf/lib/flash_patch/CMakeLists.txt:8 (message):

----------------------------------------------------------
--- WARNING: To maintain the integrity of secure boot, ---
--- enable CONFIG_DISABLE_FLASH_PATCH in production. ---
----------------------------------------------------------


-- Using ccache: /home/longqi/ncs/toolchains/2be090971e/usr/bin/ccache
MCUBoot bootloader key file: /home/longqi/ncs/v2.6.1/bootloader/mcuboot/root-rsa-2048.pem
-- Configuring done
-- Generating done
-- Build files have been written to: /home/longqi/peripheral/build/mcuboot
=== child image mcuboot - end ===

CMake Warning at /home/longqi/ncs/v2.6.1/nrf/modules/mcuboot/CMakeLists.txt:382 (message):

---------------------------------------------------------
--- WARNING: Using default MCUBoot key, it should not ---
--- be used for production. ---
---------------------------------------------------------


-- Using ccache: /home/longqi/ncs/toolchains/2be090971e/usr/bin/ccache
CMake Warning at /home/longqi/ncs/v2.6.1/nrf/cmake/partition_manager.cmake:79 (message):

---------------------------------------------------------------------
--- WARNING: Using a bootloader without pm_static.yml. ---
--- There are cases where a deployed product can consist of ---
--- multiple images, and only a subset of these images can be ---
--- upgraded through a firmware update mechanism. In such cases, ---
--- the upgradable images must have partitions that are static ---
--- and are matching the partition map used by the bootloader ---
--- programmed onto the device. ---
---------------------------------------------------------------------

Call Stack (most recent call first):
/home/longqi/ncs/v2.6.1/zephyr/cmake/modules/kernel.cmake:248 (include)
/home/longqi/ncs/v2.6.1/zephyr/cmake/modules/zephyr_default.cmake:138 (include)
/home/longqi/ncs/v2.6.1/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
/home/longqi/ncs/v2.6.1/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
CMakeLists.txt:4 (find_package)


-- Configuring done
-- Generating done
-- Build files have been written to: /home/longqi/peripheral/build
-- west build: building application
[1/274] Preparing syscall dependency handling

[5/274] Generating include/generated/version.h
-- Zephyr version: 3.5.99 (/home/longqi/ncs/v2.6.1/zephyr), build: v3.5.99-ncs1-1
[1/271] Preparing syscall dependency handling

[4/271] Generating include/generated/version.h
-- Zephyr version: 3.5.99 (/home/longqi/ncs/v2.6.1/zephyr), build: v3.5.99-ncs1-1
[271/271] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 32670 B 48 KB 66.47%
RAM: 23808 B 128 KB 18.16%
IDT_LIST: 0 GB 32 KB 0.00%
[256/274] Building C object CMakeFiles/app.dir/src/main.c.obj
/home/longqi/peripheral/src/main.c:192:13: warning: 'device_name_set' defined but not used [-Wunused-function]
192 | static void device_name_set(uint8_t *name, uint8_t length)
| ^~~~~~~~~~~~~~~
[266/274] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 229048 B 232960 B 98.32%
RAM: 60564 B 128 KB 46.21%
IDT_LIST: 0 GB 32 KB 0.00%
[269/274] Generating ../../zephyr/app_update.bin
image.py: sign the payload
[271/274] Generating ../../zephyr/app_signed.hex
image.py: sign the payload
[272/274] Generating ../../zephyr/app_test_update.hex
image.py: sign the payload
[274/274] Generating zephyr/merged.hex
* Terminal will be reused by tasks, press any key to close it.

prj.conf

# Increased stack due to settings API usage
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

CONFIG_BT=y

# Enable logging
CONFIG_LOG=y

CONFIG_BT_SMP=y
CONFIG_BT_SIGNING=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DIS=y
CONFIG_BT_ATT_PREPARE_COUNT=5
CONFIG_BT_PRIVACY=n
CONFIG_BT_DEVICE_NAME="p1"
CONFIG_BT_DEVICE_APPEARANCE=833
CONFIG_BT_DEVICE_NAME_DYNAMIC=y
CONFIG_BT_DEVICE_NAME_MAX=65

CONFIG_BT_DIS_MANUF="xnergy"
CONFIG_BT_DIS_MODEL="phoenix"

CONFIG_BT_KEYS_OVERWRITE_OLDEST=y
CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y

CONFIG_BT_PERIPHERAL_PREF_MIN_INT=8
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=8
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=200
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y

CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_BUF_ACL_TX_SIZE=251
CONFIG_BT_BUF_CMD_TX_SIZE=255
CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255

CONFIG_BT_L2CAP_TX_MTU=247

CONFIG_BT_USER_DATA_LEN_UPDATE=y
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

CONFIG_BT_MAX_CONN=2

CONFIG_BT_FIXED_PASSKEY=y

CONFIG_UART_CONSOLE=n
CONFIG_RTT_CONSOLE=y

CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y

CONFIG_MAIN_STACK_SIZE=2048

CONFIG_SENSOR=y

CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y


Related