I've been working with custom hardware derived from the iMXRT1060EVK which boots from QuadSPI IS25LP064 (same as EVK). For our application, we need more boot flash, so on one of the boards we swapped out the IS25LP064 for IS25LP01G. This forces me to get a better grip on the evkmimxrt1060_flexspi_nor_config.c that comes with the SDK...
const flexspi_nor_config_t qspiflash_config = {
.memConfig = {
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClksrc=kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_100MHz,
.sflashA1Size = 8u * 1024u * 1024u,
.lookupTable = {
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
},
},
.pageSize = 256u,
.sectorSize = 4u * 1024u,
.blockSize = 256u * 1024u,
.isUniformBlockSize = false,
};
Is there any text/document that explains the LUT in decent detail?
Thanks to some good answers on the forum I've gained some insight, but still can't boot with this new (larger but compatible) device. For example, in this post it explains that the 0x18 indicates a 24-bit address. It also mentions that 0x20 is used for larger addresses (32-bit such as mine); but where did that information come from? I've read through section 9.6.3.1 (FlexSPI Configuration Block) as well as the LUT section (27.5.7) in the reference manual, but can't find that level of detail. What am I missing?
UPDATE:
Is the text in section 27.5.8 (Programmable Sequence Engine) the only thing available with regard to describing the Instruction structure (OPCODE|NUM_PADS|OPERAND) of LUT entries?
All I want to do is update evkmimxrt1060_flexspi_nor_config.c to allow me to boot with the IS25LP01G (instead of the IS25LP064); after 8-10 hours of digging I've made very little progress.