Hi ,
I am trying to implemenent DFU on nRF52840. Aim is to store new image to slot on QSPI external flash but it seems like nothing is sored on slot 1 as when I upload image via DFU manager, nothing is on slot 1. Please confirm my dts, mcuboot and prj.conf files. Thanks Moh
prj.conf
# General Debugging and Logging CONFIG_LOG=y CONFIG_LOG_BACKEND_UART=y CONFIG_LOG_PRINTK=y CONFIG_CBPRINTF_FP_SUPPORT=y CONFIG_CONSOLE=n CONFIG_PRINTK=n CONFIG_SHELL=y CONFIG_SHELL_LOG_BACKEND=y CONFIG_SHELL_CMD_BUFF_SIZE=512 CONFIG_USE_SEGGER_RTT=y CONFIG_LOG_BACKEND_RTT=y CONFIG_RTT_CONSOLE=n CONFIG_UART_CONSOLE=y CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096 CONFIG_SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL=y CONFIG_LOG_BLOCK_IN_THREAD=y CONFIG_LOG_BUFFER_SIZE=4096 CONFIG_DEBUG=n CONFIG_DEBUG_INFO=n CONFIG_DEBUG_THREAD_INFO=n CONFIG_BOOT_BANNER=y CONFIG_SERIAL=y CONFIG_NVS_LOG_LEVEL_DBG=y CONFIG_LOG_BACKEND_UART_BUFFER_SIZE=4096 CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_LOG_MODE_IMMEDIATE=y CONFIG_DEBUG_OPTIMIZATIONS=n # Enable Clock Driver # CONFIG_CLOCK_CONTROL=y # CONFIG_CLOCK_CONTROL_NRF=y # CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y # Peripheral and Sensor Drivers CONFIG_I2C=y CONFIG_SPI=y CONFIG_SPI_NOR=y CONFIG_NORDIC_QSPI_NOR=y CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 # CONFIG_ADC=y CONFIG_SENSOR=y # TMP116 is disabled (enable if in device tree) # CONFIG_TMP116=y CONFIG_BMI270=y CONFIG_WDT_LOG_LEVEL_DBG=y CONFIG_BMI270_TRIGGER_GLOBAL_THREAD=y CONFIG_WATCHDOG=y CONFIG_TASK_WDT=y CONFIG_TASK_WDT_MIN_TIMEOUT=1000 CONFIG_WDT_LOG_LEVEL_ERR=y CONFIG_WDT_DISABLE_AT_BOOT=n CONFIG_LED=y CONFIG_REGULATOR=y CONFIG_MFD_NPM1300=y CONFIG_PM_DEVICE=y CONFIG_PM_DEVICE_RUNTIME=y CONFIG_SYS_CLOCK_EXISTS=y CONFIG_PM=y CONFIG_POWEROFF=y CONFIG_NRF_FUEL_GAUGE=y CONFIG_TASK_WDT=y # Enable nrfx drivers CONFIG_NRFX_SAADC=y CONFIG_NRFX_PPI=y CONFIG_NRFX_DPPI=y CONFIG_NRFX_TIMER2=y # CONFIG_NRFX_QSPI=y # CONFIG_NRFX_QSPI_LOG=y # CONFIG_NORDIC_QSPI_NOR=y # Memory Optimizations CONFIG_MAIN_STACK_SIZE=4096 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 CONFIG_HEAP_MEM_POOL_SIZE=4096 CONFIG_ASSERT=n CONFIG_THREAD_ANALYZER=n CONFIG_SIZE_OPTIMIZATIONS=y CONFIG_EVENTS=y CONFIG_PM_SINGLE_IMAGE=y CONFIG_RESET_ON_FATAL_ERROR=y # Flash and Filesystem CONFIG_FLASH=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_FLASH_MAP=y CONFIG_MPU_ALLOW_FLASH_WRITE=y CONFIG_FLASH_JESD216_API=y CONFIG_SPI_NOR_IDLE_IN_DPD=y CONFIG_NVS=y CONFIG_FILE_SYSTEM=y CONFIG_FILE_SYSTEM_LITTLEFS=y CONFIG_FS_LITTLEFS_CACHE_SIZE=64 CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE=16 CONFIG_FS_LITTLEFS_BLOCK_CYCLES=256 CONFIG_IMG_MANAGER=y CONFIG_IMG_ERASE_PROGRESSIVELY=n # Enable Bluetooth settings CONFIG_BT_SETTINGS=y # Enable settings subsystem CONFIG_SETTINGS=y # Enable Bluetooth and controller settings CONFIG_BT=y CONFIG_BT_CTLR_TX_PWR_PLUS_4=y CONFIG_BT_HCI=y CONFIG_BT_CTLR=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_BROADCASTER=n CONFIG_BT_SMP=y CONFIG_BT_BONDABLE=y CONFIG_BT_CTLR_ADV_EXT=n CONFIG_BT_DEVICE_APPEARANCE=1345 CONFIG_BT_DEVICE_NAME_DYNAMIC=y CONFIG_BT_GATT_CLIENT=y CONFIG_BT_FILTER_ACCEPT_LIST=y CONFIG_BT_SIGNING=y # Bluetooth security and bonding settings CONFIG_BT_KEYS_OVERWRITE_OLDEST=y CONFIG_BT_SMP_ALLOW_UNAUTH_OVERWRITE=y CONFIG_BT_ID_UNPAIR_MATCHING_BONDS=y CONFIG_BT_PRIVACY=n CONFIG_BT_TINYCRYPT_ECC=y CONFIG_BT_CTLR_PHY_2M=y # Bluetooth buffer and connection settings CONFIG_BT_BUF_ACL_RX_SIZE=502 CONFIG_BT_ATT_PREPARE_COUNT=2 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_ACL_TX_COUNT=10 CONFIG_BT_L2CAP_TX_MTU=247 CONFIG_BT_L2CAP_TX_BUF_COUNT=10 CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 CONFIG_BT_CTLR_RX_BUFFERS=2 CONFIG_BT_CONN_TX_MAX=10 CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n CONFIG_BT_HCI_VS_EXT=n CONFIG_BT_GATT_DM=y # Allow only LESC pairing # CONFIG_BT_SMP_SC_PAIR_ONLY=y # Configure Bluetooth connection settings CONFIG_BT_CTLR_TX_PWR_0=y CONFIG_BT_MAX_CONN=1 CONFIG_BT_MAX_PAIRED=1 # Enable PHY updates CONFIG_BT_USER_PHY_UPDATE=y CONFIG_BT_USER_DATA_LEN_UPDATE=y # Enable Bluetooth shell for debugging CONFIG_BT_SHELL=n CONFIG_SHELL_BACKEND_SERIAL=y # Enable BT NUS (Nordic UART Service) shell for testing # CONFIG_SHELL_BT_NUS=y # Enable Battery Service (BAS) for battery level reporting CONFIG_BT_BAS=y # Cryptography CONFIG_TINYCRYPT=y CONFIG_BT_TINYCRYPT_ECC=y # MCUboot + FOTA CONFIG_BOOTLOADER_MCUBOOT=y CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y CONFIG_MCUMGR_MGMT_NOTIFICATION_HOOKS=y # Disable the Flash Patch and Breakpoint unit for secure production CONFIG_DISABLE_FLASH_PATCH=y # Use internal RC oscillator instead of external 32.768 kHz crystal CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y # Reboot and Miscellaneous CONFIG_REBOOT=y CONFIG_BOOT_DELAY=0
mcuboot.conf
# Enable QSPI drivers for external flash CONFIG_NORDIC_QSPI_NOR=y CONFIG_BOOT_MAX_IMG_SECTORS=256 CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 # Logging CONFIG_LOG=y CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_FLASH=y # CONFIG_FLASH_SIMULATOR=y # CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y CONFIG_FLASH_SIMULATOR_STATS=n # Configure boolader to use two slots CONFIG_SINGLE_APPLICATION_SLOT=n # Place the secondary partition of MCUboot in the external flash instead of the internal flash CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y # Override external driver check CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y # Enable bootloader signature verification using ECDSA P-256 CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256=y # CONFIG_BOOT_SIGNATURE_KEY_FILE="my-enc-ec256-priv.pem" # Disable the Flash Patch and Breakpoint unit for secure production CONFIG_DISABLE_FLASH_PATCH=y CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
dts
chosen { zephyr,console = &uart0; zephyr,shell-uart = &uart0; zephyr,uart-mcumgr = &uart0; zephyr,bt-mon-uart = &uart0; zephyr,bt-c2h-uart = &uart0; zephyr,sram = &sram0; zephyr,flash = &flash0; zephyr,code-partition = &slot0_partition; zephyr,entropy = &rng; // zephyr,ieee802154 = &ieee802154; }; &qspi { status = "okay"; pinctrl-0 = <&qspi_default>; pinctrl-1 = <&qspi_sleep>; pinctrl-names = "default", "sleep"; at25xe32: at25xe321d@0 { reg = <0x0>; jedec-id = [1f 47 0c]; sck-frequency = <16000000>; compatible = "nordic,qspi-nor"; size = <33554432>; has-dpd; t-enter-dpd = <3000>; t-exit-dpd = <200000>; // Configure to actully use Quad SPI data. writeoc = "pp4o"; readoc = "read4io"; quad-enable-requirements = "S2B1v6"; /* Storage Partitions */ partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; slot1_partition: partition@0 { label = "image-1"; reg = <0x00000000 0x00100000>; }; store_partition: partition@100000 { label = "store"; reg = <0x00100000 0x00300000>; /* 3MB */ }; }; }; }; // &ieee802154 { // status = "okay"; // }; &flash0 { partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; boot_partition: partition@0 { label = "mcuboot"; reg = <0x00000000 DT_SIZE_K(48)>; }; slot0_partition: partition@c000 { label = "image-0"; reg = <0x0000C000 DT_SIZE_K(944)>; }; // slot1_partition: partition@82000 { // label = "image-1"; // reg = <0x00082000 DT_SIZE_K(472)>; // }; /* * The flash starting at 0x000f8000 and ending at * 0x000fffff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ storage_partition: partition@f8000 { label = "storage"; reg = <0x000f8000 DT_SIZE_K(32)>; }; }; };