移植FatFS时注意事项

嵌入式开发踩坑记 5.3w人浏览 83人参与

AI助手已提取文章相关产品:

当我们在移植FatFs时,需要注意我们的SD卡初始化函数是不需要主动调用的,f_mount函数会在内部自动调用diskio.c里面的初始化函数,我们只需要更改内部代码为SD初始化就可以,

在读写的函数里改为我们的SD卡读写函数后应该在之后加上状态检测避免之后紧跟着调用时SD卡处于忙碌状态

在f_mount调用时的第三个参数最好设为1,意思是直接挂载识别SD卡的系统,如果返回值挂载显示成功证明成功识别到SD卡格式化后的文件系统,这时候就能确定读写函数没有问题,因为内部都会调用到,

而当挂载成功后若代码卡在f_open函数,可能是因为栈溢出,因为使用LFN的情况下(使用exFAT必须使用LFN),FATFS在解析文件名的时候,会在函数栈上申请大量的缓冲区空间,从而导致栈溢出,因此当一点一点排查是会发现f_open最后会卡在memset里,有个简单是解决方法就是把f_open里的DIR dj;这个变量改为static静态变量,从而将放在.bss区,在挂载后推荐打印一遍SD卡的信息以确保底层读写接口确实没有问题,,至此,FATFS文件管理系统移植问题解决

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值