Hi,
I tried to download 1MB program on winbond W25Q128JVFM external flash through LPC54018 microcontroller using ULINK2 debugger (Platform: Keil microvision IDE). But the debugger failed to download the code with "Erase failed" or "Erase done. Programming failed" or "Content mismatch error" such error messages. Here i have attached xip_debug.ini file and linker script file for reference.
xip_debug.ini
_WDWORD(0x40000200, 0x02783); /* Enable IOCON SPIFI clock */
_WDWORD(0x4000105C, 0x00000326); /* PIO0_23 SPIFI_CSN */
_WDWORD(0x40001060, 0x00000326); /* PIO0_24 SPIFI_IO(0)*/
_WDWORD(0x40001064, 0x00000326); /* PIO0_25 SPIFI_IO(1)*/
_WDWORD(0x40001068, 0x00000326); /* PIO0_26 SPIFI_CLK */
_WDWORD(0x4000106C, 0x00000326); /* PIO0_27 SPIFI_IO(2)*/
_WDWORD(0x40001070, 0x00000326); /* PIO0_28 SPIFI_IO(3)*/
_WDWORD(0x40000630, 0x00000010); /* Enable FRO HF power */
_WDWORD(0x40000500, 0x40A65769); /* Set FRO 96Mhz */
_WDWORD(0x400002A0, 0x00000003); /* SPIFI clock set to FRO */
_WDWORD(0x40000390, 0x00000000); /* SPIFI clock div to 1 */
_WDWORD(0x4008001C, 0x10); /* SPIFI reset */
_WDWORD(0x40080000, 0x600FFFFF); /* SPIFI init */
_WDWORD(0x40080018, 0x0B810000); /* SPIFI CMD read */
LPC54018_spifi_flash.scf
#if (defined(XIP_IMAGE))
#define m_interrupts_start 0x10000000
#define m_interrupts_size 0x00000200
#else
#define m_interrupts_start 0x00000000
#define m_interrupts_size 0x00000200
#endif
#if (defined(XIP_IMAGE))
#define m_text_start 0x10000200
#define m_text_size 0x00FFFE00
#else
#define m_text_start 0x00000200
#define m_text_size 0x0002FE00
#endif
#if (defined(XIP_IMAGE))
#define m_data_start 0x00000040
#define m_data_size 0x0002FFC0
#else
#define m_data_start 0x20000000
#define m_data_size 0x00028000
#endif
#define m_usb_sram_start 0x40100000
#define m_usb_sram_size 0x00002000
Can anyone suggest a solution to download code on external flash memory?