硬汉嵌入式论坛

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

使用RL-FlashFS遇到SD卡没有成功写入的情况

[复制链接]

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 hongqi1O29 于 2025-6-4 09:59 编辑

stm32f407,裸机,移植RL-FlashFS(借鉴的事 V4-1012 RL-FlashFS+SD卡(裸机长文件名综合实现)),对SD卡操作,用了硬汉老师的代码:

1 - 显示SD卡容量和剩余容量


2 - 显示SD卡根目录下的文件


3 - 创建三个text文本并使用不同函数写入内容\n
4 - 使用三个不同函数读取文本


5 - 创建一个text文本并指定一个位置对其进行读写操作\n
6 - 删除文件夹和文件


7 - 测试文件读写速度


8 - 写数据到CSV文件中\n
9 - 从CSV文件中读数据



其中
1)1、2是成功显示的;
2)3创建三个text文件,文件是创建了,但是在电脑端看sd卡里头的文件,是空的;也就是fwrite、fprintf、fputs是执行成功的,但是内容没有;
3)4 读文件不成功,只要执行fread,fscanf, fgets任意一个就会卡死;
4)另外如何知道我使用的RL-FlashFS的版本号(移植借鉴的是“RL-FlashFS+SD卡(裸机长文件名综合实现)”)?
请硬汉老师指定一下

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 4 天前 | 显示全部楼层
楼主的图片没上传成功,方便单独上传下不,我看下错误类型
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 4 天前 | 显示全部楼层
没有错误类型,因为:
1)上面的写函数,fwrite ,fprintf, fputs 函数都成功执行,只不过拔出SD卡,在电脑上看SD卡,写的文件都是空的。
[C] 纯文本查看 复制代码
/**********************************************************************************************************/
	/* 打开文件夹test中的文件test1.txt,如果没有子文件夹和txt文件会自动创建*/
	fout = fopen ("M0:\\test\\test1.txt", "w"); 
	if (fout != NULL) 
	{
		sprintf(str_sd,"打开文件M0:\\test\\test1.txt成功,如果没有子文件夹和txt文件会自动创建\r\n");
		PRINT_MSG(str_sd);
		/* 写数据 */
		bw = fwrite (WriteText, sizeof(uint8_t), sizeof(WriteText)/sizeof(uint8_t), fout);
		if(bw == sizeof(WriteText)/sizeof(uint8_t))
		{
			PRINT_MSG("写入内容成功\r\n");
		}
		else
		{ 
			PRINT_MSG("写入内容失败\r\n");
		}
		
		/* 关闭文件 */
		fclose(fout);
	}
	else
	{
		PRINT_MSG("打开文件M0:\\test\\test.txt失败\r\n");
	}


2)读文件的函数 fread, fscanf, fgets函数,只要执行其中之一,debug调试到读函数就死了;若是下载到板子上执行,板子就没有任何反应了;

回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 4 天前 | 显示全部楼层
eric2013 发表于 2025-6-4 10:55
楼主的图片没上传成功,方便单独上传下不,我看下错误类型

硬汉老师,给点方向哈
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 3 天前 | 显示全部楼层
hongqi1O29 发表于 2025-6-4 17:49
硬汉老师,给点方向哈

把你的sd卡使用sd卡联盟的小软件格式化下试试。

或者使用别的卡试试,感觉这种情况可能是sd卡的问题


回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
图片1是联盟小软件格式化后的图片;

图片2是执行1,显示容量;执行3,创建文件的图片;

图片3是执行7,测试文件读写速度,写是成功的,读的时候就卡死了,没有结果出来;

图片4是拔卡在电脑里头看执行3之后的结果,文件的大小都是0,说明创建其实是不成功的。

所以:
1)图片3之所以被卡死,可能是由于写不成功,导致读不成功,但是串口输出说写是成功的,这个地方不明白;

2)还有一个地方不明白,联盟小软件格式化后的 显示Cluster size: 32kilobytes,而RL-FlashFS执行容量显示时,串口输出扇区大小事512字节?和这个有关系吗

格式化

格式化

显示容量

显示容量

读写速度测试

读写速度测试

电脑看SD创建的文件

电脑看SD创建的文件
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
eric2013 发表于 2025-6-5 08:48
把你的sd卡使用sd卡联盟的小软件格式化下试试。

或者使用别的卡试试,感觉这种情况可能是sd卡的问题

硬汉老师,帮看一下哦
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 前天 08:18 | 显示全部楼层
这块sd卡用fatfs是没有问题的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 前天 09:18 | 显示全部楼层
hongqi1O29 发表于 2025-6-6 08:18
这块sd卡用fatfs是没有问题的

这个是F429的FlashFS驱动,你参考下试试。这个和F407是完全一样的

【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
https://www.armbbs.cn/forum.php? ... 7330&fromuid=58
(出处: 硬汉嵌入式论坛)

评分

参与人数 1金币 +20 收起 理由
hongqi1O29 + 20

查看全部评分

回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 前天 11:43 | 显示全部楼层
好的,谢谢
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 前天 17:47 | 显示全部楼层
从硬汉老师的例子重新加载LIB文件FS_CM3.lib,配置文件File_Config.c,检测配置文件SDIO_STM32F4××.c,效果还是和上面一样:
1. 写入的文件是空;
2. 读文件是“卡死”(fread,fscanf,fgets),单步执行是比如陷到里头
[C] 纯文本查看 复制代码
bw = fread(Readbuf, sizeof(uint8_t), sizeof(WriteText)/sizeof(uint8_t), fin);


但是系统的定时器还依然正常(定时器控制的LED一闪一闪);
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 昨天 08:28 | 显示全部楼层
hongqi1O29 发表于 2025-6-6 17:47
从硬汉老师的例子重新加载LIB文件FS_CM3.lib,配置文件File_Config.c,检测配置文件SDIO_STM32F4××.c,效 ...

有必要考虑这个文件系统对你SD卡的兼容性了,换个其它的卡试试
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 昨天 09:06 | 显示全部楼层
好的,有一个想不明白的是:在做读写测试的时候,
[C] 纯文本查看 复制代码
bw = fwrite (g_TestBuf, sizeof(uint8_t), BUF_SIZE, fout);  
这行代码怎么会输出到串口上?是不是和这个有关系?
1. 再找一个32G的SD卡;
2. 看看硬汉老师推进的资料:https://www.keil.com/support/man/docs/rlarm/rlarm_ioc_init.htm
3. 不行换一个FstFS;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116121
QQ
发表于 昨天 09:25 | 显示全部楼层
hongqi1O29 发表于 2025-6-7 09:06
好的,有一个想不明白的是:在做读写测试的时候,[mw_shl_code=c,true]bw = fwrite (g_TestBuf, sizeof(uin ...

确实有关系,我的程序里面有个retarget.c,你看下

还有使用flashfs不能使用微库
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 12:49 , Processed in 0.357641 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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