OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5563|回复: 6

原子大大 关于 F767开发板的 FATFS实验

[复制链接]

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2017-3-29 11:27:19 | 显示全部楼层 |阅读模式
100金钱
本帖最后由 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; 也就是没有不一样的 。   ....那就怪了

@正点原子   紧急请求支援啊




HZ4mm_B.rar

382.71 KB, 下载次数: 99

字库

m1.rar

2.35 MB, 下载次数: 243

工程

最佳答案

查看完整内容[请看2#楼]

我在fatfs实验的基础上,添加几行代码,帮你验证了,测试是没问题的。 首先在test.c添加这两个函数: [mw_shl_code=c,true]u8 cpy_msg_show(u8* name,u8 pct,u8 mode) { if(mode&0X01)printf("\r\ncopy file:%s\r\n",name); if(mode&0X02)printf("file copyed:%d\r\n",pct); return 0; } u8 mf_file_copy(u8* src,u8* dst) { return exf_copy(cpy_msg_show,src,dst,0,0,0); }[/mw_shl_code] 如下图: 然后 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-29 11:27:20 | 显示全部楼层
我在fatfs实验的基础上,添加几行代码,帮你验证了,测试是没问题的。
首先在test.c添加这两个函数:
[mw_shl_code=c,true]u8 cpy_msg_show(u8* name,u8 pct,u8 mode)
{
        if(mode&0X01)printf("\r\ncopy file:%s\r\n",name);
        if(mode&0X02)printf("file copyed:%d\r\n",pct);
        return 0;
}

u8 mf_file_copy(u8* src,u8* dst)
{
        return exf_copy(cpy_msg_show,src,dst,0,0,0);       
}[/mw_shl_code]
如下图:
344.png
然后,将mf_file_copy函数,加入usmart控制。
然后下载这个代码。
然后,通过usmart,从sd卡,拷贝你的字库文件到nand,如下图:
344.png

然后,稍等一会即拷贝完成。
最后,下载usb读卡器实验。
从nand里面读取出来HZ4mm_B.fon,和sd卡的HZ4mm_B.fon对比,完全一模一样。
说明没有问题。
我的fatfs测试代码见附件: 实验42 FATFS实验_带文件拷贝.rar (3.25 MB, 下载次数: 284)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-29 12:39:15 | 显示全部楼层
这个可以参考下我们综合实验的实现方式。
我们综合实验,是可以拷贝SD卡文件到nand的。
另外,你试试:
方法1:
1,将NAND全部擦除。
2,重新格式化NAND。
然后在重新拷贝。

方法2:
直接使用USB读卡器实验,将文件从电脑拷贝到NAND,看出错不?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
 楼主| 发表于 2017-3-29 12:53:48 | 显示全部楼层
本帖最后由 simms01 于 2017-3-29 12:59 编辑
正点原子 发表于 2017-3-29 12:39
这个可以参考下我们综合实验的实现方式。
我们综合实验,是可以拷贝SD卡文件到nand的。
另外,你试试:

后来我查看 NAND 实验  

里面用FIL 来写 页面    但是写页面并没有对页面进行擦除就直接写了  是有地方擦除我没看到还是没擦除?


USB 读卡器中  对nand 盘进行格式化后 每次可用容量都不一样  是神马情况?
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
 楼主| 发表于 2017-3-29 13:10:18 | 显示全部楼层
正点原子 发表于 2017-3-29 13:05
我在fatfs实验的基础上,添加几行代码,帮你验证了,测试是没问题的。
首先在test.c添加这两个函数:
[mw ...

谢谢原子大大  我等下吃好饭 验证下 。麻烦你了  先出去吃个快餐回来
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-4-24 09:12:20 | 显示全部楼层
正点原子 发表于 2017-3-29 11:27
我在fatfs实验的基础上,添加几行代码,帮你验证了,测试是没问题的。
首先在test.c添加这两个函数:
[mw ...

学习下~~~~
回复

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-4
在线时间
10 小时
发表于 2017-5-5 11:25:15 | 显示全部楼层
本帖最后由 13F 于 2017-5-5 13:34 编辑

请教 原子大大
我下载了实验42 FATFS实验_带文件拷贝.rar
但文件从SD卡 拷贝到NANDFLASH 后, 文件的容量都是0 byte..
再从NANDFLASH 拷贝到SD卡,文件的容量都是0 byte..
例如: mf_file_copy("0:/test.jpg","2:/test.jpg")
这可能是哪里的错误?  板子是STM32F767


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 16:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表