硬汉嵌入式论坛

 找回密码
 立即注册
查看: 268|回复: 6
收起左侧

[RL-FlashFS] 使用fmout函数返回出问题。

[复制链接]

50

主题

68

回帖

218

积分

高级会员

积分
218
发表于 2024-5-2 12:16:48 | 显示全部楼层 |阅读模式


情况是这样,本来都是正常使用的,但偶尔启动时,会提示没有文件系统:       
do
        {
                fsInit = finit("N0:");       
                osDelay(100);
        }while((Mounted = fmount("N0:")) != fsOK && ++cnt <= 30) ;

代码如上,Mounted的值是fsNoFileSystem,说明没有文件系统。可以保证原来文件系统是正确的,里面保存的图片文件都可以正常读取。请高人指点,谢谢。



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-2 14:59:22 | 显示全部楼层
建议成对调用
[C] 纯文本查看 复制代码
void main (void) {
  FILE *f;
 
  // Initialize the M: drive.
  if (finit ("M:") != fsOK) {
    // error handling
  ...
  }
  // Mount the M: drive.
  if (fmount ("M:") != fsOK) {
    // error handling
  ...
  }
  // Update a log file on SD card.
  f = fopen ("M:\\Logs\\Test_file.log","a");
  if (f == NULL) {
    // error handling
  ...
  }
  else {
    // write data to file
    fclose (f);
  }
  // The drive is no more needed.
  funmount ("M:");
  funinit ("M:");
  ..
}
回复

使用道具 举报

50

主题

68

回帖

218

积分

高级会员

积分
218
 楼主| 发表于 2024-5-3 14:26:21 来自手机 | 显示全部楼层
eric2013 发表于 2024-5-2 14:59
建议成对调用
[mw_shl_code=c,true]void main (void) {
  FILE *f;

硬汉您好,我是打算挂载nand后就一直使用,不再卸载了。难道正确使用是每次fopen  fwrite之前都要fmount,操作后都要unmount?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-3 15:08:44 | 显示全部楼层
perfect_co 发表于 2024-5-3 14:26
硬汉您好,我是打算挂载nand后就一直使用,不再卸载了。难道正确使用是每次fopen  fwrite之前都要fmount ...

我的意思是如果你前面失败了,标准流程走一遍。
回复

使用道具 举报

50

主题

68

回帖

218

积分

高级会员

积分
218
 楼主| 发表于 2024-5-4 21:33:35 来自手机 | 显示全部楼层
eric2013 发表于 2024-5-3 15:08
我的意思是如果你前面失败了,标准流程走一遍。

能再具体点吗?看我理解对不对:如果fmount结果不是ok,那么就要先funmount,再重新fmount。对吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-5 09:45:39 | 显示全部楼层
perfect_co 发表于 2024-5-4 21:33
能再具体点吗?看我理解对不对:如果fmount结果不是ok,那么就要先funmount,再重新fmount。对吗?

finit,fmount,fopen依次调用,中间fmount失败了,退出时依次funmount ();  funinit (); 看看是不是好使点
回复

使用道具 举报

50

主题

68

回帖

218

积分

高级会员

积分
218
 楼主| 发表于 2024-5-5 12:44:47 | 显示全部楼层
eric2013 发表于 2024-5-5 09:45
finit,fmount,fopen依次调用,中间fmount失败了,退出时依次funmount ();  funinit (); 看看是不是好使 ...

嗯。。我的情况是,大部分情况下,开机读取都是对的,但偶尔在fmount时,返回值是11,也就是fsNoFileSystem。然后再重启也不能正常了,总是返回有问题。。这个很苦难,因为不知道什么原因导致文件系统能损坏?还是说我使用不当,导致系统损坏了?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-2 11:40 , Processed in 0.166420 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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