由于三星的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