This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ncs external flash ota change qspi to spi

Hello,

I am using ncs1.7.1, qspi + mx25r64 external flash ota it works well, but I don't know how to change qspi to spi.

I need your help thanks

I change the parament .overlay file

/ {
	chosen {
        nordic,pm-ext-flash = &FM25Q08B;
	};
};

&spi0 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	sck-pin = <28>;
	mosi-pin = <26>;
	miso-pin = <24>;
	cs-gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;

	FM25Q08B:FM25Q08B@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <0x400000>;
        label = "FM25Q08B";
        jedec-id = [ C2 20 18 ];
        size = < 0x8000000 >;
	};
};

child mcuboot.config file

#
# Copyright (c) 2021 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

# In order to provide board specific configurations to the MCUboot child image
# we also need to provide a base configuration for MCUboot. This file contains
# the basic configurations needed to successfully build and run MCUboot.

# MCUboot requires a large stack size, otherwise an MPU fault will occur
CONFIG_MAIN_STACK_SIZE=10240

# Set the size here so that the size of MCUBOOT_SECONDARY won't change
# if the default value changes.
CONFIG_PM_PARTITION_SIZE_MCUBOOT=0xc000

# Enable flash operations
CONFIG_FLASH=y

# # This value must match the size of the MCUboot primary partition.
CONFIG_PM_PARTITION_SIZE_MCUBOOT_SECONDARY=0xf4000

# This must be increased to accommodate the bigger images.
CONFIG_BOOT_MAX_IMG_SECTORS=256

# log
CONFIG_LOG=y
CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_LOG_DEFAULT_LEVEL=4
CONFIG_PRINTK=y
CONFIG_LOG_MODE_MINIMAL=n
CONFIG_UART_CONSOLE=y
CONFIG_RTT_CONSOLE=n
CONFIG_CONSOLE_HANDLER=y


CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y
CONFIG_PARTITION_MANAGER_ENABLED=y

CONFIG_BOOT_UPGRADE_ONLY=y

CONFIG_PM_EXTERNAL_FLASH=y
CONFIG_PM_EXTERNAL_FLASH_DEV_NAME="FM25Q08B"
CONFIG_PM_EXTERNAL_FLASH_BASE=0x0
CONFIG_PM_EXTERNAL_FLASH_SIZE=0x8000000




I find the code at  ncs\bootloader\mcuboot\boot\zephyr\main.c I need binding the flash but I don't know how to do it. Can you help me solve this problem. Thank you.

Personally I think  JEDEC_SPI_NOR_0_LABEL and CONFIG_XTENSA is important.

  • I also test the flash, after ota there are no data in the flash.

  • Could you try with the sample uploaded by Håkon here: https://devzone.nordicsemi.com/f/nordic-q-a/82686/fota-smp-very-slow/343080#343080 

    I was able to perform BLE DFU with qspi external flash. I first built and flashed the sample:

    • west build -b nrf52840dk_nrf52840 -p && west flash

    Then I set CONFIG_BT_DEVICE_NAME="HELLO" in /smp_svr/prj.conf and built it again:

    • west build -b nrf52840dk_nrf52840 -p 

    Then I uploaded the file smp_svr/zephyr/app_update.bin to the phone, and performed DFU using the nRF Connect Device Manager app:

    As you can see in the end of the video, the device is advertising with "HELLO", which means the update was successful. 

    By the way, this blog post may be useful: https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/ncs-dfu 

    Best regards,

    Simon

    Update:

    For some reason it was not possible to play the video I uploaded, so I uploaded it again in zipped format:

    2021-12-13-12-11-15.zip

  • Hi

    Thank you for you response.qspi + mx25r64 external flash ota it works well,but I need spi + mx25r64.

    I will continue to implement this method, once successful, I will share my method and joy with you. 

    Thank you.

  • Август said:
    Thank you for you response.qspi + mx25r64 external flash ota it works well,but I need spi + mx25r64.

    Ah, sorry. I totally forgot that you used SPI (even though that was the main topic of this issueFace palm).

    Август said:
    I will continue to implement this method, once successful, I will share my method and joy with you. 

    Sounds good. Use DFU over Bluetooth and the sample uploaded in my last reply as guidance on how to implement BLE DFU. If you don't get it to work please tell me and I'll look into it.

    Best regards,

    Simon

  • hi

    I have tried it but it can't work, personally I think we should change spm 

    img_mgmt_impl_write_image_data and mcuboot.
    Hope you can find another simple way.
    Thank you.
Related