Flash area error when attempting DFU via nRF Connect App

Hello,

I'm getting the following error  when attempting to perform a DFU. I'm using the Android nRF Connect app.

00> I: Image index: 0, Swap type: test
00> I: Image index: 1, Swap type: none
00> E: Failed to open flash area ID 1: -2

Flash Area ID of 1 indicates it's external flash. Error -2 is ENOENT. So it's saying that no such flash area exists? I suspect something is not configured correctly.

Here is my external flash devicetree snippet:

&spi4 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	pinctrl-0 = <&spi4_default>;
	pinctrl-1 = <&spi4_sleep>;
	pinctrl-names = "default", "sleep";
	cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;

	sst26vf: sst26vf064b@0 {
		compatible = "jedec,spi-nor";
				reg = <0>;
		spi-max-frequency = <24000000>;
		jedec-id = [bf 26 43]; /* see datasheet table 5-4, p.25 */

		/* see datasheet pp. 72-79 for basic flash parameters table below */
		sfdp-bfp = [
			fd 20 f1 ff  ff ff ff 03  44 eb 08 6b  08 3b 80 bb
			fe ff ff ff  ff ff 00 ff  ff ff 44 0b  0c 20 0d d8
			0f d8 10 d8  20 91 48 24  80 6f 1d 81  ed 0f 77 38
			30 b0 30 b0  f7 ff ff ff  29 c2 5f ff  f0 30 c0 80
		];
		size = <67108864>;

	 	requires-ulbpr; /* sst26vf has block write protections enabled by default */
	};
};

The project is based on the smart lock sample code. I had to increase the size of the bootloader region to get it to fit. Here is the pm_static_dfu.yml file:

mcuboot:
  address: 0x0
  size: 0xc000
  region: flash_primary
mcuboot_pad:
  address: 0xc000
  size: 0x200
app:
  address: 0xc200
  size: 0xeae00
mcuboot_primary:
  orig_span: &id001
  - mcuboot_pad
  - app
  span: *id001
  address: 0xc000
  size: 0xeb000
  region: flash_primary
mcuboot_primary_app:
  orig_span: &id002
  - app
  span: *id002
  address: 0xc200
  size: 0xeae00
factory_data:
  address: 0xf7000
  size: 0x1000
  region: flash_primary
settings_storage:
  address: 0xf8000
  size: 0x8000
  region: flash_primary
mcuboot_primary_1:
  address: 0x0
  size: 0x40000
  device: flash_ctrl
  region: ram_flash
mcuboot_secondary:
  address: 0x0
  size: 0xef000
  device: SST26VF
  region: external_flash
mcuboot_secondary_1:
  address: 0xef000
  size: 0x40000
  device: SST26VF
  region: external_flash
external_flash:
  address: 0x12f000
  size: 0x6D1000
  device: SST26VF
  region: external_flash
pcd_sram:
  address: 0x20000000
  size: 0x2000
  region: sram_primary

I'm don't know how or if this yaml file relates to the partitions defined in the devicetree, but here are the devicetree partitions:

&flash0 {

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x00010000>;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
		};
		slot0_ns_partition: partition@50000 {
			label = "image-0-nonsecure";
		};
		slot1_partition: partition@80000 {
			label = "image-1";
		};
		slot1_ns_partition: partition@c0000 {
			label = "image-1-nonsecure";
		};
		/* 0xf0000 to 0xf7fff reserved for TF-M partitions */
		storage_partition: partition@f8000 {
			label = "storage";
			reg = <0x000f8000 0x00008000>;
		};
	};
}

Thanks.

Parents
  • Hi Luis,

    I am getting the same error after OTA. ie

    [00:01:48.352,539] <err> mcumgr_img_grp: Failed to open flash area ID 2: -2
    [00:01:48.603,454] <inf> mcuboot_util: Swap type: none
    D: RDSR 40 QE 1 need 1: no-change
    I: Starting bootloader
    I: Swap type: perm
    I: Swap type: perm
    I: Image upgrade secondary slot -> primary slot
    I: Erasing the primary slot
    I: Copying the secondary slot to the primary slot: 0x2eda0 bytes
    D: writing magic; fa_id=4 off=0x55ff0 (0x65ff0)
    D: erasing secondary header
    D: erasing secondary trailer
    I: Image upgrade secondary slot -> primary slot
    I: Erasing the primary slot
    I: Copying the secondary slot to the primary slot: 0x2e8d4 bytes
    D: writing magic; fa_id=2 off=0x3fff0 (0x3fff0)
    I: Turned on network core
    I: Turned off network core
    D: erasing secondary header
    D: erasing secondary trailer
    I: Bootloader chainload address offset: 0x10000

    and here is my prj.conf file 

    CONFIG_MAIN_STACK_SIZE=2048
    
    #for LOG
    CONFIG_LOG=y
    CONFIG_LOG_MODE_DEFERRED=y
    CONFIG_LOG_RUNTIME_FILTERING=y
    CONFIG_LOG_BUFFER_SIZE=5120
    CONFIG_LOG_PRINTK=y
    CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD=0
    # CONFIG_COVERAGE=n
    CONFIG_LOG_TAG_MAX_LEN=8
    
    #for timer
    CONFIG_NRFX_TIMER0=y
    
    #for events
    CONFIG_EVENTS=y
    
    #for fuel gauge
    CONFIG_FUEL_GAUGE=y
    CONFIG_MAX17048=y
    
    #for I2C
    CONFIG_I2C=y
    
    
    #for NVS
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    
    #for Bluetooth
    CONFIG_BT=y
    CONFIG_BT_DEBUG_LOG=n
    CONFIG_BT_SMP=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_BAS=y
    CONFIG_BT_DIS=y
    CONFIG_BT_DIS_PNP=n
    CONFIG_BT_DEVICE_NAME="sample"
    CONFIG_BT_DIS_MODEL="sample"
    CONFIG_BT_DIS_MANUF="sample"
    CONFIG_BT_DIS_HW_REV=y
    CONFIG_BT_DIS_HW_REV_STR="0.1"
    CONFIG_BT_DIS_SW_REV=y
    CONFIG_BT_DIS_SW_REV_STR="0.0.1"
    CONFIG_BT_DIS_FW_REV=y
    CONFIG_BT_DIS_FW_REV_STR="0.0.1"
    #GATT_CLIENT needed for requesting ATT_MTU update
    CONFIG_BT_GATT_CLIENT=y
    #PHY update needed for updating PHY request
    CONFIG_BT_USER_PHY_UPDATE=y
    #For data length update
    CONFIG_BT_USER_DATA_LEN_UPDATE=y
    #Over-ride various BT settings for extended data packet size
    CONFIG_BT_ATT_PREPARE_COUNT=4
    CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_L2CAP_TX_FRAG_COUNT=15
    CONFIG_BT_BUF_EVT_RX_SIZE=251
    CONFIG_BT_BUF_CMD_TX_SIZE=251
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_BUF_ACL_TX_COUNT=15
    CONFIG_BT_BUF_ACL_TX_SIZE=251
    CONFIG_BT_RX_STACK_SIZE=4096
    
    #for RTC
    CONFIG_NRFX_RTC0=y
    
    #To enable floating point values
    CONFIG_FPU=y
    
    #----------------
    # Enable Bootloader
    CONFIG_BOOTLOADER_MCUBOOT=y
    
    # Enable SMP Server
    CONFIG_MCUMGR=y
    CONFIG_MCUMGR_GRP_IMG=y
    
    # CONFIG_MCUMGR_GRP_IMG dependencies
    # CONFIG_FLASH=y
    CONFIG_IMG_MANAGER=y
    
    # CONFIG_IMG_MANAGER dependencies
    CONFIG_STREAM_FLASH=y
    
    # CONFIG_MCUMGR dependencies
    CONFIG_NET_BUF=y
    CONFIG_ZCBOR=y
    
    # Required for CONFIG_IMG_MANAGER
    CONFIG_FLASH_MAP=y
    
    # Enable BLE transfer
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
    
    CONFIG_MCUBOOT_USE_ALL_AVAILABLE_RAM=y
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y
    CONFIG_NRF53_UPGRADE_NETWORK_CORE=y
    CONFIG_UPDATEABLE_IMAGE_NUMBER=2
    CONFIG_ADD_MCUBOOT_MEDIATE_SIM_FLASH_DTS=y
    
    
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    
    
    
    
    
    

    if any clue regarding this please let me know.

    thanks in advance.

Reply
  • Hi Luis,

    I am getting the same error after OTA. ie

    [00:01:48.352,539] <err> mcumgr_img_grp: Failed to open flash area ID 2: -2
    [00:01:48.603,454] <inf> mcuboot_util: Swap type: none
    D: RDSR 40 QE 1 need 1: no-change
    I: Starting bootloader
    I: Swap type: perm
    I: Swap type: perm
    I: Image upgrade secondary slot -> primary slot
    I: Erasing the primary slot
    I: Copying the secondary slot to the primary slot: 0x2eda0 bytes
    D: writing magic; fa_id=4 off=0x55ff0 (0x65ff0)
    D: erasing secondary header
    D: erasing secondary trailer
    I: Image upgrade secondary slot -> primary slot
    I: Erasing the primary slot
    I: Copying the secondary slot to the primary slot: 0x2e8d4 bytes
    D: writing magic; fa_id=2 off=0x3fff0 (0x3fff0)
    I: Turned on network core
    I: Turned off network core
    D: erasing secondary header
    D: erasing secondary trailer
    I: Bootloader chainload address offset: 0x10000

    and here is my prj.conf file 

    CONFIG_MAIN_STACK_SIZE=2048
    
    #for LOG
    CONFIG_LOG=y
    CONFIG_LOG_MODE_DEFERRED=y
    CONFIG_LOG_RUNTIME_FILTERING=y
    CONFIG_LOG_BUFFER_SIZE=5120
    CONFIG_LOG_PRINTK=y
    CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD=0
    # CONFIG_COVERAGE=n
    CONFIG_LOG_TAG_MAX_LEN=8
    
    #for timer
    CONFIG_NRFX_TIMER0=y
    
    #for events
    CONFIG_EVENTS=y
    
    #for fuel gauge
    CONFIG_FUEL_GAUGE=y
    CONFIG_MAX17048=y
    
    #for I2C
    CONFIG_I2C=y
    
    
    #for NVS
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    
    #for Bluetooth
    CONFIG_BT=y
    CONFIG_BT_DEBUG_LOG=n
    CONFIG_BT_SMP=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_BAS=y
    CONFIG_BT_DIS=y
    CONFIG_BT_DIS_PNP=n
    CONFIG_BT_DEVICE_NAME="sample"
    CONFIG_BT_DIS_MODEL="sample"
    CONFIG_BT_DIS_MANUF="sample"
    CONFIG_BT_DIS_HW_REV=y
    CONFIG_BT_DIS_HW_REV_STR="0.1"
    CONFIG_BT_DIS_SW_REV=y
    CONFIG_BT_DIS_SW_REV_STR="0.0.1"
    CONFIG_BT_DIS_FW_REV=y
    CONFIG_BT_DIS_FW_REV_STR="0.0.1"
    #GATT_CLIENT needed for requesting ATT_MTU update
    CONFIG_BT_GATT_CLIENT=y
    #PHY update needed for updating PHY request
    CONFIG_BT_USER_PHY_UPDATE=y
    #For data length update
    CONFIG_BT_USER_DATA_LEN_UPDATE=y
    #Over-ride various BT settings for extended data packet size
    CONFIG_BT_ATT_PREPARE_COUNT=4
    CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_L2CAP_TX_FRAG_COUNT=15
    CONFIG_BT_BUF_EVT_RX_SIZE=251
    CONFIG_BT_BUF_CMD_TX_SIZE=251
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_BUF_ACL_TX_COUNT=15
    CONFIG_BT_BUF_ACL_TX_SIZE=251
    CONFIG_BT_RX_STACK_SIZE=4096
    
    #for RTC
    CONFIG_NRFX_RTC0=y
    
    #To enable floating point values
    CONFIG_FPU=y
    
    #----------------
    # Enable Bootloader
    CONFIG_BOOTLOADER_MCUBOOT=y
    
    # Enable SMP Server
    CONFIG_MCUMGR=y
    CONFIG_MCUMGR_GRP_IMG=y
    
    # CONFIG_MCUMGR_GRP_IMG dependencies
    # CONFIG_FLASH=y
    CONFIG_IMG_MANAGER=y
    
    # CONFIG_IMG_MANAGER dependencies
    CONFIG_STREAM_FLASH=y
    
    # CONFIG_MCUMGR dependencies
    CONFIG_NET_BUF=y
    CONFIG_ZCBOR=y
    
    # Required for CONFIG_IMG_MANAGER
    CONFIG_FLASH_MAP=y
    
    # Enable BLE transfer
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
    
    CONFIG_MCUBOOT_USE_ALL_AVAILABLE_RAM=y
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y
    CONFIG_NRF53_UPGRADE_NETWORK_CORE=y
    CONFIG_UPDATEABLE_IMAGE_NUMBER=2
    CONFIG_ADD_MCUBOOT_MEDIATE_SIM_FLASH_DTS=y
    
    
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    
    
    
    
    
    

    if any clue regarding this please let me know.

    thanks in advance.

Children
No Data
Related