分类 Debug 下的文章

stm32f4 usb 调试,软件调试可以使用 Wireshark 里面的 usb 组件,或者 usb Monitor 。 但是这些软件调试都有一个问题,必须在枚举分配地址之后,才能由软件调试收集到信息。如果在枚举的时候出错,就无法确认具体的错误。 碰到这种情况,只能选用有 usb 协议分析功能的逻辑分析仪。我使用了 kingst 的 la5016,就可以找到具体在枚举哪一步出错。 对于枚举的分析,可以参考文章: http://www.baiheee.com/Documents/090507/090507153901.htm http://www.waveshare.net/study/article-664-1.html

Wireshark 中过滤地址可以用 usb.addr=="3.8.0" 这种形式。

升级到新版的 jlink 使用几次以后还是出现了这个问题。 Failed to prepare for programming. Failed to download RAMCode!
经过尝试发现,原因应该是程序导致的问题,所以解决方法也很简单。
先用 r 来复位,然后用 erase 命令擦除flash,然后在用 loadbin 加载写入。
对 jlinkflash.txt 进行相应的修改就可以在 eclipse 中使用了

在使用rtthread调试sdcard是出现了一下问题,总结如下。

  1. 在FindSCR 函数中死循环。 解决方法: 在FindSCR函数的 while循环中,增加跳出即可。 在index++; 下面增加 if (index >= 2) break;

  2. 写入出错,总是提醒 write failed: 2, buffer 0x20002ccc 解决方法: 查看错误号2对应的是 SDIO_FLAG_DCRCFAIL,原来SDIO_TRANSFER_CLK_DIV = 1,计算频率为 72M/(1+2) = 24M, 尝试降低频率 配置SDIO_TRANSFER_CLK_DIV=2后正常。