管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
我使用的板子是fmicro2440,因为要做nand boot启动,需要开发k9f2g08uom(每页2048byte,2048 block,每块64页)的驱动,目前碰到两个问题:
1,程序烧写不正确。使用sjf2440 软件烧写,然后读出,发现部分数据烧写部分不正确,sjf2440 软件是否会自动处理坏块?如果不能自动处理坏块,怎么烧写呢?自带的h-jtag无法烧写nandflash,用什么工具呢?
2,以下是我的读nandflash页的程序,之前我已经把文件烧写到nandflash的第一块,也就是第64页,我的问题是为什么读取到的数据每页开头都有若干0xff数据?这个数据确定不是spare 区的数据。
3,友善的BSP为什么没有这个驱动呢?
// 页读, U8 K9F2G_PageRead(U8 *Buf, U32 size, U32 PageIndex)
{
????U32 i;
????U32 PageAddr;
????U8??*DATA;
????PageAddr = PageIndex<<12;
????if(Buf != NULL)
????{??
??????????
????????NF_nFCE_L();
????????NF_CLEAR_RB();
????????
????????NF_CMD(K9F2G_PGAEREAD1);????????????????
????????NF_ADDR((PageAddr>>0)&0xFF);
????????NF_ADDR((PageAddr>>8)&0x0F);
????????NF_ADDR((PageAddr>>12)&0xFF);
????????NF_ADDR((PageAddr>>20)&0xFF);
????????NF_ADDR((PageAddr>>28)&0x01);
????????NF_CMD(K9F2G_PAGEREAD2);????
????????NF_DETECT_RB();
????
????????for(i=0; i<10; i++);
????????for(i=0; i<size; i++)
????????{
??????????Buf
= NF_RDDATA8(); // Read Cycle Time: 30ns(min)
????????}
????????
????????NF_nFCE_H();
????????
????????return TRUE;
????}
????
????return FALSE;
}
void CopyProgramFromNand(void)
{
?? U8 i= K9F2G_init();
?? //U32 startPageIndex,endPageIndex;
?? U32 j,m=0;
?? unsigned char *RAM = (unsigned char *)0x30100000;
?? for(j=64;j<100;j++)//从64页开始读取,每页读取2048个byte
?? {
????K9F2G_PageRead(RAM+m, 2048, j);
???????? m+=2048;
?? }
请高手帮忙解答下哈!对了,谁有该驱动呢,要有可否给我传个,不胜感激,meadow163@163.com[ 此帖被meadow163在2010-04-07 16:01重新编辑 ]