为什么在FatFs文件系统下写文件会出现这个问题?

2019-03-25 20:28发布

我把FatFs 移植到LPC1114上以后,给一个文件写内容:比如给SD卡里面的“ration.txt”文件写512个字母d,结果是在“ration.txt”里面出现了如下现象! (注意:文件头从下面字母g前面的一个空格开始)     g  T dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd   可以看出,字母d的数目不足512个,而且开头还有g,空格,T和一些符号! 请问这是怎么回事?   声明:1.经测试,读写一个扇区函数和多个扇区函数都能使用!            2.用diskio.c文件里面的函数查看SECTOR_SIZE = 512                                                              BLOCK_SIZE = 64                                                              SECTOR_COUNT = 3862528             用的是正品2G SanDisk卡!     谢谢!     下面这个图是我在写512个字母c出现的现象:   此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
zhaojun_xf
1楼-- · 2019-03-27 15:40
看了你并没有采纳我的建议,就是因为进入FATFS才会因为堆栈问题改变缓存。
richgood
2楼-- · 2019-03-27 16:31

请问怎么改堆栈?

 

谢谢!

 

zhaojun_xf
3楼-- · 2019-03-27 21:20

在启动代码中有,下面是根据向导改的,也可以直接到启动代码中进行修改。

1.jpg

richgood
4楼-- · 2019-03-27 22:18

非常感谢leang521和zhaojun_xf两位版主的帮助!

在下的问题已经解决了!

果然是STACK_SIZE搞的鬼!

 

 

在KEIL的启动代码中,默认的STACK_SIZE为512字节,而SD卡的扇区最小就是512,只一个Buffer就都占了,在加上其它一些数据,不重合才怪!改为2048以后,问题就解决了!

 

就这么个小动作,搞了一个星期!搞的我都快放弃FATFS呀!结果不是FATFS的问题!

 

再次感谢!高人呀!

 

 

 

[ 本帖最后由 richgood 于 2011-5-8 10:49 编辑 ]
yulri
5楼-- · 2019-03-28 02:15
 精彩回答 2  元偷偷看……
leijiayou
6楼-- · 2019-03-28 03:17
不错     标记

一周热门 更多>