NRF5340 QSPI XIP IS25LP128F

Hello everyone,
I am working on a custom board based on the nRF5340 and need to implement code execution from an external QSPI memory. The board uses the IS25LP128 memory.

As a starting point, I used the "extxip_smp_svr" example and tested it successfully on the nrf5340dk_nrf5340 development kit, which uses the MX25R64 memory instead of the IS25LP128. Everything worked as expected on the DK.

To adapt the example to my custom board, I modified the following files:

  1. nrf5340dk_nrf5340_cpuapp.overlay located in .\child_image\mcuboot\boards and .\boards.
  2. pm_static.yml to handle the memory layout for the IS25LP128 instead of the MX25R64.

The system compiles successfully, but when I execute the FLASH command from Visual Studio Code, I encounter the following error:

[error] [ nRF53] - Failed while performing 'Verify' operation on target address 0x10120000. -160: Data does not match in address range [0x10120000 - 0x101228DF] (XIP (QSPI))

I have attached the modified overlay and pm_static.yml files for reference.

Could anyone provide guidance on:

  1. Possible reasons for this verification error during the flashing process?
  2. Whether additional configuration or modifications are needed to fully support the IS25LP128 on my custom board?

Thank you in advance for your help!

44706.nrf5340dk_nrf5340_cpuapp.overlay

pm_static.yml:

app:
  address: 0x10200
  end_address: 0xe4000
  region: flash_primary
  size: 0xd3e00
external_flash:
  address: 0x120000
  device: IS25LP_
  end_address: 0x800000
  region: external_flash
  size: 0x6e0000
mcuboot:
  address: 0x0
  end_address: 0x10000
  region: flash_primary
  size: 0x10000
mcuboot_pad:
  address: 0x10000
  end_address: 0x10200
  region: flash_primary
  size: 0x200
mcuboot_primary:
  address: 0x10000
  end_address: 0xe4000
  orig_span: &id001
  - mcuboot_pad
  - app
  region: flash_primary
  size: 0xd4000
  span: *id001
mcuboot_primary_1:
  address: 0x0
  device: flash_ctrl
  end_address: 0x40000
  region: ram_flash
  size: 0x40000
mcuboot_primary_app:
  address: 0x10200
  end_address: 0xe4000
  orig_span: &id002
  - app
  region: flash_primary
  size: 0xd3e00
  span: *id002
mcuboot_secondary:
  address: 0x0
  device: IS25LP_
  end_address: 0xd4000
  region: external_flash
  size: 0xd4000
mcuboot_secondary_1:
  address: 0xd4000
  device: IS25LP_
  end_address: 0x114000
  region: external_flash
  size: 0x40000
EMPTY_1:
  address: 0x114000
  device: IS25LP_
  end_address: 0x120000
  region: external_flash
  size: 0xc000
mcuboot_primary_2:
  address: 0x120000
  device: IS25LP_
  end_address: 0x160000
  region: external_flash
  size: 0x40000
mcuboot_secondary_2:
  address: 0x160000
  device: IS25LP_
  end_address: 0x1a0000
  region: external_flash
  size: 0x40000
otp:
  address: 0xff8100
  end_address: 0xff83fc
  region: otp
  size: 0x2fc
pcd_sram:
  address: 0x20000000
  end_address: 0x20002000
  region: sram_primary
  size: 0x2000
ram_flash:
  address: 0x40000
  end_address: 0x40000
  region: ram_flash
  size: 0x0
rpmsg_nrf53_sram:
  address: 0x20070000
  end_address: 0x20080000
  placement:
    before:
    - end
  region: sram_primary
  size: 0x10000
settings_storage:
  address: 0xf0000
  end_address: 0x100000
  region: flash_primary
  size: 0x10000
sram_primary:
  address: 0x20002000
  end_address: 0x20070000
  region: sram_primary
  size: 0x6e000
Related