首页
社区
课程
招聘
[原创]DAP-LINK研究笔记-用STM32单片机替换J-LINK
发表于: 2021-9-18 17:04 36079

[原创]DAP-LINK研究笔记-用STM32单片机替换J-LINK

2021-9-18 17:04
36079

Arm Mbed DAPLink 是一个开源软件项目。把代码编译以后,会生成一个固件(和单片机开发是相同的),把固件写到单片机里面,单片机就具备了J-LINK的功能。其成本很低,在淘宝上也有现成的产品。本文记录的是使用一个STM32开发板制作DAP-LINK的过程。


图 1 淘宝上的DAP-LINK

本次实验的基本流程如下:

1.使用开源的代码编译生成DAP-LINK固件。

2.使用J-LINK烧写DAP-LINK的固件到开发板中。

3.验证DAP-LINK固件在开发板中的可用性。

下面先介绍基本的硬件、软件环境,再介绍实验步骤。

实验主机:笔记本电脑

开发板:STM32F103C8T6开发板[1](用来承载DAP-LINK)

开发板:STM32F103VET6开发板[2](用来验证DAP-LINK可用)

辅助调试器:J-LINK调试器[3]

开发板和辅助调试器依次如下图所示:

图 2 J-LINK调试器示意图

图 3 STM32F103C8T6开发板

源码:x893 DAP-LINK源码[4]

实验主机:Win10

编译环境:ARM MDK 5.14[5]

制作过程部分主要描述编译环境构建、编译DAP-LINK源码、烧写DAP-LINK程序到小开发板、验证DAP-LINK的可用性。其中,在验证可用性的环节,DAP-LINK指示灯和SWD调试连接需要进行原理图分析后,才能确定芯片的连接关系,进而使用杜邦线建立DAP-LINK和开发板的连接。USB接口的连接,x893和我们的小开发板的连接是一致的,所以这部分不用担心烧写DAP-LINK程序后会不兼容。

经多次测试,x893 的DAP-LINK源码适用于本开发板。其代码在github中开源,事实上,该代码衍生自官方的github。

图 4  x893 DAP-LINK源码


该代码使用ARM MDK[6]编译,所以需要在笔记本上构建编译环境,才能完成代码编译。

下载MDK。使用脚注提供的百度云连接安装即可。安装和破解过程参考网络已有教程资源[7]。安装完成后,需要下载最新的CMSIS包[8],选择Legacy support for Arm Cortex-M devices下载,下载完成后默认安装即可。

打开\Firmware\STM32目录下的CMSIS_DAP.uvproj工程文件,即可打开MDK的工程。打开后如下图所示。选择CMSIS-DAP-V2-F103。点击左侧箭头即可进行编译。

图 5  MDK打开工程项目后的界面

编译完成后,build output窗口有以下输出:


图 6  编译完成的日志

4.3 烧写DAP-LINK固件到开发板

将开发板与J-LINK建立连接,并将J-LINK插入到笔记本中,点击图5所示的蓝色深色箭头,完成烧写。期间,需要确保J-LINK连接到开发板后,MDK可以识别到J-LINK插入到开发板,而且在debug->settings中可见J-LINK已经识别到与J-LINK连接的MCU了。

图 7  确保J-LINK与开发板连接后识别到开发板的MCU


图 8  J-LINK下载固件到开发板中

重新将C8T6开发板(烧写DAP-LINK固件的开发板)的USB插入到笔记本中,笔记本中识别了两个设备,分别是串口设备和USB设备。这样,我们的C8T6就变成了一个CMSIS DAP调试器,其功能类似J-LINK。

图 9  将DAP-LINK重新插入电脑后出现两个设备

将C8T6开发板与被测试的VET6开发板相连接。连接关系如下图所示。需要注意的地方有两个:SWD连接和DAP-LINK的指示灯。

图 10  DAP-LINK和开发板的连接方式

打开被测试开发板资料中的例程,设置开发板烧写方式为DAP-LINK。然后以烧写DAP-LINK的方式进行编译、烧写。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-9-18 17:12 被fengzhidian编辑 ,原因: 改了格式
收藏
免费 6
支持
分享
最新回复 (8)
雪    币: 689
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
学习学习, 我也想做一个, 不过我是想自己画ob的板子
2021-9-18 23:08
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
0llydbg 学习学习, 我也想做一个, 不过我是想自己画ob的板子
最小系统就可以,注意usb口要接到单片机的usb io口上。usb驱动电路做好,接俩led我觉得就够了
2021-9-18 23:43
0
雪    币: 689
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
我主要是想熟悉一下pads, 另外我想加上wifi或者蓝牙
2021-9-19 07:32
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
0llydbg 我主要是想熟悉一下pads, 另外我想加上wifi或者蓝牙[em_89]
可以可以
2021-9-19 09:43
0
雪    币: 2604
活跃值: (231)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
请问 DAPLINK 有没有对标 JLINK v9 的版本,最好也是用F205做主控的?
2021-9-26 19:58
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
星雪鸢尾 请问 DAPLINK 有没有对标 JLINK v9 的版本,最好也是用F205做主控的?
具体不太了解:)
2021-10-8 13:13
0
雪    币: 202
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问 你是怎么让JLINK commander 识别DAPLink的?
我这里提示连接不上
SEGGER J-Link Commander V7.60e (Compiled Jan 20 2022 11:16:43)
DLL version V7.60e, compiled Jan 20 2022 11:15:28
Connecting to J-Link via USB...FAILED: Cannot connect to J-Link.
J-Link>
2022-3-1 22:35
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
seraphsun 请问 你是怎么让JLINK commander 识别DAPLink的? 我这里提示连接不上 SEGGER J-Link Commander V7.60e (Compiled Jan 20 2022 ...
我记得是先使用J-Flash软件连接的时候,选择了DAP,然后在使用commander连接的时候自动给识别了。因为这么干也没出国啥幺蛾子,所以就没深入研究软件细节,哈哈。
2022-3-7 15:47
0
游客
登录 | 注册 方可回帖
返回
//