搜索
bottom↓
回复: 52

开贴/开源:移植CMSIS-DAP到STM32F072,兼容某调试器

  [复制链接]
(5572161)

出65入81汤圆

发表于 2020-8-25 16:12:14 | 显示全部楼层 |阅读模式
本帖最后由 SUPER_CRJ 于 2020-8-29 11:06 编辑

最近终于闲下来了,最近准备认真研究DAP,然后做成基于DAP核心的脱机下载器和无线调试器。

1:第一步就是精通DAP。所以打算从0开始移植DAP到STM32F072上面:可以使用SWD+SWO+CDC。
原本的DAP是基于STM32F103,也比较稳定。
但是其中的:HID+CDC是使用库函数形式,而且是从别人那里得来的,虽然能使用,也比较稳定,但是令人看不懂。前几个月终于使用纯寄存器版本写通了STM32F0/F1的USB。经过测试,其HID比较稳定。
所以开贴,并且不保留开源其最终代码。
2:兼容某LINK硬件。从网上找了几个DAP,其中终于找到一个固件,但是其LED显示的不友好,默认是关闭LED的。而且没有CDC(好像没有)。
3:使用MDK软件编写,还有就是:网上也找到一个,但是是基于开源的编译器编写的。我想移植也移植不了。
4:代码所有相关STM32,全部使用寄存器模式。
5:预计时间:五天时间,本周末完成。
(5572131)

出65入81汤圆

 楼主| 发表于 2020-8-25 16:12:44 | 显示全部楼层
本帖最后由 SUPER_CRJ 于 2020-9-19 19:32 编辑

2020.09.19:都过了半个月了。因为其中一个发送位:数字写错了。导致查了快10天。
今天刚刚移植终于成功:暂时没有加CDC串口,没有加SWO,日后版本再加。支持SWD与RESET引脚。日后增加了,再更新到二楼位。
测试了下载,在线仿真。仿真跑了二十分钟,应该问题不大。

但是SWD速度上有问题(在MDK中选择:时钟,基本都跑不到。最快选择:10Mhz,实测:740Khz),因为有其它事情,所以日后再优化。
建立了一个表格:与JLINKOB-072 / V9做了对比。





最终固件如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(5566964)

出0入0汤圆

发表于 2020-8-25 17:38:51 来自手机 | 显示全部楼层
占楼占楼
(5563552)

出0入4汤圆

发表于 2020-8-25 18:35:43 | 显示全部楼层
支持大牛!
(5562218)

出0入0汤圆

发表于 2020-8-25 18:57:57 来自手机 | 显示全部楼层
支持学习
(5558688)

出5入80汤圆

发表于 2020-8-25 19:56:47 | 显示全部楼层
排队支持!
不过不建议开源,公布开发流程就行.

真心学习的.会花时间学.
做淘宝的基本上都是等着白捡

(5557125)

出0入0汤圆

发表于 2020-8-25 20:22:50 | 显示全部楼层
五天全部寄存器搞定,牛人一个
(5554369)

出0入0汤圆

发表于 2020-8-25 21:08:46 | 显示全部楼层
历害了楼主,学习了!
(5553935)

出0入0汤圆

发表于 2020-8-25 21:16:00 来自手机 | 显示全部楼层
我觉得这个能火
(5553524)

出0入0汤圆

发表于 2020-8-25 21:22:51 | 显示全部楼层
USB还是用ST或者第三方的库吧?
其他模块用寄存器都不是难事,只要头文件和启动文件就行了。
(5547885)

出0入0汤圆

发表于 2020-8-25 22:56:50 来自手机 | 显示全部楼层
关注一下
(5547577)

出0入0汤圆

发表于 2020-8-25 23:01:58 | 显示全部楼层
谢谢,历害了楼主,学习了!
(5546332)

出90入0汤圆

发表于 2020-8-25 23:22:43 来自手机 | 显示全部楼层
强贴留名,多谢楼主
(5521146)

出125入0汤圆

发表于 2020-8-26 06:22:29 来自手机 | 显示全部楼层
可以搜索dap42,基于libopencm3开发,代码质量不错而且移植也非常方便
(5517144)

出0入0汤圆

发表于 2020-8-26 07:29:11 | 显示全部楼层
关注一下            
(5510425)

出0入0汤圆

发表于 2020-8-26 09:21:10 | 显示全部楼层
期待作品!
(5503759)

出0入0汤圆

发表于 2020-8-26 11:12:16 | 显示全部楼层
坐等下单。
(5500613)

出0入0汤圆

发表于 2020-8-26 12:04:42 | 显示全部楼层
留贴跟中....
(5492797)

出0入28汤圆

发表于 2020-8-26 14:14:58 来自手机 | 显示全部楼层
期待下,楼主不是已经有无线下载器了吗?就是不知道功耗大不大。
(5490987)

出0入0汤圆

发表于 2020-8-26 14:45:08 | 显示全部楼层
不明觉厉   期待楼主大作
(5489855)

出0入0汤圆

发表于 2020-8-26 15:04:00 | 显示全部楼层
楼主,这里有个 >> 竞品 <<   
(5488763)

出65入81汤圆

 楼主| 发表于 2020-8-26 15:22:12 | 显示全部楼层
useronce 发表于 2020-8-26 15:04
楼主,这里有个 >> 竞品

厉害!你写的这个帖子我看了好多遍了。
可惜我只会用,MDK,想移植好多次都没有成功。我还在你帖子下面留言的
(5488095)

出0入0汤圆

发表于 2020-8-26 15:33:20 | 显示全部楼层
牛B,关注
(5422414)

出0入0汤圆

发表于 2020-8-27 09:48:01 来自手机 | 显示全部楼层
支持,关注
(5400303)

出0入4汤圆

发表于 2020-8-27 15:56:32 | 显示全部楼层
看看后续结果。
(5397663)

出0入0汤圆

发表于 2020-8-27 16:40:32 | 显示全部楼层
跟进楼主,一起学习。
(5384574)

出0入0汤圆

发表于 2020-8-27 20:18:41 | 显示全部楼层
牛,等待楼主的大作
(5334715)

出0入0汤圆

发表于 2020-8-28 10:09:40 | 显示全部楼层
SUPER_CRJ 发表于 2020-8-26 15:22
厉害!你写的这个帖子我看了好多遍了。
可惜我只会用,MDK,想移植好多次都没有成功。我还在你帖子下面留 ...

这个出来好像就是MDK的工程呀
(5334649)

出0入0汤圆

发表于 2020-8-28 10:10:46 | 显示全部楼层
期待楼主的大着,不过现在感觉自己做这个的少 买一个也挺省事的
(5245021)

出65入81汤圆

 楼主| 发表于 2020-8-29 11:04:34 | 显示全部楼层
正式开始
首先是硬件。
然后打样回来,下载某固件,测试:LED正常,SWD接口正常,SWO正常,CDC串口正常。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(5244268)

出65入81汤圆

 楼主| 发表于 2020-8-29 11:17:07 | 显示全部楼层
1:为什么用STM32F072,STM32072自带USB晶振,连接上电脑可能产生满足USB需求的48MHZ晶振。(其实STM32F070算是最便宜的,但是CDC和SWO无法实现。只能实现SWD/JTAG功能。)
2:必要的话,可以切换到其它调试器。

软件设计:
使用内部的48MHZ时钟。

SWDIO:PA4 - (GPIO模拟)
SWCLK:PA2
RST:PA1
TX:PA9  -  (原生串口)
RX:PA10
SWO:PA3 - (串口RX引脚用作SWO)

LED:PA0
(5243682)

出65入81汤圆

 楼主| 发表于 2020-8-29 11:26:53 | 显示全部楼层
LED显示设计方案:

不得不佩服,某调试器,LED的设计:根据分析,
1:其使用的是PWM控制LED(利用定时器,也算是利用的好资源,我之前很长一段时间都是GPIO直接控制。)
2:在上电的时候,LED快速闪烁(这样最起码可以判断程序运行起来了。)
3:在插上USB被识别后:LED以1S为周期,大约800ms亮,200ms灭。(如果插上USB还是快速闪烁的话:则表明USB有问题。)
4:在进行下载/在线调试的时候,LED感觉上能明显和程序运行的强度相关(传输数据量大的时候,LED灭的时间就比较长。)。

所以我做的DAP上的LED也采用PWM进行控制。
但是为了区分和某调试器的区别:
1:上电时候也是快速闪烁。用于指示程序的运行。(如果上电没有闪烁,可以判断有问题)
2:被USB识别后:800ms灭,200ms亮。
3:在运行DAP核心的时候,LED也需要进行变化。
(5226337)

出0入0汤圆

发表于 2020-8-29 16:15:58 | 显示全部楼层
第五天了,等楼主~
(5114517)

出65入81汤圆

 楼主| 发表于 2020-8-30 23:19:38 | 显示全部楼层
成功了一半。
发一些心得:
        1. 测试发现:VID/PID真的没有什么影响。
        2. 其USB:1.0和2.0也没有什么影响。
        4. 根据最终的测试:
                a. MDK真的是根据:CMSIS-DAP名称来操作的。
        5. 去除掉一些处理代码:发现下载完全正常,但是发现:进不了调试模式(非常的卡!!)
也就是下载与调试存在一定的区别!


写到现在:
还存在一些问题,下次检查。因为移植的那个与USB耦合的太强了,自己写的HID分离花了点时间。到现在还有一些问题:
1:SWD速度上不去,在MDK里面选择:1MHZ,才能运行。实测频率:340KHZ
2:可以正常下载,但是调试模式进不去
3:如果下载的目标程序屏蔽了SWD接口,需要使用复位。但是第一次:总是提示:连接失败。

明天继续,本来想就是分离HID接口就行的,但是实在还是出了问题,快三天了,没有解决。
(5081353)

出0入0汤圆

发表于 2020-8-31 08:32:22 | 显示全部楼层
SUPER_CRJ 发表于 2020-8-30 23:19
成功了一半。
发一些心得:
        1. 测试发现:VID/PID真的没有什么影响。

顶起!楼主加油!
(5062141)

出0入0汤圆

发表于 2020-8-31 13:52:34 | 显示全部楼层
顶起来,楼主牛逼
(4782482)

出0入0汤圆

发表于 2020-9-3 19:33:33 | 显示全部楼层
顶起!!!楼主,加油!!!
(4779993)

出0入0汤圆

发表于 2020-9-3 20:15:02 | 显示全部楼层
加油!!
(4768855)

出0入0汤圆

发表于 2020-9-3 23:20:40 | 显示全部楼层
顶起,加油!
(4554820)

出0入0汤圆

发表于 2020-9-6 10:47:55 | 显示全部楼层
厉害,有HID的代码开源吗
(4552817)

出0入0汤圆

发表于 2020-9-6 11:21:18 | 显示全部楼层
支持楼主有时间研究并且开源
(4529337)

出0入0汤圆

发表于 2020-9-6 17:52:38 | 显示全部楼层
SUPER_CRJ 发表于 2020-8-29 11:17
1:为什么用STM32F072,STM32072自带USB晶振,连接上电脑可能产生满足USB需求的48MHZ晶振。(其实STM32F070 ...

好像042更小更便宜。
(4525976)

出65入81汤圆

 楼主| 发表于 2020-9-6 18:48:39 | 显示全部楼层
huangqi412 发表于 2020-9-6 17:52
好像042更小更便宜。

042还是比较贵的,估计是多带了一个CAN。
STM32070比较便宜,不过要外加晶振。
还有就是:如果可以使用CH552这样的51单片机或者更便宜,不过51的RAM有限,DAP的内核不知道能不装下。
(4520711)

出0入0汤圆

发表于 2020-9-6 20:16:24 | 显示全部楼层
高手,学习下。
(4517565)

出0入0汤圆

发表于 2020-9-6 21:08:50 | 显示全部楼层
楼主加油!
(4477095)

出0入0汤圆

发表于 2020-9-7 08:23:20 | 显示全部楼层
SUPER_CRJ 发表于 2020-9-6 18:48
042还是比较贵的,估计是多带了一个CAN。
STM32070比较便宜,不过要外加晶振。
还有就是:如果可以使用CH ...

用IO模拟下载时序,主频还是要高才好。IO翻转的快。
(4476542)

出0入0汤圆

发表于 2020-9-7 08:32:33 | 显示全部楼层
useronce 发表于 2020-8-26 15:04
楼主,这里有个 >> 竞品

新的DAP支持WEBUSB,描述符有什么特别的?
(3400543)

出65入81汤圆

 楼主| 发表于 2020-9-19 19:25:52 | 显示全部楼层
今天刚刚移植成功:
但是想要更快,需要继续优化。最终固件已上传二楼位。
(3178965)

出0入0汤圆

发表于 2020-9-22 08:58:50 | 显示全部楼层
顶起,mark
(2914921)

出0入8汤圆

发表于 2020-9-25 10:19:34 | 显示全部楼层
CH552还真能,用Arduino环境测试烧写4KB/S,读取10KB/S。我在时钟上加了1us延迟,应该还是大有优化空间。调试还没测试。
https://github.com/DeqingSun/ch5 ... es/05.USB/CMSIS_DAP


CH552用开漏模式,5V电压对3.3V目标的电压输出是0.3mA,对于3.3V目标不做电平转换估计也可以。STM32有不少可以直接上5V。SAMD21不支持5V,但测试也没问题。

有人测试CH558优化得当可以SRAM烧录达到305K的速度。有详细的技术说明,但是没有开源。
https://whycan.com/t_3766.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(2459805)

出0入0汤圆

发表于 2020-9-30 16:44:50 | 显示全部楼层
等楼主做出来,买一个表示支持
(2458278)

出65入81汤圆

 楼主| 发表于 2020-9-30 17:10:17 | 显示全部楼层
iamseer 发表于 2020-9-25 10:19
CH552还真能,用Arduino环境测试烧写4KB/S,读取10KB/S。我在时钟上加了1us延迟,应该还是大有优化空间。调 ...

那这个估计是最性价比的DAP。552才1.x元。
(2030829)

出0入0汤圆

发表于 2020-10-5 15:54:26 | 显示全部楼层
感谢分享,手头正好有CH552,我测试下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-29 04:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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