尊敬的工程师您好,我遇到了一个有关nandflash烧写程序出现坏块的棘手问题。我是用的是C6657芯片,nandflash使用的是S34MS01G。在通过load memory加载bin文件之后,DSP程序在向nandflash写入数据时报错出现坏块。但我更换了新的nandflash芯片却依然提示存在坏块。其中nandflash的坏块检测机制是将写入的数据进行回读对比,若出现不一致时,则认为是坏块,若全部一致,则认为是正常,并烧写成功。请帮忙给出出现该问题的原因和解决思路。
尊敬的工程师您好,我遇到了一个有关nandflash烧写程序出现坏块的棘手问题。我是用的是C6657芯片,nandflash使用的是S34MS01G。在通过load memory加载bin文件之后,DSP程序在向nandflash写入数据时报错出现坏块。但我更换了新的nandflash芯片却依然提示存在坏块。其中nandflash的坏块检测机制是将写入的数据进行回读对比,若出现不一致时,则认为是坏块,若全部一致,则认为是正常,并烧写成功。请帮忙给出出现该问题的原因和解决思路。
您好,
写入程序是TI的示例代码吗?
请参考 TMS320C6657: NANDFLASH curing burn program, read back register gets stuck - Processors forum - Processors - TI E2E support forums 帖子中产品线专家Shankari G的测试过程。
感谢你的关注和回答。
1)写入的程序不是TI的示例代码,是我的应用程序,是使用裸机程序通过DSP将DDR3中的数据搬移到nandflash中,但是在搬移完成之后,对所搬移的数据回读检测时出现了错误,检测到回读的值与写入的值不一致。我尝试了更换nandflash芯片,但两个芯片检测的结果是一样,都是同样的地址回读的值不一致。所以觉得不是nandflash芯片的问题,可能是其他原因导致的,但现在没有任何头绪
/* Compare the data read with data programmed */
for (i = rPos; i < rLen; i++)
{
if (nandWriterInfo.readData[i] != nandWriterInfo.writeData[i])
{
printf ("Failure in block %d, at byte %d, (at byte %d in the data file) expected 0x%08x, read 0x%08x\n",
block, i, rPos, nandWriterInfo.writeData[i], nandWriterInfo.readData[i]);
if (swap_byte) free (scrach_block);
return (FALSE);
}
}
2)我理解Shankari G先生表示的思想,我想这个和我遇到的问题还不太一样,我这么理解。
您好,
当把相应的bin文件加载到0x0c00000和0x8000000意味着什么
您确认写入这个地址? 根据数据手册Table 6-63. Memory Map Summary ,这个地址不是memory.