当我们在移植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文件管理系统移植问题解决
5169

被折叠的 条评论
为什么被折叠?



