Hello,
Hardware:
- i.MX8MQ (REV A0), custom board based on EVK design
- QSPI NOR: Micron MT25QL256A (32MB, 3.3V, Quad connected)
- BSP: Yocto Scarthgap, NXP BSP, U-Boot 2024.04 (u-boot-imx)
Goal: Boot the bootloader (SPL + ATF + U-Boot) from FlexSPI NOR flash.
Kernel and rootfs remain on eMMC.
What works:
- U-Boot (loaded to RAM via uuu SDP/SDPV) runs fine
- "sf probe" detects the flash correctly: mt25ql256a, 32 MiB
- U-Boot can read and write the flash reliably (verified with
read-back tests after "sf protect unlock")
- Image is built with IMXBOOT_TARGETS = "flash_evk_flexspi"
Flash layout (verified by reading back from the chip):
0x000000: FCFB header - "qspihdr check" reports
"Found boot config header in Q(F)SPI"
tag = 42464346, version = 56010000
0x001000: IVT - d1 00 20 41, entry = 0x007E1000,
boot_data = 0x007E0FE0, self = 0x007E0FC0
0x060000: U-Boot proper FIT (d00dfeed), matches
CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000
Problem:
With boot switches set to QSPI/FlexSPI boot and the USB cable
physically disconnected, the board does not boot. Nothing is
printed on the serial console (SPL banner never appears), and
the ROM falls back to serial download mode:
uuu -lsusb
2:1 MX8MQ SDP: 0x1FC9 0x012B NXP FLASH
BT_FUSE_SEL is not blown; boot configuration is done via GPIO
boot pins.
What I have already tried:
- Both header formats: scripts/qspi_header (c0ffee01 tag) and
scripts/fspi_header (FCFB tag). Fixed soc.mak so that
flash_evk_flexspi uses fspi_header with offset 0.
- Varying FCFB parameters: sflashA1Size, serialClkFreq (50MHz -> 20MHz),
dataSetupTime/dataHoldTime, sflashPadType
- "uuu -b qspi" (the official built-in script)
- "qspihdr update safe" and "qspihdr init
- Erasing the flash completely vs. writing the full image:
boot behaviour is essentially identical (SDP appears after
~1.6s vs ~1.8s), which suggests the ROM may not be reading
the flash at all.
Questions:
1. Does the i.MX8MQ Boot ROM support booting from serial NOR
flash over FlexSPI at all? The Reference Manual section I have
lists NAND flash and SD/MMC as boot devices, but I could not
find FlexSPI/QSPI NOR listed. i.MX8MM/8MN documentation seems
to describe it, but I am unsure about 8MQ.
2. If it is supported, what is the exact expected flash layout?
Should the IVT be at offset 0x400 or 0x1000 when an FCFB is
present at 0x0?
3. What is the correct BOOT_MODE / BOOT_CFG combination to select
FlexSPI NOR boot on i.MX8MQ?
4. Are there any known errata for REV A0 silicon regarding
FlexSPI boot?
Thank you.