打印

为什么写K9F1G08只能写入520个正确的字符?

[复制链接]
2668|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1dqmoon|  楼主 | 2009-10-4 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用如下程序来写的, 程序是从SJF2440里拷出来用的.

#define NF_WAITRB()      {while(!(rNFSTAT&(1<<0)));}
           //wait tWB and check F_RNB pin.

static int NF_WritePage(U32 block,U32 page,U8 *buffer,U8 *spareBuf)   
{   
    int i,j;   
    U32 blockPage=(block<<6)+page;   
    U8 *bufPt=buffer;   
   
    NF_nFCE_L();
    //NF_CLEAR_RB();   
    NF_CMD(0x0);   
    NF_CMD(0x80);           // Write 1st command   
    NF_ADDR(0);             // Column A[7:0]=0   
    NF_ADDR(0);             // Column A[11:8]=0   
    NF_ADDR(blockPage&0xff);        // A[19:12]   
    NF_ADDR((blockPage>>8)&0xff); // A[27:20]    //   
      
   
    for(i=0;i<2048;i++)   
    {   
        if(*bufPt!=gImage_480272[i])     // 这里这段用来证明参数传递过程中没发生错误
        {
            Uart_Printf("error\n");
        }
        NF_WRDATA(*bufPt);    // Write one page to NFM from buffer  
        bufPt++;
    }     
   
    if(spareBuf!=NULL)   
    {   
    for(i=0;i<64;i++)   
    {   
        NF_WRDATA(spareBuf[i]); // Write spare array(ECC and Mark)   
    }   
    }
   
    NF_CMD(0x10);   // Write 2nd command   
      
    Delay(90);       //tWB = 100ns.     
   
    NF_WAITRB();    //wait tPROG 200~500us;   
   // NF_DETECT_RB();
   
    NF_CMD(0x70);   // Read status command      
      
    Delay(1);       //twhr=60ns   
      
    if (NF_RDDATA()&0x1) // Page write error   
    {      
        NF_nFCE_H();   
    Uart_Printf("[PROGRAM_ERROR:block#=%d]\n",block);   
    NF_MarkBadBlock(block);   
    return 0;   
    }   
    else   
    {   
        NF_nFCE_H();   
    #if (WRITEVERIFY==1)   
    //return NF_VerifyPage(block,page,pPage);      
    #else   
    return 1;   
    #endif   
    }   
}


调试时发现, 一次写2k的字符时, 只有前 512+8 个字符是正确的, 其他字符写进的都是0, 而且不管怎么改,怎么延时都不起作用.

请教一下这是为什么啊.

相关帖子

沙发
rockos| | 2009-10-6 11:22 | 只看该作者
晕~~我当时给一家HK公司准备S3C2413时bios也遇到过相同的问题,后来没有仔细分析原因。

最终是用仿真器和bios代码通过USB下载并烧写bios的。

使用特权

评论回复
板凳
1dqmoon|  楼主 | 2009-10-6 21:32 | 只看该作者
我写K9F1208的时候没有问题, 但换到K9F1G08就不行,
期待高手回答~

使用特权

评论回复
地板
cool_coder| | 2009-10-6 21:47 | 只看该作者
我也碰到过类似情况,每块只有第一页能正常写入
期待答案

使用特权

评论回复
5
古道热肠| | 2009-10-10 11:21 | 只看该作者
检查一下地址位吧,1G08与5608地址结构有差别的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

253

帖子

0

粉丝