Mass storage initialization error with nsib and mcuboot

Board: nRF52840Dk

ncs: v2.3.0.

Hi, I am working on a project in which i need to update bootloader itself and application from the external flash. I also need to make partition where i can store my files using FatFs file system.

My project configuration and overlay setting are below:

CONFIG_STDOUT_CONSOLE=y

#USB related configs
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_PRODUCT="Zephyr MSC sample"
CONFIG_LOG=y
CONFIG_USB_DRIVER_LOG_LEVEL_ERR=y
CONFIG_USB_MASS_STORAGE=y
CONFIG_USB_DEVICE_LOG_LEVEL_ERR=y
CONFIG_USB_MASS_STORAGE_LOG_LEVEL_ERR=y

CONFIG_MAIN_STACK_SIZE=4096


#CONFIG_APP_MSC_STORAGE_FLASH_LITTLEFS=y
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
CONFIG_APP_MSC_STORAGE_FLASH_FATFS=y
CONFIG_FS_FATFS_LFN=y

# External partitions
#CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
#CONFIG_PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL=y
#CONFIG_PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL=y

CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y

#memory related configs
CONFIG_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_STREAM_FLASH=y
CONFIG_REBOOT=y
CONFIG_HWINFO=y
CONFIG_IMG_MANAGER=y
CONFIG_IMG_ERASE_PROGRESSIVELY=y

#immutable boot
CONFIG_SECURE_BOOT=y
CONFIG_SB_SIGNING_KEY_FILE="nsib_priv.pem"
CONFIG_BUILD_S1_VARIANT=y
# Need to lower the number of counter slots to be able to update several times. Do not know the best number yet.
CONFIG_SB_NUM_VER_COUNTER_SLOTS=120

CONFIG_FW_INFO_FIRMWARE_VERSION=1
CONFIG_MCUBOOT_IMAGE_VERSION="1.1.1"

/delete-node/ &boot_partition;
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;

&flash0 {
	partitions {
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x000000000 0x00010000>;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x000010000 0x0000e8000>;
		};
	};
};

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

		slot1_partition: partition@0 {
			label = "image-1";
			reg = <0x000000000 0x0000e8000>;
		};
		external_flash: partition@e8000 {
			label = "external flash";
			reg = <0x0000e8000 0x000718000>;
		};
	};
};

/ {
	chosen {
		nordic,pm-ext-flash = &mx25r64;
	};
	msc_disk0 {
		compatible = "zephyr,flash-disk";
		partition = <&external_flash>;
		disk-name = "NAND";
		cache-size = <4096>;
	};
};

When i am running the code then getting error of msc init:

Attempting to boot slot 0.
Attempting to boot from address 0x9200.
Verifying signature against key 0.
Hash: 0x8f...3b
Firmware signature verified.
Firmware version 5
Setting monotonic counter (version: 5, slot: 0)
*** Booting Zephyr OS build v3.2.99-ncs2-3159-g1e1697d881a9 ***
[00:00:00.376,220] <inf> mcuboot: Starting bootloader
[00:00:00.376,983] <inf> mcuboot: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
[00:00:00.377,349] <inf> mcuboot: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
[00:00:00.377,349] <inf> mcuboot: Boot source: none
[00:00:00.377,838] <inf> mcuboot: Swap type: none
[00:00:00.378,295] <inf> mcuboot: Primary image: magic=bad, swap_type=0x1, copy_done=0x2, image_ok=0x2
[00:00:00.378,662] <inf> mcuboot: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
[00:00:00.378,692] <inf> mcuboot: Boot source: none
[00:00:00.379,150] <inf> mcuboot: Swap type: none
*** Booting Zephyr OS build v3.2.99-ncs2-3159-g1e1697d881a9 ***
[00:00:00.000,396] <inf> flashdisk: Initialize device NAND
[00:00:00.000,427] <inf> flashdisk: offset e8000, sector size 512, page size 4096, volume size 7438336
[00:00:00.000,488] <err> flashdisk: Error -22 getting page info at offset 100000
[00:00:00.000,488] <err> usb_msc: Storage init ERROR !!!! - Aborting USB init
[00:00:00.000,518] <wrn> main: Image build time: Jul 10 2023 09:44:53
[00:00:00.000,579] <inf> main: Image is confirmed OK

Please help me, what I am doing wrong.

Thanks.

Related