硬汉嵌入式论坛

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

[RL-FlashFS] RL-FlashFS运行一段时间,文件打开失败

[复制链接]

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2019-8-10 22:34:55 | 显示全部楼层 |阅读模式
       使用RL-FlashFS,打开擦写平衡使能,测试4个小时,调用读取数据函数【bw = fread((uint8_t *)&hdata, 1, hDATA_SIZE, fout);
】,发现耗时20秒左右,然后开发板复位后,就出现文件打开失败【open M0:\314.dat fail】,如下为文件配置参数:

无标题.png
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2019-8-10 22:37:19 | 显示全部楼层
突然联想到ftp服务器例子,也是测试几个小时后,链接还在,就是打不开目录文件了,可能也是sd这边的问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2019-8-11 09:40:43 | 显示全部楼层
没遇到过这种情况,帮顶。
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2019-8-16 23:53:26 | 显示全部楼层
eric2013 发表于 2019-8-11 09:40
没遇到过这种情况,帮顶。

eric,您好!
       这是我用V5的板子测试的,运行到8420左右,就出问题了,您有空帮我看下配置什么的,能测试最好了

V5-1051_RL-TCPnet实验_FTP服务器(RTX).rar

6.33 MB, 下载次数: 16

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2019-8-17 00:21:00 | 显示全部楼层
也许在明天 发表于 2019-8-16 23:53
eric,您好!
       这是我用V5的板子测试的,运行到8420左右,就出问题了,您有空帮我看下配置什么的 ...

帮顶,不知道你这个咋回事。
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2019-8-25 11:27:10 | 显示全部楼层
eric2013 发表于 2019-8-17 00:21
帮顶,不知道你这个咋回事。

Eric,您好!
     请教flashfs的操作流程是否对这个问题有关系:
     1、运行四个小时就出错的流程:
     ①打开文件读写【r+】②查找存储索引③写入文件④关闭文件
     2、运行一天还未出错的流程:
     ①先打开文件只读【r】②查找存储索引③关闭文件④打开文件只写[a]⑤写入文件⑥关闭文件

疑问:经过多次测试,发现只要文件打开模式带‘+’,运行不久就出问题,单步调试发现fread函数会耗时10s左右,读取出来的数据为空;您提供的例程里面读写都是分开的,所以都没有带‘+’;不知道是不是这个问题导致的?
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2021-5-15 16:13:29 | 显示全部楼层
也许在明天 发表于 2019-8-25 11:27
Eric,您好!
     请教flashfs的操作流程是否对这个问题有关系:
     1、运行四个小时就出错的流程: ...

你好,咨询一下,你这边如何在读写文件之前,如何判断文件是否存在,以便判断文件是否需创建,对于已存在的文件,进行读写操作。想咨询一下,你这边的判断方法,多谢了

我这边的实现如下:
    ptFile = fopen((char*)pFileName, "r+");
    if(ptFile == NULL)
    {
        ptFile = fopen((char*)pFileName, "w"); // 如果文件不存在,则创建文件
    }
    if(ptFile == NULL)
    {
        LOG_Info("Open %s Failure", pFileName);
        eFeedBack = FEED_BACK_FAIL;
        goto access_fail;
    }
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2021-5-15 16:28:49 | 显示全部楼层
另一种方式,感觉使用没那么方便,需要先判断,FATFS的mode使用要方便些

    if (ffind((const char*)pFileName, &info) == fsOK) {
         ptFile = fopen((char*)pFileName, "r+");
     }else{
         ptFile = fopen((char*)pFileName, "w"); // 如果文件不存在,则创建文件
     }
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 05:31 , Processed in 0.173638 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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