OpenEdv-开源电子网

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

fatfs移植,打开文件时返回FR_INVALID_OBJECT

[复制链接]

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
发表于 2013-8-14 17:31:27 | 显示全部楼层 |阅读模式
移植fatfs时,挂载没问题f_mount(0,fs0);返回0,打开文件res = f_open(filesrc,"0:/src.txt",FA_WRITE);(这个文件已在SD卡中),返回9,FR_INVALID_OBJECT。可能是什么原因?SD卡检测和读容量没有问题,ffconf.h中设置#define _USE_LFN 0,#define _CODE_PAGE 1(ASCII only)。这样设置后需要加什么像cc936.c这种转码文件吗?或者还需要什么设置?
我命由我不由天!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-8-15 00:37:34 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
确实是指针出了问题。我直接定义的指针就拿来用了。将指针filesrc作为res = f_open(filesrc,"0:src.txt",FA_OPEN_ALWAYS|FA_WRITE);的参数,因为filesrc只定义没给值,初值为0,进入函数f_open后有一句if (!fp) return FR_INVALID_OBJECT;,因为fp即是filesrc,为0,所以返后了9号错误。
若定义FIL filesrc;,再调用函数res = f_open(&filesrc,"0:src.txt",FA_OPEN_ALWAYS|FA_WRITE);,就会返回12错误,因为进入函数f_openc中的函数hk_mounted,里面有两句fs = FatFs[vol];if (!fs) return FR_NOT_ENABLED;,fs应该就是驱动器挂载的指针,即fs0,也是只定义没赋值,为0,所以返回12号错误。
我看原子哥的的例程,写的是f_mount(0,fs[0]);,fs[0]是指针,所以就想当然在自己的程序中直接用指针了,没注意到其实原子哥在exfuns.c中的函数exfuns_init中给数组fs分配了内存。
我命由我不由天!
回复 支持 3 反对 0

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-8-14 17:50:24 | 显示全部楼层
filesrc是指针吗?
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-8-14 17:56:09 | 显示全部楼层
回复【2楼】shihantu:
---------------------------------
是的。
我命由我不由天!
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-8-14 18:13:06 | 显示全部楼层
打开模式加上 FA_CREATE_ALWAYS 或 FA_OPEN_ALWAYS 试试。

FATFS的文件打开模式一直搞不太明白,也找不到详细的说明文档。只能看别人的代码自己参悟。
业余程序玩家。
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-8-14 19:33:35 | 显示全部楼层
回复【4楼】ofourme:
---------------------------------
加了FA_OPEN_ALWAYS之后也是这样,是路径的格式不对吗?我看到有些写的是"0:src.txt"。
我命由我不由天!
回复 支持 反对

使用道具 举报

41

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2013-8-1
在线时间
0 小时
发表于 2013-8-14 21:22:44 | 显示全部楼层
#define _CODE_PAGE 改成437试试
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-8-14 21:59:18 | 显示全部楼层
回复【6楼】yongyooh:
---------------------------------
还是不行,也是9号错误。
我命由我不由天!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-14 22:35:38 | 显示全部楼层
filesrc有没有分配内存?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-8-14 23:11:33 | 显示全部楼层
回复【8楼】正点原子:
filesrc有没有分配内存?
---------------------------------
应该是吧,f_open()第一句:if (!fp) return FR_INVALID_OBJECT;
业余程序玩家。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-7-20
在线时间
0 小时
发表于 2013-8-30 01:43:35 | 显示全部楼层
回复【10楼】风溪香士:
---------------------------------
请问下,你后来怎么解决的呢?
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-9-1 14:33:47 | 显示全部楼层
回复【11楼】zdh_hust:
---------------------------------
我是定义fs0变量,把他的地址&fs0作为f_mount(0,&fs0)的参数就可以了。
我命由我不由天!
回复 支持 反对

使用道具 举报

8

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2013-11-7
在线时间
23 小时
发表于 2014-7-25 11:46:50 | 显示全部楼层
回复【12楼】风溪香士:
---------------------------------
我同样出现了这个问题,f_open()第一句:if (!fp) return FR_INVALID_OBJECT;
可是再分配了f_mount(0,&fs0)之后还是不行,你是如何解决的,感觉描述的不清楚啊
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-8-13
在线时间
13 小时
发表于 2014-8-13 20:06:46 | 显示全部楼层
同求。。。。。。
回复 支持 反对

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2014-12-31
在线时间
10 小时
发表于 2015-5-27 11:22:04 | 显示全部楼层
一样问题,解决,谢谢
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-8-19
在线时间
12 小时
发表于 2017-1-11 13:01:06 | 显示全部楼层
一样问题,感谢楼主
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-2-16
在线时间
5 小时
发表于 2017-6-13 13:39:55 | 显示全部楼层
一样问题,谢谢楼主
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-10-31
在线时间
0 小时
发表于 2019-10-31 14:20:20 | 显示全部楼层
本帖最后由 j8zj8z 于 2019-10-31 14:22 编辑

读应该是 (FA_OPENEXTING | FA_READ)或者( FA_OPEN_ALWAYS|FA_READ), 写操作是(FA_CREATE_NEW|FA_WRITE)或者(FA_CREATE_ALWAYS|FA_WRITE),权限不同作用不同
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-1-9
在线时间
20 小时
发表于 2019-11-5 16:20:11 | 显示全部楼层
老哥,你最后咋解决的啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2020-5-16
在线时间
1 小时
发表于 2020-5-16 10:42:31 | 显示全部楼层
风溪香士 发表于 2013-8-15 00:37
回复【8楼】正点原子:
---------------------------------
确实是指针出了问题。我直接定义的指针就拿来用 ...

老哥 我现在也遇到了这样问题 可以详细讲讲吗 我也是移植的 但是打不开
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-9-22
在线时间
2 小时
发表于 2020-11-19 17:50:22 | 显示全部楼层
不要同时打开两个文件,仔细检查一下
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 11:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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