Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[建议]elm FatFs中MAX_SECTOR_SIZE的处理
发布于 2013-07-26 19:56:50 浏览:3667
订阅该版
一般的存储设备都是512字节的扇区,但现在有越来越多的设备使用更大的扇区。 在FatFs中有一个定义_MAX_SS定义,默认为512。 在RT-Thread的移植中,定义了一个 `RT_DFS_ELM_MAX_SECTOR_SIZE` 与之对应。 当需要支持更大的扇区时,修改`RT_DFS_ELM_MAX_SECTOR_SIZE`的定义即可。 ```c //
#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096 ``` 因RT-Thread的灵活性,可能会在编译固件时没有设置支持大的扇区,但后面却挂载了一个大扇区的设备。 而目前没有检查,然后导致缓冲区溢出,于是内存被写穿。 这块需要更新。
查看更多
5
个回答
默认排序
按发布时间排序
flydream0
2013-08-26
这家伙很懒,什么也没写!
遇到过同样问题,修改rtconfig.h的宏定义即可
flydream0
2013-08-26
这家伙很懒,什么也没写!
RT_DFS_ELM_USE_LFN默认值为2,实际为2时是需要添加其它文件才能编译过,因此建议RT_DFS_ELM_USE_LFN默认值设为0
prife
2013-08-26
这家伙很懒,什么也没写!
好的,我来检查下,看看如何解决掉。
aozima
2013-11-04
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
在RT-Thread的fatfs应用场景中,虽然扇区设置为512,但还是有可能去挂载大于512字节扇区的存储器。 此时如果不提前做检查,会导致写穿。 ```patch components/dfs/filesystems/elmfat/ff.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/components/dfs/filesystems/elmfat/ff.c b/components/dfs/filesystems/elmfat/ff.c index 014d70f..5a0d340 100644 --- a/components/dfs/filesystems/elmfat/ff.c +++ b/components/dfs/filesystems/elmfat/ff.c @@ -108,12 +108,12 @@ #if _MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096 #error Wrong sector size. #endif -#if _MAX_SS != 512 -#define SS(fs) ((fs)->ssize) /* Multiple sector size */ -#else -#define SS(fs) 512U /* Fixed sector size */ -#endif +// #if _MAX_SS != 512 +#define SS(fs) ((fs)->ssize) /* Multiple sector size */ +// #else +// #define SS(fs) 512U /* Fixed sector size */ +// #endif /* Reentrancy related */ #if _FS_REENTRANT @@ -2058,10 +2058,12 @@ FRESULT chk_mounted ( /* FR_OK(0): successful, !=0: any error occurred */ stat = disk_initialize(fs->drv); /* Initialize low level disk I/O layer */ if (stat & STA_NOINIT) /* Check if the initialization succeeded */ return FR_NOT_READY; /* Failed to initialize due to no media or hard error */ -#if _MAX_SS != 512 /* Get disk sector size (variable sector size cfg only) */ + +//#if _MAX_SS != 512 /* Get disk sector size (variable sector size cfg only) */ if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &fs->ssize) != RES_OK) return FR_DISK_ERR; -#endif +//#endif + #if !_FS_READONLY if (chk_wp && (stat & STA_PROTECT)) /* Check disk write protection if needed */ return FR_WRITE_PROTECTED; @@ -3601,10 +3603,12 @@ FRESULT f_mkfs ( stat = disk_initialize(drv); if (stat & STA_NOINIT) return FR_NOT_READY; if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; -#if _MAX_SS != 512 /* Get disk sector size */ + +//#if _MAX_SS != 512 /* Get disk sector size */ if (disk_ioctl(drv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK) return FR_DISK_ERR; -#endif +//#endif + if (disk_ioctl(drv, GET_SECTOR_COUNT, &n_vol) != RES_OK || n_vol < 128) return FR_DISK_ERR; b_vol = (sfd) ? 0 : 63; /* Volume start sector */ ```
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
aozima
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
提问
92
回答
4480
被采纳
380
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
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
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部