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