Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
文件系统
SD卡_TF卡
SD卡连续读写文件报错
发布于 2020-07-20 09:41:10 浏览:2111
订阅该版
硬件:STM32F103RET6, SD卡,485从设备 内核:4.0.2 工具: Rt-Thread Studio 1.1.2 项目上需要从485从设备读数据,然后写到csv文件里,每5-10秒写一次,每次写一行。csv文件是放在sd卡上的,sd卡挂载在"/"路径。 文件我每次打开、追加、关闭,这个操作没问题。但是重复700次左右,DFS就报错了,错误如下`(DFS fd new is failed! Could not found an empty fd entry.)`: ![Snipaste_2020-07-20_09-37-20.png](/uploads/20200720/397463370258640e10370a72859f070d.png) 这部分操作的代码: ```c static void im3318_main(void* parameter) { int regs = {0}; struct tm *t; time_t now=0; char file_name[20]; char write_buf[256] = {0}; char print_buf[256] = {0}; char current_time[64]; while(1){ // 读寄存器 regs = modbus_read_registers(ctx, PHASE_A_REG_START, REG_LEN*3, readBuffer_BCD); // 判断读寄存器是否正确 if (regs == REG_LEN*3) { // 转换BCD码 bcd_dec_arrary(readBuffer_BCD, readBuffer, REG_LEN*3); // 存入变量列表 im3318_write_buffer(readBuffer); // 获取时间 now=time(RT_NULL); t = rt_malloc(sizeof(struct tm)); t = localtime(&now); // 生成文件名(按月份) sprintf(file_name, "%d-%02d-%02d.csv", t->tm_year+1900, t->tm_mon+1, t->tm_mday); // 生成当前时间 sprintf(current_time, "%d-%02d-%02d,%02d:%02d:%02d", \ t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); // 有SD卡情况下才写文件 device = rt_device_find("sd0"); if (device != RT_NULL) { fd = open(file_name, O_APPEND | O_CREAT | O_WRONLY); if (fd>0) { write_cnt++; rt_kprintf("fd=%d, write cnt = %d\n", fd, write_cnt); // for Writing to file sprintf(write_buf, "%s,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf\n", \ current_time, Pa, Qa, Ua, Ia, Pb, Qb, Ub, Ib, Pc, Qc, Uc, Ic); write(fd, write_buf, strlen(write_buf)); // for Printing if (debug_on) { sprintf(print_buf, "%s:\n" "Pa=%lf, Qa=%lf, Ua=%lf, Ia=%lf\n" "Pb=%lf, Qb=%lf, Ub=%lf, Ib=%lf\n" "Pc=%lf, Qc=%lf, Uc=%lf, Ic=%lf\n", \ current_time, Pa, Qa, Ua, Ia, Pb, Qb, Ub, Ib, Pc, Qc, Uc, Ic); rt_kprintf("%s", print_buf); } }else{ failed_cnt++; // 如果失败3次以上,重启 if (failed_cnt > 3) { rt_hw_cpu_reset(); } rt_kprintf("Write File Error\n"); } close(fd); } }else{ failed_cnt++; // 如果失败3次以上,重启 if (failed_cnt > 3) { rt_hw_cpu_reset(); } rt_kprintf("Read Register Error\n"); } rt_thread_mdelay(acq_time*1000); } } ```
查看更多
4
个回答
默认排序
按发布时间排序
aozima
2020-07-20
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
## 空指针 rt_malloc 结果末做检查 ## 内存泄露 ```c t = rt_malloc(sizeof(struct tm)); t = localtime(&now); ``` ## 逻辑错误 fd打开不成功,后面也会执行 close(fd)。另外,0也是有效fd,所以应该是 `(fd >= 0)` ## 缓冲区溢出风险 sprintf请加N,同时给出固定长度缓冲大小的计算公式,确保不会有溢出。
海阔天kongcyc
2020-07-20
这家伙很懒,什么也没写!
如果你是在while 1 中一直写数据,为什么不是在while 之前open, 然后在写结束最后再 close呢,每次频繁调用open, colse,会不会不太好?
cqllzp
2021-11-28
这家伙很懒,什么也没写!
问题解决了没?请问!
杰瑞鼠
2023-10-10
2025再接再励
问题怎么解决的?我挂载romfs然后在w25q上的2个分区分别挂载lfs和elm也报这个错误,找不到原因
撰写答案
登录
注册新账号
关注者
1
被浏览
2.1k
关于作者
craftor
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
【文件系统】目录查询
2
文件系统Posix 接口 的close API疑问
3
dfs_mount挂载文件系统路径的路径必须为‘/’才能成功
4
文件系统挂载断言机制
5
文件系统是否支持挂载NFS网络文件系统
6
文件系统挂载失败!!!
7
dfs_filesystem_lookup() 返回NULL
8
webnet 是否可以做全动态网页,使用内存池来加快速度
9
“文件系统装在表”报错
10
spiflash建立的elm文件系统如何加入外部的文件
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部