完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
在单步调试时,找到错误位置首先,进入f_open,在f_open中有find_volume函数,在这个函数中,从0扇区读取fat所占扇区大小、每个扇区字节数、fat个数、根目录位置等有关信息,并且如果该函数返回值不是FR_OK,将直接退出f_open函数; 进入find_volume函数,在find_volume函数中有这样一行代码: fmt = check_f( fs, bsect );并且根据返回值,也就是fmt的值,来确定是否为fat文件系统; 然后进入check_fs函数,发现先进行move_window操作,然后判断结尾是否为0XAA55,开头的跳转指令是否是0XEB 0X** 0X90,然后判断是否找到FAT或是FAT3字样; 在move_window函数中,主要实现了fs->win[]中的数据回写,然后重新读取指定扇区的内容,结果,问题就出来这里,在读取0扇区的内容时,读取的内容错误,因此就导致了在check_fs函数中判断扇区结尾是否是0XAA55时,发生了错误,反回了3,然后在find_volume函数中,判断fmt时,返回了FR_NO_FILESYSTEM; ![]() |
|
相关推荐
2个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【米尔-国产瑞芯微RK3568开发板试用体验】评测一 系统配置
1111 浏览 0 评论
1379 浏览 0 评论
2465 浏览 1 评论
如何配置Linux操作系统设备树让我的开发板可以将板子上的GPIO接口用作 I2S输出??
2701 浏览 1 评论
1660 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-31 14:02 , Processed in 0.610170 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191