DM355 EVM supports Big Block NAND up to 2GB, both MLC and SLC technologies.
The production boards have 2GB SLC NAND chip - MT29F16G08FAA, with a block size of 128KB. The 2GB MLC NAND chip - MT29F16G08QAA, has a block size of 256KB. Both the NAND chips have a page size of 2K.
There are two chip selects required to program the NAND space (1GB each), thus the NAND driver in U-Boot and Kernel treat the NAND chip as two NAND devices.
A bad block table is maintained by the U-Boot, in the last two blocks of each NAND device (for each 1GB space). When U-Boot comes up for the first time on a new NAND device, it scans through the NAND space to identify bad blocks and creates the bad block table. This bad block table is consulted by both U-Boot and Kernel on any writes to the NAND space.
The Initial 16 blocks are allocated for the bootloader components - UBL, U-Boot and Environment space.
Block 1 through 7 : UBL descriptor and UBL
Block 8 through 9 : U-Boot descriptor
Block 10 through 14 : U-Boot
Block 15 : U-boot Environment variables
Note that extra blocks are allocated for the UBL and U-Boot to make sure there is at least one good block available for the corresponding descriptor and binary.
The U-Boot allows the user to upgrade itself into a new version. Based on the bootloader partition table above, U-Boot starts at the 10th block. So for SLC chips you should be using 0x140000 and for MLC chips you should be using 0x280000 as offsets during U-Boot upgrade from U-Boot.
For 2GB SLC NAND chip (MT29F16G08FAA):
tftp 0x80700000 u-boot-1.2.0-dm355_evm.bin
nand erase 0x140000 0x20000
nand write 0x80700000 0x140000 0x20000
For 2GB MLC NAND chip (MT29F16G08QAA):
tftp 0x80700000 u-boot-1.2.0-dm355_evm.bin
nand erase 0x280000 0x20000
nand write 0x80700000 0x280000 0x20000
The Kernel image can be loaded starting Block 16, which is at offset 0x200000 for SLC NAND chip and 0x400000 for MLC NAND chip. To avoid confusion, I recommend using 0x400000 for both the chips. 4MB space is allocated for the Kernel. The Kernel also creates MTD partitions for NAND flash components:
"bootloader": block 0 - block 14
"params": block 15
"kernel": 4MB starting block 16
"filesystem1": 512MB for the reduced filesystem (busybox based)
"filesystem2": Remaining ~1.45GB, could be used for the MV target filesystem
The "filesystem1" partition has been created to use a reduced filesystem. There is a known issue with YAFFS2 mount time. If a single filesystem with complete MV target filesystem, on each reboot it could take up to 15 mins to complete the mount process.