目录
本文算是 DAPLINK 学习的一个引子,主要介绍一下各类调试器及其使用。 烧录方式: 1)ISP(In-System Preogramming,在系统编程):通过 MCU 片内 BootROM 完成在板 Flash 烧写操作 2)IAP(In-Application Programming,在应用编程):支持用户程序运行时烧写 Flash 3)调试接口(JTAG、SWD 等)烧写:借助仿真器 MCU 的调试接口控制 MCU 完成片内 Flash,甚至外扩的 Flash 烧写 一个 IEEE 小组专注于硅芯片测试方法。 许多调试和编程工具都使用联合测试 参见 IEEE Std 1149.1-1990《IEEE 标准测试访问端口和边界扫描体系结构规范》 , SWD(Serial Wire Debug,串行调试),也是 ARM 内核调试器的一种通信协议。相比 JTAG 协议,占用更少的端口资源。 JTAG 协议与 SWD 协议端口对比: 使用 SOC 和调试器之间的串行连接的调试实现。 这个连接正常需要一个双向数据信号和一个单独的时钟信号, 而不是 JTAG 所需的 4 到 6 个信号连接。—— 出自创芯工坊《用户手册》。 ST(意法半导体)官方发布了 3 种仿真器:ST-LINK、ST-LINK/V2、STLINK-V3SET,用于 STM8 和 STM32 系列芯片仿真。 ST-Link 仿真器支持 SWIM / JTAG / SWD 协议下载,其中 SWIM 协议是一种用于 STM8 微控制器的调试编程协议。 ST-LINK/V2 实物及引脚说明: ULink 仿真器实物图: J-Link 仿真器实物图: DAPLINK 仿真器是一类基于 ARM 开源的 DAPLINK(https://github.com/ARMmbed/DAPLink.git)实现,并修改优化的仿真器。 PWLINK 仿真器实物图片: 以下方式均基于 OpenOCD 实现烧录 (1)使用 STM32CubeMX 初始化工程,并编写完成代码 (2)创建 ./config/stlink.cfg 文件,并添加: 从上述配置文件中注意到:接口配置文件为 stlink.cfg,目标配置文件为 stm32f1x.cfg,且传输方式选择 hla_swd。 (1)使用 STM32CubeMX 初始化工程,并编写完成代码 (2)创建 ./config/daplink.cfg 文件,并添加: 从上述配置文件中注意到:虽然未使用接口配置文件,但手动设置适配驱动器选择 cmsis-dap,传输方式选择 swd,目标配置文件为 stm32f1x.cfg。前言
接下来我会首先使用合宙 AIR32F103 进行复刻,然后是分析 DAPLINK 源码,最后根据学习情况来自制 DAPLINK。
1 协议
1.1 JTAG 协议
动作组(JTAG)接口端口, 用于与处理器通信。
来自 IEEE 标准协会。—— 出自创芯工坊《用户手册》。1.2 SWD 协议
2 调试仿真器
2.1 ST-Link 仿真器
2.2 ULink 仿真器
2.3 J-Link 仿真器
2.4 DAPLINK 仿真器
3 LINKer 搭配 CLion 的使用
3.1 ST-Link + CLion + STM32F103RCT6
# choose st-link/j-link/dap-link etc.
# adapter driver cmsis-dap
# transport select swd
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000
3.2 DAPLINK + CLion + STM32F103RCT6
# choose st-link/j-link/dap-link etc.
adapter driver cmsis-dap
transport select swd
source [find target/stm32f1x.cfg]
由此可知,interface 文件中一般配置烧录器支持的驱动协议。
参考