关于F429例程中 nandflash操作的几点疑问,请大神解答,重赏

2019-07-20 02:24发布

1 底层nand.c文件 NAND_ReadPage和NAND_WritePage 函数中有这么几句话[mw_shl_code=c,true]mw_shl_code=c,true]eccnum=NumByteToRead/NAND_ECC_SECTOR_SIZE;
eccstart=ColNum/NAND_ECC_SECTOR_SIZE;
p=pBuffer;
for(res=0;res<eccnum;res++)
{
FMC_Bank2_3->PCR3|=1<<6;
for(i=0;i<NAND_ECC_SECTOR_SIZE;i++)
{
*(vu8*)pBuffer++ = *(vu8*)NAND_ADDRESS;
}       
while(!(FMC_Bank2_3->SR3&(1<<6)));
nand_dev.ecc_hdbuf[res+eccstart]=FMC_Bank2_3->ECCR3;
FMC_Bank2_3->PCR3&=~(1<<6);
}
i=nand_dev.page_mainsize+0X10+eccstart*4; [/mw_shl_code]
其中eccstart = ColNum/NAND_ECC_SECTOR_SIZE;是不是有点问题,ColNum难道不需要512字节对其嘛,如果是从一页的任意列地址进行ECC的话那和原来的ECC校验值岂不是对应不上。
2 FTL层ftl.c文件的FTL_CreateLUT函数中有如下判断
[mw_shl_code=c,true]for(i=0;i<nand_dev.block_totalnum;i++)
    {
        if(nand_dev.lut>=nand_dev.block_totalnum)
        {
            nand_dev.valid_blocknum=i;
            break;
        }
    }
    if(nand_dev.valid_blocknum<100)return 2;[/mw_shl_code]
我认为这种判断有BUG。分析如下:当调用FTL_Format后,前93%的好块(假设数量为n)都被标记了逻辑号,并且逻辑号从0连续递增。那么LUT表建立后,前n个元素都赋值为对应的物理块号,第n+1个元素值为0xFFFF,这种判断方法是没有问题的。nand_dev.valid_blocknum = n。但是在FTL_CopyAndWriteToBlock函数中,有如下代码
[mw_shl_code=c,true]if(temp)                                                       
                                {
                                        FTL_BadBlockMark(unusedblock);       
                                        FTL_CreateLUT(1);                               
                                        goto retry;
                                }[/mw_shl_code]
如果unusedblock为坏块则调用FTL_CreateLUT(1);重新建立LUT表,如果unusedblock恰好小于100,则重建LUT表以后,LUT表原来值等于unusedblock的元素就等于0xFFFF了,并且该元素的索引肯定也是小于100的,因为没有进行格式化。因此这种判断的结果就是nand_dev.valid_blocknum<100。如果重新上电的话就会导致nand重新格式化,之前存的数据都丢了。
不知道我的分析是否正确,能否请大神解答一下我以上两点疑问,万分感谢!!!




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
03零三邓何芯桃
1楼-- · 2019-07-20 07:22
帮你顶帖问问
翼行园子
2楼-- · 2019-07-20 13:02
帮顶....
ufo13110008262
3楼-- · 2019-07-20 15:14
 精彩回答 2  元偷偷看……
ufo13110008262
4楼-- · 2019-07-20 20:37
顶啊。。
ufo13110008262
5楼-- · 2019-07-21 00:03
 精彩回答 2  元偷偷看……

一周热门 更多>