DFU to external flash results in error: Slot image has no hash TLV

Hi,

I'm trying to store the DFU image in external flash. I already have DFU on the internal flash working.

When I enable support for the external flash and perform a DFU using nRFConnect for iOS I get the following error after the upload: Slot image has no hash TLV.

I'm using the dfu_application.zip from the build folder for the DFU (the same as I did when doing DFU using the internal flash).

My build system uses sysbuild and I've added the following configuration to enable the external flash:

sysbuild.conf:

SB_CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y

 prj.conf:

CONFIG_NORDIC_QSPI_NOR=y
CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096

sysbuild/mcuboot.conf:

CONFIG_BOOT_MAX_IMG_SECTORS=256
CONFIG_NORDIC_QSPI_NOR=y
CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096

 boards/x/x.dts:

inside 'chosen' node: nordic,pm-ext-flash = &is25lp016;

&pinctrl {
    qspi_default: qspi_default {
        group1 {
            psels = <NRF_PSEL(QSPI_SCK, 0, 21)>,
                    <NRF_PSEL(QSPI_IO0, 0, 22)>,
                    <NRF_PSEL(QSPI_IO1, 0, 24)>,
                    <NRF_PSEL(QSPI_IO2, 0, 23)>,
                    <NRF_PSEL(QSPI_IO3, 0, 20)>,
                    <NRF_PSEL(QSPI_CSN, 1, 0)>;
            nordic,drive-mode= <NRF_DRIVE_H0H1>;
        };
    };
 
    qspi_sleep: qspi_sleep {
        group1 {
            psels = <NRF_PSEL(QSPI_SCK, 0, 21)>,
                    <NRF_PSEL(QSPI_IO0, 0, 22)>,
                    <NRF_PSEL(QSPI_IO1, 0, 24)>,
                    <NRF_PSEL(QSPI_IO2, 0, 23)>,
                    <NRF_PSEL(QSPI_IO3, 0, 20)>;
            low-power-enable;
        };
        group2 {
            psels = <NRF_PSEL(QSPI_CSN, 1, 0)>;
            low-power-enable;
            bias-pull-up;
        };
    };
};
 
&qspi {
    status = "okay";
    pinctrl-0 = <&qspi_default>;
    pinctrl-1 = <&qspi_sleep>;
    pinctrl-names = "default", "sleep";
};
 
&qspi {
    is25lp016: is25lp016@0 {
        compatible = "nordic,qspi-nor";
        reg = <0>;
        writeoc = "pp4io";
        readoc = "read4io";
        sck-frequency = <8000000>;
        jedec-id = [9d 60 15];
        // sfdp-bfp = [ //TODO: FIX
        // ];
        size = <16777216>;
        has-dpd;
        t-enter-dpd =<3000>;
        t-exit-dpd = <3000>;
    };
};
 

I get no errors or other logging from the flash or QSPI subsystem from the app or boot loader, but when I change the `jedec-id` to be wrong I do get an error. This makes me believe that the configuration of the flash chip is correct.

I also see lots of data being transferred from/to the flash chip when I measure a data line with my oscilloscope.

What might be the cause of the given error?

Thanks in advance.

Kind regards,

Remco Poelstra

Parents Reply Children
No Data
Related