AQI003 2024-06-28 18:36 采纳率: 0%
浏览 28

野火的spi—fatfs实验中,初始化成功后重新挂载显示File-No-System

在f_mount/ find_volume/ fmt = check_fs中根据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;
以上是我在百度以及调试的时候找到的最符合我目前情况的解释,请问有什么解决办法吗。

img

img

img

img

img

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-28 18:36
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息和代码片段,问题似乎与在野火(Wildfire)的spi-fatfs实验中的初始化过程中的文件系统的识别和挂载有关。问题出在读取扇区内容时的错误,这导致在检查文件系统时发生错误,从而返回错误代码。在这种情况下,可以采取以下步骤来解决这个问题:

    1. 检查硬件接口和驱动: 确保SPI接口和相关的驱动正确配置和初始化。任何与硬件通信的问题都可能导致读取扇区时的错误。
    2. 检查扇区读取逻辑: 在move_window函数中,确保扇区的读取逻辑正确无误。这包括确保正确的扇区大小、起始地址等。
    3. 调试和日志: 添加更多的调试信息和日志,以帮助确定问题的确切位置。例如,在读取扇区后,可以打印出读取的数据,以验证是否正确。
    4. 检查文件系统识别逻辑: 检查check_fsfind_volume函数的逻辑,确保它们正确地识别FAT文件系统。特别注意扇区结尾的0xAA55和开头的跳转指令的识别。
    5. 固件和库版本: 确保使用的固件和FatFs库的版本是兼容的。有时,不同版本之间可能存在差异,导致问题。
    6. 检查磁盘状态: 如果是在外部存储设备上进行操作,确保存储设备状态良好,并且正确连接。
    7. 参考官方文档和示例: 查阅野火(Wildfire)的官方文档和相关示例代码,以确保您的实现与官方推荐的方式一致。
    8. 寻求社区帮助: 如果以上步骤无法解决问题,可以在相关的开发社区或论坛上寻求帮助,可能有其他开发者遇到过类似的问题。

    由于您提供的代码片段较为零碎,无法直接确定具体的问题所在。因此,建议根据上述步骤逐一排查,希望能对您有所帮助。如果需要更具体的帮助,请提供更多详细的代码和错误信息。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月28日