Hi
We’re having trouble getting our DM8168s to boot from NAND flash. The hardware platform is of our own design and it uses a rev 2.0 silicon DM8168 (DM8168BCYG2) and connects to an 8-bit ONFI-compliant 2Gbit SLC NAND Flash (Micron MT29F2G08ABAEAH4:E). The connection is very similar to the one shown in the SPRUGX8 reference guide, page 858 (figure 9-4) and we are using nCS0 for our chip select.
If we boot the board from UART then we can talk to the NAND flash just fine from uboot, we can write to and read from the flash and the data persists over power cycles without issue.
However, when we set the board to boot from NAND flash first (BTMODE[4:0] = “10010”) then we can’t seem to pull any boot code from the NAND and keep cycling through the boot options. The date code of the chip is 21AH9NW and the ROM code version is 0x00002101 with ROM code CRC of 0xD4D669FB as per page 2340/section 25.3.1.2 of the SPRUGX8 guide.
On closer inspection of exactly what is happening with the NAND interface on boot, we should expect the memory controller to first send a ‘reset’ command and then wait for the NAND flash to release the Ready/Busy line, indicating that it is ready for more commands. The reset command consists of sending the following: CS low, CLE high, ALE low, RE high, WE low and data bus value of “FF”. Wait for the setup time of the flash and then drive WE high to load in the command followed by CS high to deselect the flash.
What we actually see is CS going low with RE and CLE going high then some 80ns later, WE goes low. 280ns after that, WE goes high, then RE goes high after another 30ns. Finally CS and CLE go high after another 100ns. All this time, ALE and WP and all data bits are low and Ready/Busy is high. This doesn’t correspond to any valid NAND flash command or address transaction and since it’s not a reset command, the NAND doesn’t reset and the ready/busy line doesn’t change. It looks like the DM8168 gives up and moves on to the next boot mode which is NAND again. We don’t have an I2C EEPROM containing NAND data, so it tries the same thing again then moves onto SPI (not fitted) and then UART which works if we send it data.
Could you please confirm if there are any known issues with NAND boot on DM8168 Rev 2.0 devices which might cause this behaviour?
Any ideas on what to try in order to make this work?
Thanks
James.