I'm using custom board with RT1050 and MT25QL512 flash memory.
our flash memory(MT25QL512) supports both 3-byte addressing mode and 4-byte addressing mode.
And for accessing full area(64MB) of flash memory, I should use 4-byte addressing mode
Now, when I use flash memory with 3-byte addressing mode, our board work well to boot XIP with code as below.
const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally,
.csHoldTime = 3u,
.csSetupTime = 3u,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_100MHz,
.sflashA1Size = 64u * 1024u * 1024u,
.lookupTable =
{
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(MODE8_SDR, FLEXSPI_4PAD, 0x10, DUMMY_SDR, FLEXSPI_4PAD, 0x08),
FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_4PAD, 0x04, STOP, FLEXSPI_1PAD, 0x00)
},
},
};
But when I changes our flash configuration into 4-byte addressing mode and modify lookupTable as below, our board does't work to boot XIP
.lookupTable =
{
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEC, RADDR_SDR, FLEXSPI_4PAD, 0x20),
FLEXSPI_LUT_SEQ(MODE8_SDR, FLEXSPI_4PAD, 0x10, DUMMY_SDR, FLEXSPI_4PAD, 0x08),
FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_4PAD, 0x04, STOP, FLEXSPI_1PAD, 0x00)
},
How can I fix it?
You can also try this tool, with this tool, You can flash bare image into various boot devices easily and don't need to care about headers (ivt, boot data...)
Helllo,
Could you tell me if you set it to work with the 4-byte adressing mode, since it seems that the memory works with 3-byte adressing by default.
BR,
Aldo.
Yes, it works with 3-byte addressing by default.
So I set it to work with 4-byte addressing mode by setting non-volatile configuration register.
And it work well in modified qspi polling example supported by SDK. I only changed LUT table.
I applied some of table I used as mentioned above, but It doesn't work to boot XIP.