由于三星的MLC flash 型号为K9G8G08U0A已经停产,可能有些朋友会使用K9GAG08U0D进行替换,由于两个flash的页大小不一样(K9G8G08U0A页大小是2KB,K9GAG08U0D页大小是4K),在烧录NK的时候有些地方要注意一下,下面是s3c6410 WINCE6.0 MLC版本的BSP包的修改方法
nand.cpp文件的WriteRawImageToBootMedia函数
第一个地方
#ifdef NAND_4K if (SECTORS_PER_PAGE == 8) dwNumPage+=2; // page No. 0 and 1 use only 2KByte/Page, so add 2 page. #else if (SECTORS_PER_PAGE == 8) dwNumPage++; // page No. 0 and 1 use only 2KByte/Page, so add 1 page. #endif
#ifdef NAND_4K if (dwPage < 4 || IS_SLC) { nSctBitmap = 0xf; nBufCnt = BYTES_PER_SECTOR*4; } #else if (dwPage < 2 || IS_SLC) { //nSctBitmap = 0xf; //nBufCnt = BYTES_PER_SECTOR*4; if(BYTES_PER_MAIN_PAGE == 2048)//for 2Kpage { nSctBitmap = 0xf; nBufCnt = BYTES_PER_SECTOR*4; } } #endif
#ifdef NAND_4K if (IS_MLC && dwPage >= 4 && dwPage < 10) dwPage = 10; //for 8K Stepping stone #else if(BYTES_PER_MAIN_PAGE == 2048)//for 2Kpage { if (IS_MLC && dwPage >= 4 && dwPage < 10) dwPage = 10; //for 8K Stepping stone } #endif