Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

DM355 NAND Partitions

From Texas Instruments Wiki
Jump to: navigation, search

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.