We use Micron’s 8-bit NAND (MT29F16G08ABACA) on our board with AM3359. The NAND has a page size of 4096 bytes + 224 spare bytes. It is the only device on the GPMC bus, and the upper 8-bits of the GPMC data bus (GPMC_AD[15:8]) are not connected to anything. The device ID of the NAND is not listed in Table 26-14(Supported NAND Devices) of the AM3359 TRM but it is also mentioned that ROM can read the geometry on an I2C EEPROM (see excerpt below).
Reading NAND Geometry From I2C EEPROM
ROM supports a special boot mode called NANDI2C to support NAND devices whose geometry cannot be
detected by the ROM automatically using methods described in the previous section. If this boot mode is
selected, the ROM code tries to read NAND geometry from an I2C EEPROM. If the read is successful,
ROM code then proceeds to next steps of NAND boot, beginning with reading bad blocks information.
We booted our board from an SD card, wrote the correct NAND geometry of the device on the I2C EEPROM and successfully flashed the MLO and u-boot.img in 8-bit HW ECC mode. After power cycling the board without the SD card (SYSBOOT[4:0] = 1011, SYSBOOT[9] = 1) we could see a series of CCCCCCCC…… getting printed on the console. At bootup we verified that the ROM is reading the NAND geometry from the I2C EEPROM. We are trying to figure out why the ROM code does not execute the MLO and u-boot.img that we flashed?
We looked into the issue further by building a MLO/u-boot that does not initialize the GPMC and just read the register settings assigned by ROM code at bootup from an SD card. Below are some of the GPMC register settings we read:
gpmc config1 0x00401910
gpmc config2 0x001e1e00
gpmc config3 0x001e1e00
gpmc config4 0x16051807
gpmc config5 0x00151e1e
gpmc config6 0x16000f80
gpmc config7 0x00151e1e
Bits 13-12 of GPMC Config1 indicates the Devicesize. In the above settings ROM code is defaulting to 16-bit device size. It appears like ROM code does not use the 8-bit setting we indicated in the EEPROM.
We use the u-boot and kernel from the ti-sdk-am335x-evm-06.00.00.00-Linux-x86-Install.
u-boot: u-boot-2013.01.01-psp06.00.00.00
kernel: linux-3.2.0-psp04.06.00.11
Questions:
- Is the 8-bit NAND flash with a page size of 4096 bytes + 224 spare bytes supported by AM335x ROM code?
- Do we need to update the u-boot and kernel to support the NAND we are using? If yes, What and Where to get the updates?
- If the NAND were are using is not supported, what 8-bit NAND page size + spare bytes do you recommend?