完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
762 浏览 0 评论
739 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之复制文件描述符
668 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之返回错误处理与相关函数
1448 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之文件描述符和FILE指针转换
1058 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 23:37 , Processed in 0.642101 second(s), Total 45, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2618