NAND support for iMX28 (BSP version: WCE600_10.08.02_SDK.msi)
The detail steps for me to support the 128MB SLC NAND NAND01GW3B2CNb:
1. Catalog -> iMX28-EVK-PDK1_9-Monility -> Third Party -> BSP -> Freescale i.MX28 EVK PDK1_9: ARMV4I -> Device Drivers -> SD Controller
remove "SSP2 SDHC"
2. Catalog -> iMX28-EVK-PDK1_9-Monility -> Device Drivers -> Storage Devices -> MSFlash Drivers
select "Flash MDD"
3. Visual Studio 2005 menu: Project -> iMX28-EVK-PDK1_9-Mobility Property ...
Configuration Properties -> Environment
remove "imgsdmmc"; add "imgnand" and set value to 1.
4. BSP code, modify file “WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_FSL_V2_PDK1_9\NAND\INC\NANDTYPES.h”, data structure NandChipInfo ChipInfo[], added the followed codes:
//NAND01GW3B2CNb
{
{NAND, 1024, 2048 * 64, 64, 2048}, //FlashInfo fi;
{0x20, 0xF1, 0x00, 0x1d}, //BYTE NANDCode[NANDID_LENGTH]
3, //BYTE NumBlockCycles
5, //BYTE ChipAddrCycleNum
8, //BYTE DataWidth
1, //BYTE BBMarkNum
{0}, //BYTE BBMarkPage
6, //BYTE StatusBusyBit
0, //BYTE StatusErrorBit
64, //WORD SpareDataLength
0x70, //BYTE CmdReadStatus
0x00, //BYTE CmdRead1
0x30, //BYTE CmdRead2
0x90, //BYTE CmdReadId
0xff, //BYTE CmdReset
0x80, //BYTE CmdWrite1
0x10, //BYTE CmdWrite2
0x60, //BYTE CmdErase1
0xD0, //BYTE CmdErase2
{30, 20, 25, 6} //NANDTiming timings
},
5. BSP code, modify file "WINCE600\PLATFORM\iMX28-EVK-PDK1_9\SRC\INC\image_cfg.h”, modify IMAGE_BOOT_NANDDEV_RESERVED_SIZE as followed:
#define IMAGE_BOOT_NANDDEV_RESERVED_SIZE (DWORD)((DWORD)(70 * 1024 * 1024))