发新帖本帖赏金 20.00元(功能说明)我要提问
12345下一页
返回列表
打印
[应用相关]

基于AT32F425移植DAPLink,已经打通,源码分享。

[复制链接]
23755|88
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
XIVN1987|  楼主 | 2022-12-6 23:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 muyichuan2012 于 2024-7-5 09:27 编辑

AT32F425支持Crystal-less USB,,很适合用来做DAPLink。。所以移植了下,,代码在此:https://github.com/XIVN1987/DAPLink

现在基于HID的SWD调试器功能已经调通了,,基于CDC的虚拟串口通过串口助手往外发数据也没问题,,就是虚拟串口接收不到数据。。

对比了官方的 virtual_comport 例程,,实在找不出区别在哪里,,哪位熟悉AT32 USB的大神帮忙看下,,谢谢。。
--问题已解决,请看6楼。
有的群友反应GitHub访问速度慢,因此有下载一份源码放附件

DAPLink-master.zip

2.83 MB

使用特权

评论回复

打赏榜单

ArterySW 打赏了 20.00 元 2022-12-30
理由:基于AT32F425移植DAPLink,作品优秀。

评论
hejiang1777 2023-6-7 08:40 回复TA
牛Xpluse啊,好东西,谢谢分享 
xmetoo 2023-4-23 11:01 回复TA
相当优秀啊! 
来自 2楼
XIVN1987|  楼主 | 2023-1-3 12:29 | 只看该作者


原理图和 PCB 文件:https://oshwhub.com/xivn1987/daplink

没有晶振,,非常简介。。

使用特权

评论回复
板凳
muyichuan2012| | 2022-12-7 13:20 | 只看该作者
安装雅特力官网提供的串口驱动试试 https://www.arterytek.com/download/USB_Tool_Driver/VirtualCOM_DriverInstall_V1.0.31.zip

使用特权

评论回复
地板
XIVN1987|  楼主 | 2022-12-7 14:29 | 只看该作者

CDC是免驱的

使用特权

评论回复
5
XIVN1987|  楼主 | 2022-12-21 23:31 | 只看该作者


看起来是AT32F425 USB的0x83端点给上位机的IN包反馈不正确,,前面反馈NAK是正常的,,但是执行 usbd_ept_send(&Otg.dev, CDC_BULK_IN_EP, buff, len); 后 0x83 端点反馈就不正常了,,不知道什么情况下USB会对IN包给出这种反馈。。


使用特权

评论回复
评论
shenxiaolin 2022-12-24 11:51 回复TA
@XIVN1987 :非常感谢,有便宜点的推荐么? 
XIVN1987 2022-12-23 18:21 回复TA
@shenxiaolin :USB协议分析仪,https://item.taobao.com/item.htm?spm=a230r.1.14.199.1e941e0c9JqOKh&id=621981417136&ns=1&abbucket=15#detail 
shenxiaolin 2022-12-23 16:54 回复TA
楼主,这个抓包工具是啥? 
6
XIVN1987|  楼主 | 2022-12-29 21:30 | 只看该作者
本帖最后由 ArterySW 于 2022-12-30 09:10 编辑


问题解决了,,是因为我修改了 usb_conf.h,,从
#define USBD_RX_SIZE      128
#define USBD_EP0_TX_SIZE  24
#define USBD_EP1_TX_SIZE  20
#define USBD_EP2_TX_SIZE  20
#define USBD_EP3_TX_SIZE  20
#define USBD_EP4_TX_SIZE  20
#define USBD_EP5_TX_SIZE  20
#define USBD_EP6_TX_SIZE  20
#define USBD_EP7_TX_SIZE  20
修改成了
#define USBD_RX_SIZE      128
#define USBD_EP0_TX_SIZE  64
#define USBD_EP1_TX_SIZE  64
#define USBD_EP2_TX_SIZE  64
#define USBD_EP3_TX_SIZE  64
#define USBD_EP4_TX_SIZE  20
#define USBD_EP5_TX_SIZE  20
#define USBD_EP6_TX_SIZE  20
#define USBD_EP7_TX_SIZE  20


我以为这里的大小单位是字节,,原来是字。。

基于 AT32F425F8 的 DAPLink 已调通,,不需要晶振,,电路更简洁,,代码在此:https://github.com/XIVN1987/DAPLink


使用特权

评论回复
7
XIVN1987|  楼主 | 2022-12-30 09:16 | 只看该作者

竟然获得了现金打赏,,感谢老板

使用特权

评论回复
评论
ArterySW 2022-12-30 13:23 回复TA
感谢楼主分享。 
8
adolphcocker| | 2023-1-5 12:44 | 只看该作者
直接printf不好用吗?              

使用特权

评论回复
9
ingramward| | 2023-1-5 12:52 | 只看该作者
虚拟串口有问题吗?              

使用特权

评论回复
10
XIVN1987|  楼主 | 2023-1-5 13:04 | 只看该作者
ingramward 发表于 2023-1-5 12:52
虚拟串口有问题吗?

没问题。。

使用特权

评论回复
11
adolphcocker| | 2023-1-5 13:49 | 只看该作者
是不是程序进入了中断,不能执行后续的程序了。

使用特权

评论回复
12
XIVN1987|  楼主 | 2023-1-5 13:51 | 只看该作者
adolphcocker 发表于 2023-1-5 13:49
是不是程序进入了中断,不能执行后续的程序了。

看6楼,,问题解决了。。

使用特权

评论回复
13
minzisc| | 2023-1-6 12:36 | 只看该作者
官网不是有源代码可以参考的吗              

使用特权

评论回复
14
tifmill| | 2023-1-6 17:59 | 只看该作者
你的虚拟串口是否打开了 ?              

使用特权

评论回复
15
beacherblack| | 2023-1-6 19:04 | 只看该作者
下载程序以后,建议重新插拔一下。

使用特权

评论回复
16
timfordlare| | 2023-1-6 20:05 | 只看该作者
这个没有移植过。              

使用特权

评论回复
17
muyichuan2012| | 2023-1-10 09:12 | 只看该作者
大家看6楼,问题已经解决了,已经把电路图和源码分享给大家。

使用特权

评论回复
18
shenxiaolin| | 2023-2-6 16:18 | 只看该作者
非常棒!!!感谢分享,正好想要研究一下

使用特权

评论回复
19
wziyi| | 2023-2-14 21:11 | 只看该作者
SWDd_host.c 是干什么的呢

使用特权

评论回复
20
XIVN1987|  楼主 | 2023-2-15 00:23 | 只看该作者
本帖最后由 muyichuan2012 于 2023-5-16 15:21 编辑
wziyi 发表于 2023-2-14 21:11
SWDd_host.c 是干什么的呢



上位机通过 USB 发送命令给 DAPLink,DAPLink 将命令转换成 SWD 波形发送到目标芯片,从而完成对目标芯片的读写控制。。

pyocd 是一个开源的 DAPLink 上位机(库),其最底层的 read_dp()、write_dp()、read_ap()、write_ap() 四个函数就是通过 USB 向 DAPLink 发送需要其通过 SWD 接口发出的数据,从而实现对目标芯片 DP、AP 寄存器的读写,,其他所有高层函数都是通过调用这四个函数实现的

SWD_host.c 就相当于在 DAPLink 主控本地实现的 pyocd(DAPLink 上位机库),,因为是在本地实现的,,因此它就不需要通过 USB 给 DAPLink 发送命令了,,而是直接调用 SWD 的 swd_transfer_retry() 函数,,把需要通过 SWD 接口发出的数据作为参数传递给该函数即可。。当然,它也实现了 swd_read_dp()、swd_write_dp()、swd_read_ap()、swd_write_ap() 四个最关键的底层函数

https://github.com/XIVN1987/MCUProg 通过 pyocd 控制 DAPLink(DAP.c、SW_DP.c)实现对目标芯片在线烧写

https://github.com/XIVN1987/DAPProg 通过 SWD_host.c 控制 DAPLink(DAP.c、SW_DP.c)实现对目标芯片离线烧写

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

335

帖子

18

粉丝