成功移植的DAP-LINK(附带源码与原理图),比ST-LINK J-TAG还好用

比JLink 与STlink还好用的在线调试工具源码,附带源码与原理图,可以自行制作。
DAPLink 是ARM 官方开源的一款调试烧录器,以前叫CMSIS DAP,现在改名叫DAPLink,同时在功能上也大大提高了。DAPLINK 可以调试arm cortex 全系列mcu,所以相比STLINK 和jlink 这方面更有优势。官方的维护一直在更新,未来也会扩充更多功能进来。

DAPLINK 主要功能:
 Arm-cortex 芯片的调试和烧录(HID)
 自带虚拟串口,省去usb 转串口(CDC)
 拖拽式编程,模拟出u 盘,hex 或者bin 拷贝进行完成烧录(MSC)
 WEBUSB 功能(固件要升级到2050)
 超简易拖拽式更换固件

关于烧录功能:
DAPLink 使用标准的CMSIS-DAP 协议,这就使得所有常用的单片机开发IDE 都可以
完美的支持,目前支持的开发环境如下:
 KEIL MDK
 IAR
 PyOCD
 其他支持CMSIS-DAP 协议的软件

关于u 盘拖拽式编程:
通过USB 把DAPLink 插上电脑以后会识别出来一个U 盘(u 盘名称不同版本可能会有区别,但是使用是一样的)。把hex 或者bin 文件拷贝进u 盘中,就可以把代码烧录进目标芯片的flash 中。这是通过把烧录flash 算法嵌入daplink 固件中来实现的,所以目前每个DAPLINK 固件只能支持一种特定目标芯片进行烧录。如果想实现其他芯片的拖拽功能,可以更换固件。更换固件方法我们会在后面详述。

目标mcu 和固件
DAPLINK 使用u 盘拖拽下载的方式,目前只能以种固件对应一种MCU,比如我这个固件是用来给stm32f103c8 进行拖拽下载的,我想给stm32f072c8 进行拖拽方式烧录的时候就需要更换固件。(stm32f103c8 和stm32f103cb 同一系列的可能可以共用,不同厂商mcu 的系列之间兼容性不一样,需要用户自己做测试)目前ARM 官方已经提供了一系列支持的目标芯片固件,如果没有提供也没关系,可以参考我们的《DAPLINK 固件编译说明》文档自己编译定制固件。官方默认支持的目标MCU固件我们会打包提供给大家,请到资料包-》固件文件夹下查找。

MDK 配置调试下载指南:
MDK 也就是keil 的arm 开发版本,在arm 单片机开发中是最常用的一个集成开发环境。集编写调试烧录与一体,因为keil 本身就是arm 公司旗下的。所以和arm 的DAPLINK工具自然是可以无缝的完美使用了。下面介绍下具体在MDK 中的配置步骤:
打开MDK 工程,点击如下图所示的魔术棒打开配置窗口:
在这里插入图片描述

然后打开debug 标签页,通过下拉框选择CMSIS-DAP Debugger,然后在点setting进入调试器的详细设置:
在这里插入图片描述
下一步在CMSIS-DAP ADapter 下拉框选择CMSIS-DAP(测试any 实际上也可以),选择下时钟频率,最大10m,如果烧录不稳定请更换连接线或者降低频率。如果你已经有一个单片机和DAPLINK 正确通过SWD 连接起来,右侧在SW Device 下会看到有识别出来。如果读不到设备请查看和目标MCU 的连接。
在这里插入图片描述
在这里插入图片描述
至此,我们MDK 使用DAPLINK 的配置选项已经完成了,编写好代码就可以进行调试烧录了。如下图所示,左边的为下载按钮,右边的为调式按钮。

在这里插入图片描述

源码路径及原理图路径如下(在我上传的资源中进行更新):

https://download.csdn.net/download/qq_35968965/13195289

### 使用DapLink进行MSPM0调试和开发 #### 安装必要的工具链和支持包 为了能够顺利使用 DapLink 进行 MSPM0 调试和开发,需要先安装一系列支持软件。这包括但不限于: - **Visual Studio Code (VSCode)** 和其扩展插件 MPLAB Extensions for Visual Studio Code Extension Pack[^1]。 - **GNU Arm Embedded Toolchain** 或者其他兼容 ARM Cortex-M 系列微控制器的编译器。 这些工具提供了编写、编译以及下载程序到目标板所需的功能。 #### 配置硬件连接 确保物理上正确连接了 DAPLink 接口 MSPM0 开发板之间的 USB 数据线。通常情况下,当设备成功连接时,在 Windows 设备管理器中可以看到相应的 COM 端口号被分配给该接口;而在 Linux 上则会自动创建 `/dev/ttyACM*` 类型的串行端点。 对于希望在不同操作系统间移植项目的开发者来说,考虑到 ELF 文件格式主要用于 Unix-like 平台而 EXE 是针对 Windows 的情况确实存在差异[^2]。不过,通过交叉编译的方式可以解决这一问题——即在一个平台上生成另一个平台能运行的应用程序。 #### 设置IDE环境并加载工程模板 打开 VSCode 后利用已安装好的 MPLAB 插件集新建一个基于 CMSIS-Pack 的工程项目。选择适合于所用 MCU 型号(这里指 MSPM0)的标准库作为基础框架,并按照提示逐步完善各项配置参数直至初始化完毕。 此时应该能看到 IDE 自动生成了一套完整的 C/C++ 工程结构,其中包含了启动代码、链接脚本以及其他必要资源文件夹等组成部分。 #### 编写测试应用程序 下面给出一段简单的 LED 闪烁例子用于验证整个流程是否通畅无阻: ```c #include "msp.h" void main(void){ WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; // Stop watchdog timer P1->DIR |= BIT0; // Set P1.0 to output direction while(1){ volatile uint32_t i; P1->OUT ^= BIT0; // Toggle P1.0 for(i=8000;i>0;i--); // Delay loop } } ``` 这段代码实现了最经典的“Hello World!”式的嵌入式编程练习之一:让单片机上的某个 GPIO 引脚周期性高低电平翻转从而驱动外部接驳的小灯泡亮灭交替变化。 #### 下载固件至目标板 借助于之前提到过的 DAPLink 桥接装置所提供的 SWD/JTAG 接口服务功能,可以直接把刚才编辑完成后的二进制映像烧录进去。具体操作是在 VSCode 中找到对应按钮触发构建过程之后再点击上传选项即可实现自动化部署动作。 值得注意的是,某些特定型号可能还会涉及到额外的安全机制设定比如解锁 Flash 写保护位等问题,请参照官方文档获取更详尽指导说明资料。 #### 测试调试 一旦上述步骤顺利完成,则可以通过观察实际效果来判断一切正常否。假如遇到任何异常状况也不要慌张,充分利用集成环境中自带的各种诊断辅助手段如断点设置、变量监视窗口等功能来进行排查纠错工作直到最终解决问题为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王先森001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值