综合技术交流
直播中

张娟

7年用户 2026经验值
私信 关注
[问答]

AT32F437 USB HOST RT-thread u盘读写不稳定是怎么回事?

主芯片AT32F437VMT7配合RT-Thread Studio 开发环境,RT-Thread 版本 4.1.0            

         使用USB host 接U盘,发现很不稳定,简单的读写没问题,长期写入测试,会不定时出现USB口卡死的问题,调试发现是drv_usbfsh.c 里面的drv_pipe_xfer函数进入死循环了,此问题手里有三个U盘,新旧不一,牌子不同,有两个会出现此故障,一个不会。        
        不清楚是不是RT-thread usb host框架的问题,RT-thread 论坛上也有很多反馈usb host 此问题的,都是各显神通,没有最终定论。

        希望咱雅特力可以给力些,看咱usb host驱动上还有啥完善的不,否则usb host 看着挺好,但无法实际工程应用,很是遗憾了。        
        曾经想使用CherryUSB包来替换咱的usb 驱动,发现at32F437的usb host 不支持dma 没发使用CherryUSB了。。。

回帖(1)

李秀兰

2024-7-26 17:22:10
根据您提供的信息,AT32F437 USB HOST RT-thread 在读写U盘时出现不稳定的现象。以下是一些建议和可能的原因,以帮助您解决问题:

1. **固件和软件版本**:首先,请确保您使用的是最新版本的RT-Thread和相关的驱动程序。软件更新可能包含修复已知问题的新补丁。

2. **U盘兼容性**:不同的U盘可能具有不同的兼容性。您提到有三个U盘,其中两个出现故障,一个正常。这可能表明问题与U盘的兼容性有关。尝试使用其他品牌或型号的U盘,看看问题是否仍然存在。

3. **USB HOST驱动**:检查您的USB HOST驱动是否正确配置和初始化。确保驱动程序支持您的U盘类型,并正确处理USB请求。

4. **死循环问题**:您提到在 `drv_usbfsh.c` 文件中的 `drv_pipe_xfer` 函数出现死循环。这可能是由于错误的逻辑或资源管理问题导致的。检查该函数的实现,确保它正确处理USB传输请求,并在出现错误时正确地返回。

5. **硬件问题**:检查您的硬件连接,确保USB接口和U盘之间的连接稳定。此外,检查电源供应是否稳定,因为不稳定的电源可能导致USB设备出现问题。

6. **调试和日志**:增加调试信息和日志记录,以便更好地了解问题发生的原因。这可以帮助您确定问题是否与特定的USB请求或传输有关。

7. **资源竞争**:检查您的系统中是否存在资源竞争,例如中断处理或内存分配。资源竞争可能导致系统不稳定,从而影响USB传输。

8. **社区支持**:考虑在RT-Thread社区论坛或相关开发人员群体中寻求帮助。他们可能已经遇到类似的问题,并可以提供解决方案或建议。

9. **硬件测试**:如果可能,尝试在不同的硬件平台上测试您的代码,以确定问题是否与特定的硬件组件有关。

通过以上步骤,您可以逐步排查问题,并找到导致USB HOST RT-thread不稳定的原因。希望这些建议对您有所帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分