zhousun 发表于 2018-9-15 13:346 P" L. n, X `4 u2 \
我后来考虑了一下,这块DAP有天生缺陷,按照全速USB2.0 HID速度只有64kbyte,如果SWO速度快了肯定不行,1mb ...
7 E" r/ x5 F4 |2 z/ k2 E" ^不是这样的,SWO不使用USB,SWO硬件上是走USART串口的RX的,STM32F103在72MHz时,USART硬件的最高速度可以到2Mbps。 我们使用SWO时所设定的速度,就是这个UART的硬件速度,并不是SWO数据传输的平均速度。 ; B$ V v. D y) y
9 e" E. H! w, T) `1 ^. ?9 Z
你可以用示波器看到SWO信号的波形,也可以用另一个UART转USB小板把SWO线连到其RX上,在PC端收到每一包数据,你会发现没有打开Timestamps时数据量会少很多。- K+ o" s: u9 b" m \1 g
7 w' T, h) k3 Y5 t2 ?由于串口没有纠错协议,收到错的数据只能丢掉。3 l' I/ d+ x6 f* Q' ~$ v/ u! o: K
您也可以试一试,关闭SWO/Trace设置界面里面的Timestamps,这样SWO的数据量会小很多很多。
好像不起作用,感觉不完全是软件问题,会不会和固件也有关系
也可能与硬件有关,SWO信号是走UART的通信协议的,几百KHz以上的时候,UART的信号极易受到干扰,如果发生接收错误,就不会再重新发送,只能放弃一个或几个数据包。
坊间许多开发板,都是IC脚直出直入,没有加比较靠谱的信号抗干扰/整形电路,这一点,你看看J-LINK V9的电路图就知道,人家的各种信号线上面都有小IC以及各种电阻电容外围零件支持,而我们的简化方案仅仅是做到逻辑原理层面的正确,自然就会可能出现各种的不稳定。 s, b' ^& m& k! y" ?/ t
) Z" I6 t! X, J
我在测试我做的DAP时,就遇到过一块干扰很大的开发板,直接会导致SWD连接时断时续,后来我把并排的杜邦线分开单线,相互距离稍微远一点,才勉强正常工作。用示波器一看,波形惨不忍睹。! i+ u {3 g( X6 A! q6 j) s t) W6 j
9 y: ?# C1 v+ v1 g
建议,除非万不得已,使用较低一些的SWO速度,比如500KHz。7 [) }6 q0 Y$ P* y$ o9 L
再就是,SWO使用过程中不一定需要一个数据不漏,偶尔缺少一些数据,不影响正常判断程序的工作情况。
不是这样的,SWO不使用USB,SWO硬件上是走USART串口的RX的,STM32F103在72MHz时,USART硬件的最高速度可以到2Mbps。 我们使用SWO时所设定的速度,就是这个UART的硬件速度,并不是SWO数据传输的平均速度。 ; B$ V v. D y) y
9 e" E. H! w, T) `1 ^. ?9 Z
你可以用示波器看到SWO信号的波形,也可以用另一个UART转USB小板把SWO线连到其RX上,在PC端收到每一包数据,你会发现没有打开Timestamps时数据量会少很多。- K+ o" s: u9 b" m \1 g
由于串口没有纠错协议,收到错的数据只能丢掉。3 l' I/ d+ x6 f* Q' ~$ v/ u! o: K
SWO虽然走的是UART,但是数据最终要上传到PC端,通过debug view显示出来,上传是通过hid还是cdc?我感觉是通过hid
你对。 SWO的数据,最终还是要通过DAP送上PC的。# x5 r: @ }+ X% r
HID通信应该是有缓存的,剩下的问题,就是SWO的数据量到底有多少,肯定不是连续以1Mbps的速率不停传送的。
链接:http://arm-software.github.io/CM ... USB__gr.html#WinUSB
首先,DAPLink给我的印象很差,曾经使用过一次NXP的开发板的DAPLink,很麻烦,放弃了。 不看好它。
其次,F103用来DAPLink能力不足,如果更换芯片,就背离了廉价仿真器的初衷。
这方面,我没有详细看过。7 o" l- @' D5 w' `; I" q
ITM功能也就是那几条指令,是ARM Cortex的一些内核原生具备的。 我理解Keil系统文件有可能在“暗中”设置过了,这可能取决于我们选择了哪些系统功能。
你用什么硬件,刷了哪个DAP固件?- ? M" J8 x) [7 M8 i; d
如果串口能够识别,CDC好用,说明USB工作正常。
MDK找不到IC,就要检查硬件连线是否正确,还有连线的质量也要检查,上面的网友就说过,质量不好的杜邦线都会有麻烦的。