I'm trying to get a custom i.MX6Q board to boot from NAND without any luck.
The NAND is a Micron MT29F2G08ABAEA:
- ONFI 1.0 compliant (async)
- x8 device
- Page size: 2112 bytes (2048 + 64 oob)
- Block size: 64 pages (128K + 4K)
- Plane size: 2 planes x 1024 blocks per plane
- Device size: 2Gb: 2048 blocks (256MB)
We have the following pads from the i.MX6Q connected to the IO signals on the NAND:
IMX6Q_NANDF_D[0:7] <-> IO[0:7]
IMX6Q_NANDF_CS0 <-> CE#
IMX6Q_NANDF_ALE <-> ALE
IMX6Q_NANDF_CLE <-> CLE
IMX6Q_NANDF_R/B <-> R/B
IMX6Q_NANDF_WP <-> WP
IMX6Q_NANDF_SD4_CMD <-> RE#
IMX6Q_NANDF_SD4_CLK <-> WE#
(As this is an asynchronous NAND there is no DQS signal connected)
The am able to boot via USB/OTG read/write the NAND from my bootloader as well as my Linux kernel/rootfs and have successfully run 1000's of iterations of the linux nandtest app without any failures and am using the kobs-ng (v1.3) utility from the Freescale SDK to program my uboot to a 10MB /dev/mtd0 partition. I am usbing the uboot 'bmode' command to change the boot mode and soft-reset the device to successfully boot to usdhc3 and SATA yet the same method is not working for booting to NAND. I did find that I needed to blow the BT_FUSE_SEL eFUSE in order to use uboot's bmode command (otherwise the boot ROM would always boot to the serial downloader). I believe the correct setting for BOOT_CFG[1:4] for my configuations (64 pages per block, 5 addr cycles) is 0x82020000 however I have also tried other various BOOT_CFG's without success.
Looking at the signals with a scope I find that when I boot my uboot (which has NAND support) over USB/OTG serial-downloader I see a flurry of NAND_CS0 activity as expected when the nand driver is identifying the device. Yet when I attempt to boot to NAND I only see 2 sets of 4 CS0 assertions over a 10ms period. I then notice that while I still see the 0x15a2:0x0054 Freescale device on my host PC connected to the i.MX6 USB OTG I can not boot over it, which makes me think the i.MX6 boot ROM is 'hung'. Because I'm seeing so little chip-select activity I can't believe this has anything to do with the contents of my NAND device but rather something to do with how the boot ROM is configured.
Does anyone have any advice as to what can be going wrong here?