【发布时间】: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 字节时已损坏。