搜索
楼主: radio2radio

[原创] 【源代码】ST-LINK V2仿真器改CMSIS-DAP/DAPLink,带有SWO和CDC功能

  [复制链接]

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-9-11 18:47:54 | 显示全部楼层
zhousun 发表于 2018-9-10 08:27
楼主,用你的方法把stlink改成DAP,遇到一个问题,当使用SWO时,程序连续运行没有输出,如果设置断点就有输 ...

这个我不清楚,如果可能,拷贝有关SWO的代码到这里,也许有人可以帮您。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

3

蝴蝶豆

高级会员

最后登录
2021-2-14
发表于 2018-9-12 09:50:08 | 显示全部楼层
radio2radio 发表于 2018-9-11 18:47
这个我不清楚,如果可能,拷贝有关SWO的代码到这里,也许有人可以帮您。 ...

我的SWO代码非常简单,每隔100ms打印一次和一个自变量i,每次加一,printf(“test %d\n”,i);
采用jlink数据正常不丢失,采用dap i的值有时候跳好几个,有时候连续,程序内部未做其他事情
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

3

蝴蝶豆

高级会员

最后登录
2021-2-14
发表于 2018-9-12 10:17:56 | 显示全部楼层
原理程序使用HAL库,刚才用ll库做了一个最简单程序,基本上不丢了,感觉还是dap的问题;因为打开trace界面jlink有一个cache设置项,一般位2M,而dap没有,可能有时候pc机来不及接收就丢失了,而jlink有缓冲器就好多了
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-9-12 14:21:47 | 显示全部楼层
本帖最后由 radio2radio 于 2018-9-12 14:24 编辑
zhousun 发表于 2018-9-12 10:17
原理程序使用HAL库,刚才用ll库做了一个最简单程序,基本上不丢了,感觉还是dap的问题;因为打开trace界面j ...

我也用HAL测试了一下,SWO速度1MHz的时候,偶尔会丢失几个数据。
降低SWO速度到500KHz,就好很多了。

测试程序见附件。

STM32F407-LED5.rar

13.7 MB, 下载次数: 4, 下载积分: ST金币 -1

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

3

蝴蝶豆

高级会员

最后登录
2021-2-14
发表于 2018-9-13 10:14:08 | 显示全部楼层
这个是mdk软件问题,不知谁熟悉IAR可以试试,看看有没有这个问题
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-9-13 16:16:02 | 显示全部楼层
zhousun 发表于 2018-9-13 10:14
这个是mdk软件问题,不知谁熟悉IAR可以试试,看看有没有这个问题

您也可以试一试,关闭SWO/Trace设置界面里面的Timestamps,这样SWO的数据量会小很多很多。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

3

蝴蝶豆

高级会员

最后登录
2021-2-14
发表于 2018-9-14 19:41:04 | 显示全部楼层
radio2radio 发表于 2018-9-13 16:16
您也可以试一试,关闭SWO/Trace设置界面里面的Timestamps,这样SWO的数据量会小很多很多。 ...

好像不起作用,感觉不完全是软件问题,会不会和固件也有关系
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-9-14 20:34:17 | 显示全部楼层
zhousun 发表于 2018-9-14 19:41
好像不起作用,感觉不完全是软件问题,会不会和固件也有关系

也可能与硬件有关,SWO信号是走UART的通信协议的,几百KHz以上的时候,UART的信号极易受到干扰,如果发生接收错误,就不会再重新发送,只能放弃一个或几个数据包。

坊间许多开发板,都是IC脚直出直入,没有加比较靠谱的信号抗干扰/整形电路,这一点,你看看J-LINK V9的电路图就知道,人家的各种信号线上面都有小IC以及各种电阻电容外围零件支持,而我们的简化方案仅仅是做到逻辑原理层面的正确,自然就会可能出现各种的不稳定。

我在测试我做的DAP时,就遇到过一块干扰很大的开发板,直接会导致SWD连接时断时续,后来我把并排的杜邦线分开单线,相互距离稍微远一点,才勉强正常工作。用示波器一看,波形惨不忍睹。

建议,除非万不得已,使用较低一些的SWO速度,比如500KHz。
再就是,SWO使用过程中不一定需要一个数据不漏,偶尔缺少一些数据,不影响正常判断程序的工作情况。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

3

蝴蝶豆

高级会员

最后登录
2021-2-14
发表于 2018-9-15 13:34:16 | 显示全部楼层
我后来考虑了一下,这块DAP有天生缺陷,按照全速USB2.0 HID速度只有64kbyte,如果SWO速度快了肯定不行,1mbps大概100KBYTE了
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-9-15 13:56:00 | 显示全部楼层
本帖最后由 radio2radio 于 2018-9-15 17:23 编辑
zhousun 发表于 2018-9-15 13:34
我后来考虑了一下,这块DAP有天生缺陷,按照全速USB2.0 HID速度只有64kbyte,如果SWO速度快了肯定不行,1mb ...

不是这样的,SWO不使用USB,SWO硬件上是走USART串口的RX的,STM32F103在72MHz时,USART硬件的最高速度可以到2Mbps。 我们使用SWO时所设定的速度,就是这个UART的硬件速度,并不是SWO数据传输的平均速度。

你可以用示波器看到SWO信号的波形,也可以用另一个UART转USB小板把SWO线连到其RX上,在PC端收到每一包数据,你会发现没有打开Timestamps时数据量会少很多。

由于串口没有纠错协议,收到错的数据只能丢掉。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-26 01:24 , Processed in 0.168034 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表