Part Number: AM62D-Q1
Tool/software:
HIgh-level summary: From factory, AM62D does not boot over QSPI. The root cause is that the interface never sends the 0x6B command to read data from flash. The behavior is observed on both empty and valid, programmed flash. A workaround is switching to SPI boot, issuing an MCU_PORz, switching back to QSPI, and issuing another MCU_PORz. Once this workaround is applied, the processor boots as expected. Based on our limited data and soak time, the workaround appears to be persistent.
Occurrence rate: 100% (observed on first programming of all hardware, >100 boards)
I am a hardware engineer implementing AM62D on a custom board. The intended boot method is QSPI using CSn0 from Macronix NOR flash part MX66U2G45GXRI00. The observed behavior is that the processor cannot boot using QSPI boot mode. At minimum, the processor behaves this way if: 1) QSPI boot mode is set on first power up and all following resets/power cycles, or 2) serial NAND boot mode is set for any number of resets/power cycles and then changed to QSPI boot mode for any number of resets/power cycles. No amount of resets/power cycles in QSPI or NAND boot mode seems to prevent this behavior.
To be explicit, QSPI boot mode means BOOTMODE[15:0] = 0b0000 0000 0001 0011. Serial NAND boot mode means BOOTMODE[15:0] = 0b0000 0000 0000 0011.
Upon detailed investigation of a brand new board, I find that the QSPI boot mode never sends any read commands to get data from the flash. Per the AM62D TRM, the boot ROM should send a 0x6B (QREAD) command using 3-byte addressing followed by 8 dummy cycles. Per the flash datasheet, this command sequence is supported.
Here is the flash signal mapping for the following scope captures:
|
Signal |
Description |
|---|---|
|
D6 |
RESETn |
|
D5 |
CSn |
|
D4 |
DQ3 |
|
D3 |
DQ2 |
|
D2 |
DQ1 (MISO) |
|
D1 |
DQ0 (MOSI) |
|
D0 |
SCLK |
Here are the initial transactions on the QSPI interface upon release of MCU_PORz:

Each burst consists of 17 JEDEC ID reads (command 0x9F, RDID): 1 with SCLK=6.25MHz and 16 with SCLK=50MHz. The boot ROM never issues any read commands to the flash.
Switching to SPI boot mode, the interface behaves as expected. A 0x03 READ command is issued for address 0x000000. Since the flash returns all F's (empty), a second 0x03 READ command is issued for address 0x400000.

Then, upon switching back to QSPI boot mode, we observe that the 0x6B QREAD instruction for 3-byte address 0x000000 is now present!

My questions are as follows:
- What is the specific root cause for this behavior within the AM62D?
- What is TI's recommendation to ensure reliable boot throughout the lifetime of the product?