This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3359: ROM code issue with NAND

Part Number: AM3359

Hi,
We have a custom board using the AM3359 processor and a NAND flash as a boot device. The second boot device is a SD card and we have chosen the following boot sequence:

1. UART0
2. XIP
3. MMC0
3. NAND

The NAND flash is a MT29F2G08ABAEAWP-IT from Micron. With this setup we haven’t encountered any problems so far.

Now our EMS partner has suggested using a different flash device (MX30LF2G18AC-TI) because the Micron part is hard to source. After getting samples of the second source and replacing the flash on one of our processor boards, it appears as though the ROM boot loader does not work properly anymore: Sometimes the ROM boot loader hangs after trying to boot from the UART0. My guess is that this is because the boot loader assumes that there is an XIP boot device.

The issue appears randomly. The probability seems to depend on the flash content: When the flash is empty, it works most of the time, when the flash is programmed most of the time it doesn't work. In the cases where it works the replacement flash works perfectly. We can then read write, erase and boot from the flash and the system recognizes the correct vendor ID, type and size.

My concern is now, that this problem can occur with any flash device. I don’t know the interface protocols in detail, but I can image that strange things can happen when a NAND flash sees NOR flash commands at its interface. So maybe we have just been lucky that the issue hasn’t been observed so far.

Questions:
-       Is there a list of compatible flash devices that have been tested with the ROM boot loader of the AM335x processor?

-       Is there workaround other than changing the boot sequence to prevent this issue

Thank you for your reply!

Best regards

Reto

  • There is no list of tested devices. If the NAND is ONFI compliant it should work. Also, the Initialization chapter in the TRM has a list of supported NAND devices based on Device ID/Bus Width/Page Size.

    Steve K.
  • Thank you for your answer!

    The problem is not that the NAND does not work or is not compliant. The problem is that the ROM boot loader thinks that the NAND Flash is an XIP device and as a result of this, the system hangs. When I change the boot sequence so that  the NAND flash is the first boot device, everthing works fine!

    Can you please tell me where I can find this list in the TRM, I was not able to find it.

    Best regards

    Reto

  • It is in the Initialization chapter, Table 26-14. The table has supported NAND by Capacity/Device ID/Bus Width/Page Size.

    Steve K.
  • Are you still having problems?

    Steve K.
  • Steve,

    thank you for asking. Yes we still have these problems.

    Biser writes in this thread  "Table 26-14 is used by the ROM code only if the NAND part is not ONFI compliant."  Since we are using ONFI compliant Flash devices, I don't think that this table is relevant for us. 

    The issue seems to depend on the flash device manufacturer. Micron (MT29F2G08ABAEAWP-IT) and ISSI (IS34ML02G084-TLI, IS34ML04G084-TLI) seem to work, Macronix devices (MX30LF2G18AC-TI, MX30LF4G18AC-TI, MX60LF8G18AC-TI) do not work if there is a XIP device in the boot sequence before the NAND flash. When we change the boot sequence so that the ROM boot loader tries the NAND device first everything works fine.

    I have found other threads describing the same issue and they all "solved" it with the workaround of changing the boot sequence.

    Regards
    Reto

  • Reto,
    The only workaround I can think of is changing the boot sequence.

    Steve K.