硬汉嵌入式论坛

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

[RL-FlashFS] 新版的RL-FlashFS感觉有bug,经常会出现同名文件名

  [复制链接]

3

主题

15

回帖

24

积分

新手上路

积分
24
发表于 2018-8-2 09:54:52 | 显示全部楼层 |阅读模式
最近使用的下MDK5.25的RL-FlashFS,基于nand flash.正常操作根目录是没问题的,很耐操.
但是当使用fopen("/test/data/myfile.dat","w");这种方法不断的创建同一个文件写入数据后再关闭.刚开始也是没问题的.
但是过一段时间这个目录就会出现N多个myfile.dat文件。出现时间不定.
但是如果是不停的fopen("/myfile.dat","w");就没事。
硬汉有没有遇到过?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2018-8-2 11:41:58 | 显示全部楼层
新版的我还没有用过,一直用的老版的。回头我用了,跟楼主交流下。
回复

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2018-9-4 20:40:02 | 显示全部楼层
楼主是用keil中的那个向导工具添加的么?还是自己移植的啊?好讨厌cmsis的封装层,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2018-9-5 02:02:33 | 显示全部楼层
浅眠 发表于 2018-9-4 20:40
楼主是用keil中的那个向导工具添加的么?还是自己移植的啊?好讨厌cmsis的封装层,

新版的只能用RTE开发环境,自己手动添加库文件还是很麻烦的。
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2019-8-9 09:15:21 | 显示全部楼层
遇到了同样的问题,不止LZ找到问题没。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-8-9 10:49:59 | 显示全部楼层
qianniao29 发表于 2019-8-9 09:15
遇到了同样的问题,不止LZ找到问题没。

我新版的例子已经发布了,暂无这种问题

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94277
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2019-8-9 15:28:13 | 显示全部楼层
eric2013 发表于 2019-8-9 10:49
我新版的例子已经发布了,暂无这种问题

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简 ...

我的中间件的版本,使用的SD卡。另外还有一个问题是,usb MSC连接电脑一段时间后就会hardfault,很奇怪。

版本

版本
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-8-9 15:51:39 | 显示全部楼层
qianniao29 发表于 2019-8-9 15:28
我的中间件的版本,使用的SD卡。另外还有一个问题是,usb MSC连接电脑一段时间后就会hardfault,很奇怪。 ...

SD卡的也有,在这里,你试试:

http://www.armbbs.cn/forum.php?m ... peid%26typeid%3D184
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2019-8-9 15:57:44 | 显示全部楼层
eric2013 发表于 2019-8-9 15:51
SD卡的也有,在这里,你试试:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=94145&extra=page ...

参考过您的例子,这个cmiss drive为什么要用自己的,官方的有问题吗。
123321.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-8-10 09:13:35 | 显示全部楼层
qianniao29 发表于 2019-8-9 15:57
参考过您的例子,这个cmiss drive为什么要用自己的,官方的有问题吗。

是的,H7的,官方的有bug,被我修正了。
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2019-8-14 22:50:01 | 显示全部楼层
把文件名改短就好了,难道Fs_Dbg_LFN_CM3_L.lib不是支持长文件名的库吗,之前是文件名10个字符后缀3个字符。但是单独测试时,又是可以的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-8-15 17:44:01 | 显示全部楼层
qianniao29 发表于 2019-8-14 22:50
把文件名改短就好了,难道Fs_Dbg_LFN_CM3_L.lib不是支持长文件名的库吗,之前是文件名10个字符后缀3个字符 ...

这个是长文件名的库
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2019-8-20 15:55:23 | 显示全部楼层
解决了。用usb连接设备和电脑,通过usb msc格式化下sd卡就好了,之前用读卡器在电脑上格式化的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-8-22 01:20:41 | 显示全部楼层
qianniao29 发表于 2019-8-20 15:55
解决了。用usb连接设备和电脑,通过usb msc格式化下sd卡就好了,之前用读卡器在电脑上格式化的。

谢谢告知最后原因。
回复

使用道具 举报

3

主题

15

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2019-9-4 19:33:38 | 显示全部楼层
qianniao29 发表于 2019-8-9 09:15
遇到了同样的问题,不止LZ找到问题没。

没解决,直接弃用了,转用yaffs了
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

积分
38
发表于 2019-12-23 15:43:17 | 显示全部楼层
RL-FlashFS V6.13版本我也一直出现了同名文件的多次被创建,fopen (M0:\\CAN1\\CAN1_1.csv, "a+")追加方式。fopen和fclose每写入1000条数据才重复执行一次。 我目录创建在二级目录。好困扰
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-12-23 15:56:06 | 显示全部楼层
cms277415310 发表于 2019-12-23 15:43
RL-FlashFS V6.13版本我也一直出现了同名文件的多次被创建,fopen (M0:\\CAN1\\CAN1_1.csv, "a+")追加方式 ...

如果有我们V7板子话,用我们V7板子和配套例子测试下,无此问题。
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

积分
38
发表于 2019-12-23 16:15:39 | 显示全部楼层
eric2013 发表于 2019-12-23 15:56
如果有我们V7板子话,用我们V7板子和配套例子测试下,无此问题。

我是参照 V7-RTX5   RL-FlashFS   RL-USB Template 工程做的,不知道是怎么回事,我写的数据量比较大,5ms一条数据,一条80字节左右。 好几路文件一直执行的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-12-23 16:38:15 | 显示全部楼层
cms277415310 发表于 2019-12-23 16:15
我是参照 V7-RTX5   RL-FlashFS   RL-USB Template 工程做的,不知道是怎么回事,我写的数据量比较大,5m ...

不清楚你这个什么鬼,你再研究研究吧。

不多,我之前是写了100万条。
回复

使用道具 举报

0

主题

38

回帖

38

积分

新手上路

积分
38
发表于 2019-12-25 11:26:08 | 显示全部楼层
eric2013 发表于 2019-12-23 16:38
不清楚你这个什么鬼,你再研究研究吧。

不多,我之前是写了100万条。

记录下RL-FLASHFS出现的问题,

写数据部分代码:
void CAN_Write_CSV_File(const char* path, CAN_SAVE_MSG_T* can_save_msg)
{
    fsTime timedate;
    sys_time_t* sys_time;
    const uint8_t WriteText[] = {"序号,帧 类 型,ID,帧 数 据,时间\r\n"};
    char  frame_type[10]; // 帧类型:1:扩展数据帧,2:标准数据帧,3:标准远程帧,4:扩展远程帧

    sys_time = get_sys_time();

        /*
          1. 打开文件,如果没有此文件会自动创建。
          2. 第二个参数表示向此文件写数据都从尾部开始添加。
        */
    /* 写数据,如果是第一次写数据 */
    if ((FILE_SAVE_CLOSE == can_save_msg->file_state) || (0 == (can_save_msg->frame_idx%CAN_SAVE_PER)))
    {
        for (;;)
        {
            can_save_msg->fout = fopen (path, "a+");
            if (NULL != can_save_msg->fout)
            {
                can_save_msg->file_state = FILE_SAVE_OPEN;

                /* 设置文件或目录时间戳 */
                timedate.year = (sys_time->year<1980)?1980:sys_time->year;;
                timedate.mon  = sys_time->month;
                timedate.day  = sys_time->day;
                timedate.hr   = sys_time->hour;
                timedate.min  = sys_time->min;
                timedate.sec  = sys_time->sec;  
                ftime_set (path, &timedate, &timedate, &timedate);

                break;
            }

            osDelay(2);
        }
    }

        if (NULL != can_save_msg->fout)
        {
                /* 写数据,如果是第一次写数据,先写CSV文件的表项的题目,以后写数据不再需要写此表项 */
                if (0 == (can_save_msg->frame_idx%CAN_SAVE_NWE_FILE))
                {
                        fprintf(can_save_msg->fout, (char *)WriteText);
            fflush(can_save_msg->fout);
                }
               
        /* 帧类型:0:扩展数据帧,1:扩展远程帧,2:标准数据帧,3:标准远程帧 */
        memcpy(frame_type, fram_type_table[can_save_msg->frame_type], sizeof(frame_type));

        if (2 > can_save_msg->frame_type)
        {
            /* 扩展帧 */
            fprintf(can_save_msg->fout, "%-d,%-s,%02X %02X %02X %02X,%02X %02X %02X %02X %02X %02X %02X %02X,%4d-%02d-%02d %02d:%02d:%02d:%03d\r\n", \
                                        can_save_msg->frame_idx, \
                                        frame_type, \
                                        (unsigned char)(can_save_msg->ID>>24), \
                                        (unsigned char)(can_save_msg->ID>>16), \
                                        (unsigned char)(can_save_msg->ID>>8), \
                                        (unsigned char)can_save_msg->ID, \
                                        can_save_msg->Data[0], \
                                        can_save_msg->Data[1], \
                                        can_save_msg->Data[2], \
                                        can_save_msg->Data[3], \
                                        can_save_msg->Data[4], \
                                        can_save_msg->Data[5], \
                                        can_save_msg->Data[6], \
                                        can_save_msg->Data[7], \
                                        sys_time->year, \
                                        sys_time->month, \
                                        sys_time->day, \
                                        sys_time->hour, \
                                        sys_time->min, \
                                        sys_time->sec, \
                                        sys_time->msec);        
        }
        else
        {
            /* 标准帧 */
            fprintf(can_save_msg->fout, "%-d,%-s,%02X %02X,%02X %02X %02X %02X %02X %02X %02X %02X,%4d-%02d-%02d %02d:%02d:%02d:%03d\r\n", \
                                        can_save_msg->frame_idx, \
                                        frame_type, \
                                        (unsigned char)(can_save_msg->ID>>8), \
                                        (unsigned char)can_save_msg->ID, \
                                        can_save_msg->Data[0], \
                                        can_save_msg->Data[1], \
                                        can_save_msg->Data[2], \
                                        can_save_msg->Data[3], \
                                        can_save_msg->Data[4], \
                                        can_save_msg->Data[5], \
                                        can_save_msg->Data[6], \
                                        can_save_msg->Data[7], \
                                        sys_time->year, \
                                        sys_time->month, \
                                        sys_time->day, \
                                        sys_time->hour, \
                                        sys_time->min, \
                                        sys_time->sec, \
                                        sys_time->msec);        
        }

        fflush(can_save_msg->fout);

        if (NULL != ferror(can_save_msg->fout))  
                {
                        printf("写入内容失败\r\n");
                }

        if ((CAN_SAVE_PER-1) == (can_save_msg->frame_idx%CAN_SAVE_PER))
        {
            /* 关闭文件 */
            for (;;)
            {
                if (0 == fclose (can_save_msg->fout))
                {
                    can_save_msg->file_state = FILE_SAVE_CLOSE;

                    can_save_msg->fout = NULL;
                    break;
                }

                osDelay(2);
            }
        }
        }
        else
        {
                printf("打开文件失败\r\n");
        }
}

QQ图片20191225110522.png

can2_3.csv是我把另一个can2_2.csv重命名来的

can2_3.csv是我把另一个can2_2.csv重命名来的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2019-12-25 11:31:53 | 显示全部楼层
cms277415310 发表于 2019-12-25 11:26
记录下RL-FLASHFS出现的问题,

写数据部分代码:

得深入研究啊,看我这个,RTX的中间件要用好,需要好好花一番心思的。
QQ截图20191225113356.png
回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2020-3-8 18:06:12 | 显示全部楼层
eric2013 发表于 2019-12-25 11:31
得深入研究啊,看我这个,RTX的中间件要用好,需要好好花一番心思的。

我是用RTE环境建立的文件系统(MDK5.29),每16s写一次SD卡,每次写3个文件,其中2个覆盖写(“w”),一个追加写(“a”),每次写入数量:覆盖16048、38字节,追加256字节。

文件名 是 14.3 格式

也是一样的产生N多个同样文件名,同样建立时间,内容也一样
回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2020-3-8 18:24:26 | 显示全部楼层
eric2013 发表于 2019-12-25 11:31
得深入研究啊,看我这个,RTX的中间件要用好,需要好好花一番心思的。

你们发布的例程是每次写入文件都 fmount 和 funmount,这是必须的吗?

我因为只有SD卡写入,所以是在开机初始化 fmount 一次
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-3-9 01:09:09 | 显示全部楼层
yangskyhigh 发表于 2020-3-8 18:24
你们发布的例程是每次写入文件都 fmount 和 funmount,这是必须的吗?

我因为只有SD卡写入,所以是在 ...

不是,是为了给大家展示功能,才这么做的。
回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2020-3-10 13:25:21 | 显示全部楼层
yangskyhigh 发表于 2020-3-8 18:06
我是用RTE环境建立的文件系统(MDK5.29),每16s写一次SD卡,每次写3个文件,其中2个覆盖写(“w”),一 ...

把写入的文件名从 14.3格式换成 6.3格式,同名文件现象暂未出现。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-3-10 15:41:38 | 显示全部楼层
我这边也碰到这个问题了,出现了很多个同名文件,不知道大家是怎么解决的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-3-10 15:47:50 | 显示全部楼层
yangskyhigh 发表于 2020-3-10 13:25
把写入的文件名从 14.3格式换成 6.3格式,同名文件现象暂未出现。

切换到8.3?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-3-10 15:48:34 | 显示全部楼层
飘逸流云aa 发表于 2020-3-10 15:41
我这边也碰到这个问题了,出现了很多个同名文件,不知道大家是怎么解决的

使用我创建的工程,没有这个问题:

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94277
回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2020-3-10 23:58:03 | 显示全部楼层

RTE还是保留着 支持长文件名,但实际写文件时文件名是6.3,即10字节。现在没有出现了多个重名文件的问题,但新发现出现了有文件没有写成功的现象,还在排查。
回复

使用道具 举报

12

主题

75

回帖

111

积分

初级会员

积分
111
发表于 2020-3-11 00:01:12 | 显示全部楼层
eric2013 发表于 2020-3-10 15:48
使用我创建的工程,没有这个问题:

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单, ...

你这个工程,和MDK5.29下SDIO的驱动已经不兼容了,SDMMC_MASK_SDIOITIE定义都变了
要是方便的话,你能切换到新版本下测试吗? MDK5.29,HAL驱动1.7.0吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-3-11 00:06:15 | 显示全部楼层
yangskyhigh 发表于 2020-3-11 00:01
你这个工程,和MDK5.29下SDIO的驱动已经不兼容了,SDMMC_MASK_SDIOITIE定义都变了
要是方便的话,你能切 ...

不影响,RTE可以选择软件包版本的,以CMSIS为例


回复

使用道具 举报

4

主题

37

回帖

49

积分

初级会员

积分
49
发表于 2020-4-17 10:46:37 | 显示全部楼层
我这边也出现了重复文件名的问题。我用的是NAND,不管是长文件名还是短文件名的库都会出现重复文件名的问题。关键是这个问题不是每个板子都有的,有的板子有,有的板子又没有。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-4-17 10:52:54 | 显示全部楼层
yswtxiao 发表于 2020-4-17 10:46
我这边也出现了重复文件名的问题。我用的是NAND,不管是长文件名还是短文件名的库都会出现重复文件名的问题 ...

使用我创建的工程,当前没有一个些板子能用,一些板子不能用的情况。

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94277
回复

使用道具 举报

4

主题

37

回帖

49

积分

初级会员

积分
49
发表于 2020-4-17 11:18:51 | 显示全部楼层
eric2013 发表于 2020-4-17 10:52
使用我创建的工程,当前没有一个些板子能用,一些板子不能用的情况。

基于V7的新版RL-USB和RL-FlashFS ...

我对比了你的文件系统部分的代码和我的文件系统代码,发现有几个区别:
1.我使用了NAND0_FAT_JOURNAL这个功能,你的没有开启,这个是文件系统日志。
2.你的工程OTG_STM32H7xx.c和USBD_STM32H7xx.c这两个文件是自己修改的,但是我和官方的对比了下,并没有什么不同呀。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-4-17 11:21:11 | 显示全部楼层
yswtxiao 发表于 2020-4-17 11:18
我对比了你的文件系统部分的代码和我的文件系统代码,发现有几个区别:
1.我使用了NAND0_FAT_JOURNAL这 ...

实际工程开启FAT日志后也没有问题,之前帮群友测试过一次。

具体你那里怎么回事,自己查下吧,就不帮忙测了。
回复

使用道具 举报

4

主题

37

回帖

49

积分

初级会员

积分
49
发表于 2020-4-17 11:21:30 | 显示全部楼层
eric2013 发表于 2020-4-17 10:52
使用我创建的工程,当前没有一个些板子能用,一些板子不能用的情况。

基于V7的新版RL-USB和RL-FlashFS ...

还有,我们的产品是工业上用的,对文件系统操作量比较大,而且设备都是一天工作十几个小时,2秒钟写一次。经过这样大量跑了几个月,就会大量出现这个问题。
开始还以为时序问题,但是我把时序降低了两倍,还是会有这个问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-4-17 11:25:35 | 显示全部楼层
yswtxiao 发表于 2020-4-17 11:21
还有,我们的产品是工业上用的,对文件系统操作量比较大,而且设备都是一天工作十几个小时,2秒钟写一次 ...

整套我们V7,测试一年看看。
回复

使用道具 举报

4

主题

37

回帖

49

积分

初级会员

积分
49
发表于 2020-4-17 11:38:59 | 显示全部楼层
eric2013 发表于 2020-4-17 11:25
整套我们V7,测试一年看看。

我之前买过你们103的板子。V7的到时候也整套
回复

使用道具 举报

4

主题

37

回帖

49

积分

初级会员

积分
49
发表于 2020-4-17 12:04:14 | 显示全部楼层
eric2013 发表于 2020-4-17 11:25
整套我们V7,测试一年看看。

我在keil的组件更新记录里面查看到了这C:\Users\WaynePC\Desktop\{0F62F4DF-C6B2-48AF-91FE-99A19DA9C0F6}_20200417114030.jpg个,应该是有重复文件名的吧。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-4-17 12:12:04 | 显示全部楼层
yswtxiao 发表于 2020-4-17 12:04
我在keil的组件更新记录里面查看到了这个,应该是有重复文件名的吧。

如果不方便使用我们V7板子测试的话

直接这里对接KEIL官方论坛即可:

https://community.arm.com/develo ... /tools/f/keil-forum
就讨论这么多吧。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 10:55 , Processed in 0.535119 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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