MikeK.

i.MX NAND BOOT - RESET command evaluation MX25, MX27, MX31, MX35, MX37, and MX51

Discussion created by MikeK. on Apr 13, 2012

Purpose:
Some NAND flash vendors (for example Micron) provide NAND flash devices that require a RESET command after a power on condition and prior to the first access (normally a read command). Historically, the i.MX NAND flash controller was based on the controller obtained from Samsung which, to no surprise, Samsung NAND flash devices did not require a RESET command.

The following depicts evalutions performed on several i.MX processors to determine whether or not the processor issues a reset command during NAND boot.
The RESET command is basically the command "0xFF" that is sent to the NAND flash device and a finite amount of time (denoted as tRST) is needed for the NAND flash to complete it's internal RESET operation.

To determine if a RESET command was sent, the data bus was probed along with the WE signal during NAND boot.
The i.MX processors evaluated are the MX25, MX27, MX31, MX35, MX37, and MX51.

i.MX NAND BOOT Findings:

MX25
Tested on silicon version 1.1 on the 3DS board.
-RESET Command was detected during NAND boot (both internal and external boot).
-RESET command to READ command (during boot): ~370ns

MX27
Tested on silicon version 2.0 on the ADS board.
-No RESET command was detected during "External" NAND boot.
-Internal NAND boot (this requires BOOT_INT, IROM_SUPPORT_EN, and ADDR_CYCLE[1:0] fuses to be blown).
The findings were interesting. It turns out that the NAND flash Controller (NFC) still performs a 2KB page read out of reset (with no RESET command), regardless of internal or external boot. For internal boot, this "first 2KB read" is a waste as later the ROM code issues a RESET command followed by another 2KB page read (hence the ROM performs the "proper" NAND flash read sequence). It appears that the first 2KB page read performed by the NFC is some kind of embedded hardware mechanism that always happens during NAND boot. This does not actually hurt the NAND flash, and in fact, for those NAND flash devices that require a RESET command, this is most likely ignored until the ROM takes over and issues the right sequence of commands.

It was verified that Redboot can boot from NAND when set to internal boot mode. Also, with HAB type fuses set to 001 (engineering mode) there was no special header requirement for Redboot, in other words, Redboot code did not need to be changed for internal boot from NAND with HAB type set to 001. So, no special work around is needed to boot from NAND flash devices requiring the RESET command - simply blow the fuses above for internal boot and make sure HAB type is 001 (which is should be unless the customer requires secure boot, which would require special software anyway).

MX31
Tested on silicon version 2.0 on the ADS board.
-No RESET command was detected during internal or external NAND boot.

MX35
Tested on silicon version 2.0 on the 3DS board.
-RESET Command was detected during NAND boot (both internal and external boot).
-RESET command to READ command (during boot): ~550ns

External boot findings: MX35 reads 2KB from NAND. From there, MX35 jumps to the NFC buffer to begin fetching instructions.

Internal boot: MX35 reads 3 sets of 2KB from NAND. Presumably the ROM copies this data and stores it to another location (internal RAM or DDR). Need to confirm if DCDs are required for internal boot.

MX37
Tested on silicon version 1.1 on the 3DS board.
-RESET Command was detected during NAND boot (both internal and external boot).
-RESET command to READ command (during boot): ~120us

MX51
Tested on silicon version 3.0 on the 3DS board.
-RESET Command was detected during NAND boot (internal only as external boot is no longer supported).
-RESET command to READ command (during boot): ~72us

Outcomes