【问题标题】:FatFS data corruption on read write读写时 FatFS 数据损坏
【发布时间】:2017-09-14 19:15:13
【问题描述】:

我们在包含 Cortex-M4 的板上使用带有 FreeRTOS 和 lwIP 的 Chan's FatFS。该板能够通过 TCP 套接字发送和接收文件,并使用 FatFS 将它们存储在 SD 卡上。

我正在尝试测试该功能,但它似乎无法正常运行。当我发送和接收相同的文件时,每次内容都以类似的方式损坏。损坏的最明显特征是它在文件的开头附加了两个零字节。这种情况一直在发生,而其余的损坏可能会有所不同(不显着)。

我知道没有足够的信息来解决问题,但我陷入困境并寻找一些解决问题的建议。 Chan 的代码非常神秘,我无法通过它。

【问题讨论】:

  • 您需要开始缩小问题的原因。如果传输失败,则 FAT 读取、TCP/IP 传输、FAT 写入或它们之间的某些粘合逻辑出现故障。我建议您开始在源设备的文件系统中准备一个众所周知的测试文件(例如“Hello World”),将调试跟踪添加到 I/O 缓冲区和两端的调用,并挂钩网络嗅探器。如果故障是间歇性的,则添加断言并停止意外数据。哦,如果它是间歇性的,并且涉及到 RTOS,那么请用细齿梳检查所有的锁和线程。
  • 您好,感谢您提供宝贵的建议。我认为问题与 TCP 无关,因为我已经嗅到了流量并成功地重建了原始文件。我相信它应该以某种方式与扇区边界有关,因为据我所知,文件在第 0、512、1024 字节时已损坏。

标签: freertos lwip fatfs


【解决方案1】:

对于遇到类似问题的任何人,我找到了一种解决方法。如果我将读写操作限制为扇区大小(512 B),一切正常。它可能会降低吞吐量,但可靠性是我们目前的首要任务。

我不会接受这个,因为它不是真正的解决方案。

【讨论】:

    【解决方案2】:

    如果您提供用于 fatfs 函数调用的序列和参数,那么这可以帮助我帮助您。我最近将 fatfs 用于数据记录器应用程序。

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2017-07-16
      • 1970-01-01
      • 2012-10-21
      • 2019-02-19
      • 2015-09-22
      相关资源
      最近更新 更多