OpenEdv-开源电子网

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

FATFS文件系统遇到问题

[复制链接]

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
发表于 2014-7-10 11:13:52 | 显示全部楼层 |阅读模式
5金钱
我最近在调用fread函数的时候出现了问题, 因为需求问题,需要读取文件内容(是一张BMP图片)到nand 中,因为nand是以页的方式读写的,我使用的nand一页大小是2112(2KB +62)Byte;所以要需要用到大小为2048的字符型数组(假设为A[2048]),这个时候问题来了,我在调用fread()函数的时候,一次读取2048个字节到数组A[2048]中,但是发现前面36个字节不是我想要的内容,36个字符内容来源无从考证(已经用f_lseek()函数跳过了头部54个字节,并且此处用了Winhex打开文件做了仔细的对比); 
如果A数组大小为1024的话,内容是一致的; 
然后就接着修改,增加了一个大小为1024的字符型数组(假设为B[1024]),分两次调用fread()函数,每次读取1024字节到B[1024]数组中,然后在再把B数组中的内容copy到A中,这个时候问题出现了,在第一次调用fread()语句结束后,A[2048]数组中的512~530字节内容被莫名的修改(注意:此处刚刚执行完fread()函数,还没用调用memcpy()函数,而且两个数组都初始化为0的),然后调用memcpy()内容正常,在第二次调用完fread()语句的时候,A[2048]数组中的508~512字节又被莫名的改掉了(注意:此处还是没有调用任何与A[]数组有关的函数); 
接着修改, 又增加一个字符型数组,运行到完fread()函数的时候,发现B[1024]数组根本没有任何内容考出; 
好郁闷。。。。。不知道是不是哪里设置出现了问题。。
下面就是出问题的代码:

部分代码如下: 
uint8_t A[2048]={0}; 
uint8_t B[1024]={0};//第二次修改增加的 
//uint8_t Buf[512]={0};//第三次修改增加的 
for(i=0;i<2;i++) 

f_read(fsrc,B,1024,&br); 
memcpy(A+1024*i,B,1024); 
memset(B,0,sizeof(B)); 
}

任何一件事情,只要心甘情愿,总是能够变得简单。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-10 23:27:25 | 显示全部楼层
你这都是局部变量么???
没死机?
另外,NAND你格式化了么?
貌似FATFS,很少用来读NAND,nand有另外一套文件系统,要带坏块管理的才行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2014-1-22
在线时间
43 小时
 楼主| 发表于 2014-7-11 14:36:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我读的文件都是从SD卡中读出来的,想着从SD卡中读取图片存到NAND中,但是上面运行的代码根本还没涉及到nand呢,只是从SD卡读取数据到数组中,然后再利用nand文件系统把数据从数组写到Nand中,
现在就是读SD卡出现了小问题, 而且我试着直接从SD卡按行读取BMP图片数据,是正确的,图片也正常显示了, 想着是不是定义的数组大小问题
任何一件事情,只要心甘情愿,总是能够变得简单。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-11 23:18:17 | 显示全部楼层
回复【3楼】爱不孤单:
---------------------------------
那你既然能读SD,图片显示也正常了,怎么又说是SD 的问题?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 06:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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