本帖最后由 simms01 于 2017-3-29 12:38 编辑
在开发板 FATFS实验里面
我将一个文件(是个字库) 从sd卡 复制到 NANDFLASH ,但是发现复制完成后 部分数据是错误的(大约有一半的数据是错的 每次都不一样).
而且每次复制 读出错误的数据 位置都不一样 。 有时候 “广”字的数据了 再复制一次 “广”字对了 州字又错了
经过查找 发现从sd卡读出是正确的 写入nand后再读出是错误的。(错误的时候 读出来全部是0xff 以前一般只在坏块的情况才这样 )
在fatfs章节里面提到
NAND FLASH 与文件系统的读写接口,就是采用上一章介绍的 FTL 层函数(FTL_ReadSectors
和 FTL_WriteSectors 函数)来实现的,有了 FTL 层,我们就可以像访问 SD 卡一样,访问 NAND
FLASH,而无需担心坏块和磨损均衡问题。
那应该不是坏块的问题。
我复制文件是直接采用了 fopen 后得到fsize ,然后读写到buf 然后用以下循环写入
while(res==0)//开始复制
{
res=f_read(fsrc,fbuf,8192,(UINT*)&br); //源头读出8192字节
if(res||br==0)break;
res=f_write(fdst,fbuf,(UINT)br,(UINT*)&bw); //写入目的文件
if(res||bw<br)break;
}
请原子大大看看是什么问题 调试2天多了 。
附件的是我复制的字库文件。以及工程
继续 调用例程 nandflash 实验 对key1 修改 对全盘nand进行FIL 读写校验测试 ,没有发现错误
for (i=0;i<512000000/512;i++)
{
FTL_WriteSectors(backbuf,i,NAND_ECC_SECTOR_SIZE,1);
FTL_ReadSectors(buf,i,NAND_ECC_SECTOR_SIZE,1);//读取扇区
for (a=0;a<NAND_ECC_SECTOR_SIZE;a++)
{
if (backbuf[a]!=buf[a])
{
errsum++;
}
}
LCD_ShowxNum(30,210,i,20,16,0);
LCD_ShowxNum(30,410,errsum,20,16,0);
// LCD_ShowString(30,210,200,16,16,i);
}
最后 errsum=0; 也就是没有不一样的 。 ....那就怪了
@正点原子 紧急请求支援啊
一周热门 更多>