基于nandflash的fatfs系统读写文件的问题

2019-07-20 01:39发布

我是移植原子哥的f767的例程,是能够对nandflash进行读写文件。不过我设定存储文件的数量(假设限制10个文件),就是如果我存储的文件超过限制个数,就将最新的文件数据覆盖了最旧文件的数据,我测试做了三十多个文件时,就是覆盖了三次数据,就出现了存储不了文件,也读取不了文件,result=f_open(&fil,name1, FA_READ);fr=f_open(&fil,path, FA_CREATE_ALWAYS | FA_WRITE);两个的返回值都是1。然后只有复位了才能读取目录和文件,但是就是写不了文件,只有将它格式化后就可以了。格式化后重复执行这操作,继续存记录和覆盖数据还是会出现同样的问题。请各位大神和原子哥看看什么问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
尘埃星
1楼-- · 2019-07-20 03:39
 精彩回答 2  元偷偷看……
尘埃星
2楼-- · 2019-07-20 05:51
问题解决了,因为我是用ucosiii系统的,所以在存储文件时增加一个临界区函数,就是将所有中断都关闭了,存完之后再退出临界区就没问题。我用回原子板子使用的MT29f408型号,发现就算没加临界区这部分的程序,存储也是没问题了,不过存储过多的文件会有部分文件丢失没存成功,添加这个临界区函数就没问题了。不过在删除所有文件时,都是还会出现漏删的文件,重新再删就没了。
xiehu2019
3楼-- · 2019-07-20 07:18
你好,我最近也在做这个,但是fatfs一直加不上去,总是返回错误13,不知道咋回事,能参考一下你的程序吗?感谢
xiehu2019
4楼-- · 2019-07-20 07:43
 精彩回答 2  元偷偷看……
xiaolangwa
5楼-- · 2019-07-20 10:26
与楼主遇到同样问题,使用f_open(&fil,path, FA_CREATE_ALWAYS | FA_WRITE);若覆盖相同名称的文件,则文件出错,也打不开,f_open返回值都是1,不知道怎么解决

一周热门 更多>