ARM处理器程序烧写和仿真方式:协议、烧写器硬件、下位机、上位机

概述

  • JTAGSWD物理层通信协议,类似于UART这种。绝大部分处理器都支持JTAG通信,因为JTAG是调试的通用协议,而SWDARM的专用调试通信协议。
  • CMSIS-DAP是ARM规定的调试标准,规定了应用层的调试指令集。
  • JLinkSEGGER开发的通用调试器JLink固件能兼容很多处理器架构的调试标准,兼容CMSIS-DAP
  • STM32内部调试单元支持SWDJTAG两种物理层通信协议。
  • STM32ARM处理器,内部调试单元符合CMSIS-DAP标准,能使用对应的调试指令。
  • 基于CMSIS-DAP标准开发的ST-Link调试器能用于STM32调试,使用SWD通信,并使用CMSIS-DAP标准里规定的调试指令。
  • SEGGER开发的J-Link能兼容CMSIS-DAP标准,因此也能用于STM32调试,使用SWD或者JTAG通信协议都可以,使用J-Link调试器时能使用J-Link规定的指令进行调试。J-Link固件兼容了很多芯片架构的调试指令集,比如ARM、PowerPC等等。

一、程序烧写和仿真

1、程序烧写的方式

无论是jtag还是串口烧写,本质都是先通过上位机(keil或者flymcu或者芯片官方上位机等烧写bin的上位机)往mcuram里烧写一段代码即.FLM文件,这段代码在上位机(keil体现在配置项里,flymcu应该是内置了吧,jlink体现在JFlash的文件夹下面)里存的有,这段代码的作用是从上位机接收数据(即用户程序的bin文件)并将其写入到flash指定的地址空间里。而jtag和串口起到的作用都是通信接收数据。


1.1 OTA形式(下载模式下升级软件)
  • 系统Bootloader
    官方系统Bootloader程序(位于OTP区域)和官方Download Tools是配套使用实现OTA,连接线一般是串口,如果觉得不好用,也可以自行开发上位机来适配官网的Bootloader程序:官方会提供对应的通信协议和指令的,上位机按照这个协议给官方Bootloader发送bin程序即可。这个外在的条件是MCU启动时要手动置boot0和boot1引脚的电平,确保MCU从系统Bootloader启动。如果想做到flymcu那种不依赖外部boot引脚而是自动一键烧写,则硬件电路上需要像正点原子开发板那样多一块串口芯片ch340,此芯片的dtr引脚连接到复位引脚可控制mcu复位,rts脚连接到boot0引脚控制boot0引脚的电平,然后在flymcu选择dtr低电平复位,rts高电平进入系统Bootloader,即可一键下载程序。
  • 用户Bootloader
    用户开发的Bootloader程序(位于ROM)和用户开发的Download Tools(烧写上位机发送bin文件给Bootloader)是配套使用实现OTA,连接线一般是串口,这里的通信协议就是用户自定义了。这个也可以成为二次Bootloader,官方的系统Bootloader称为一次Bootloader。如果启用二次Bootloader,那么进行软件升级时,MCU要从Flash启动而不能从系统Bootloader启动了。这个可以模仿系统Bootloader的进入条件:MCU上电前置某个GPIO的电平;也可以在经过一段时间检查串口是否接收到数据,如果有则进入软件升级,否则跳转到应用程序段。

1.2 通用Jlink形式

Jlink固件JFlash上位机是配套使用实现程序烧写,连接线是Jlink即仿真器硬件

Jlink固件keil是配套使用实现程序烧写和仿真,连接线是Jlink即仿真器硬件


1.3 各个芯片厂家link形式
  • ST芯片厂家

  • st-link固件flymcu上位机或者flash demo loader上位机或者 st-link untilty上位机是配套使用实现stm32程序烧写,连接线是st-link即仿真器硬件

  • st-link固件keil是配套使用实现stm32程序烧写和仿真,连接线是st-link即仿真器硬件

  • 兆易创新芯片厂家

  • gd-link固件固件和gd download tools上位机,连接线是gd-link即仿真器硬件

  • gd-link固件keil是配套使用实现gd32程序烧写和仿真,连接线是gd-link即仿真器硬件

  • 国民技术芯片厂家

  • nc-link固件和national download tools上位机,连接线是nc-link即仿真器硬件

  • nc-link固件keil是配套使用实现n32程序烧写和仿真,连接线是nc-link即仿真器硬件


1.4 第三方link形式

pwlink(创意工坊)支持一定数量的ARM处理器烧写和仿真


2、程序仿真的方式

Jlink固件keil是配套使用实现程序烧写和仿真,连接线是Jlink即仿真器硬件

st-link固件keil是配套使用实现stm32程序烧写和仿真,连接线是st-link即仿真器硬件

3、调试示波器

调试示波器即上位机软件,可以在程序运行时(不需要进入Debug模式)通过调试器实时查看变量的值,其通信是基于JTAG或者SWD,因此调试电脑和MCU之间需要通过Jlink调试器或者DAP调试器连接。
(1)Jscope

  • 安装JLink驱动时自动安装,一起安装的还有JFlash

(2)Freemaster

  • NXP芯片公司提供,官网可以下载

二、烧写和仿真接口、设备

2.1 JTAG和SWD是处理器的物理层调试协议

在这里插入图片描述

特性JTAG (IEEE 1149.1)SWD (Serial Wire Debug)
协议类型扫描链协议 (Scan Chain)串行协议 (Serial Protocol)
引脚数多 (标准至少4-5根): TMS, TCK, TDI, TDO, (nTRST)少 (最少仅需2根): SWDIO, SWCLK
连接方式需要连接所有目标器件形成一个扫描链点对点连接,每个目标器件独立连接
速度相对较低 (受限于扫描链更新)相对较高 (串行协议效率更高)
带宽较低较高
调试功能强大 (完整边界扫描,可访问所有JTAG功能)核心调试功能完备 (寄存器访问、断点、内存读写等)
编程功能支持支持
物理接口通常使用标准的10/14/20针JTAG连接器通常使用与JTAG兼容的连接器,但只连接部分引脚
优势功能强大、标准化、支持多器件调试、边界扫描测试引脚少、布线简单、成本低、速度快、功耗低
劣势引脚多、布线复杂、成本稍高、速度相对慢功能不如JTAG全面 (缺少边界扫描等高级功能)
主要应用复杂多核系统、FPGA调试、需要边界扫描的场合主流ARM Cortex芯片调试/编程的首选

总结:

  • SWD是JTAG的精简和优化版本,专门针对ARM Cortex内核设计。
  • 核心区别在于协议和引脚数: SWD使用高效的串行协议,只需2根核心线(SWDIO, SWCLK),而JTAG使用基于扫描链的协议,需要至少4-5根线。
  • SWD优势明显: 引脚少、布线简单、成本低、速度高、功耗低,完全满足绝大多数ARM芯片调试编程需求,已成为嵌入式领域最主流的调试接口。
  • JTAG优势在特定场景: 功能更全面(尤其边界扫描),更适合复杂系统、多器件调试或需要非ARM内核调试的场景。
  • 兼容性: 很多调试器(如J-Link, ST-Link)和芯片调试接口支持双协议,同一个物理接口(如标准的20针JTAG/SWD连接器)可以通过配置选择使用JTAG模式或SWD模式。

2.2 DAP和Jlink和ST-link和Ulink的关系

DAP, J-Link, ST-Link, ULINK这些都是调试探针或调试器硬件。它们的作用是连接PC上的调试软件目标板上的调试接口,将调试命令(通过JTAG/SWD等协议)发送给目标芯片的调试单元,并传回状态信息。

  1. CMSIS-DAP (DAP)
  • CMSIS-DAP (DAP)是 一个开源的调试器固件标准,是应用层的调试指令集,由ARM定义。通常支持SWD协议和处理器通信,部分支持JTAG协议(取决于固件实现),和调试电脑即上位机的通信一般是USB HID协议,操作系统兼容性好,免驱或通用驱动。

  • 基于开源的DAP标准可以制作自己的调试器固件即程序,进而制作自己的调试器:调试器硬件一般是基于一个USB设备即带USB接口模块的微控制器,比如STM32F103、LPC11U35, SAMD21, RP2040等MCU,把自己制作的符合CMSIS-DAP规范的调试器固件烧写到调试器的MCU里即可。很多淘宝上的DAPLink调试器也都是这样自制的。

  • DAP标准能提供基础的调试(断点、单步、寄存器/内存访问)和编程(Flash下载)功能。

  • 基于CMSIS-DAP标准的常见调试器,可以称为DAP调试器

    • ULink-DAP(已停产):ARM和Keil合作的
    • ST-Link/V2-1:ST芯片厂家的
    • NXP LPCLink2:NXP芯片厂家的
    • PW-Link等第三方的DAPLink调试器
  1. J-Link (SEGGER)
  • J-Link (SEGGER)是由SEGGER公司开发和销售的商业级、高性能、通用型调试探针或者说调试器。其支持JTAG, SWD, cJTAG, FINE等多种协议,用起来十分通用。

  • J-Link调试器硬件通常基于SEGGER定制的专用芯片或FPGA,固件则由SEGGER开发。淘宝山也有挺多盗版的Jlink调试器。

  • J-Link调试器支持几乎所有主流的微控制器架构(ARM Cortex, RISC-V, RX, MSP430, 8051等)和数千种芯片型号。

  • J-Link调试器被绝大多数主流IDE(Keil, IAR, Embedded Studio, Eclipse+GDB等)原生支持。

  • J-Link调试器支持高级调试特性(如J-Trace指令跟踪),配套软件(J-Link Commander, J-Flash)功能齐全且强大。

  • 工业级品质,稳定性高,价格 相对较高

  • J-Link硬件版本

    • 硬件版本目前常见的是v9
  • J-Link固件版本: v6 v7 v8 v9 v11

    • J-Link BASE,
    • J-Link PLUS,
    • J-Link ULTRA+
    • J-Link PRO(带跟踪功能)

两者对比
Keil中需要选择对应的仿真器类型,这里把ST-Link、ULinkCMSIS-DAP并列选择了,实际上CMSIS-DAP是一个标准,而ST-Link、ULink是此标准下的一些具体实现。而对于其他芯片厂家基于CMSIS-DAP标准制作的调试器比如GD-Link、NC-Link就没有这个待遇了,使用这些调试器时需要选择CMSIS-DAP Debugger

在这里插入图片描述


  1. ST-Link (STMicroelectronics)
  • ST-Link调试器由STMicroelectronics (意法半导体) 为其STM8和STM32微控制器开发和提供的官方、低成本调试器/编程器,其符合CMSIS-DAP标准,本质上就是DAP调试器

  • ST-Link调试器主要支持SWD协议(针对STM32)和SWIM协议(针对STM8)。部分版本(V2, V2-1)也支持JTAG

  • ST-Link调试器硬件早期基于STM32F1系列微控制器,后期版本(如V2-1, V3)使用更强大的MCU或专用芯片。

  • ST-Link调试器完美支持ST自家的STM32CubeProgrammerSTM32CubeIDE,也被Keil、IAR等主流IDE支持(需要安装ST驱动)。

  • ST-Link/V2-1的固件可以刷成开源的CMSIS-DAP固件

  • ST-Link调试器版本

    • ST-Link/V2 (最常见),
    • ST-Link/V2-1 (增加虚拟串口/VCP功能),
    • ST-Link/V3 (性能更强,体积更小)
  1. ULINK (ArRM/ Keil)
  • 由ARM公司(早期由Keil开发维护)为其Keil MDK开发环境设计和优化的官方调试器系列,支持JTAG, SWD协议,基于CMSIS-DAP标准,基于专用硬件设计,本质上就是DAP调试器
  • Keil µVision IDE深度集成,提供无缝的调试体验和最佳性能,对其他IDE的支持不如J-Link广泛。
  • 商业产品,价格较高。
  • ULink调试器版本
    • ULINK-ME (基础),
    • ULINK2 (经典),
    • ULINKpro (高端, 带跟踪)。

2.3 总结梳理

  • JTAGSWD通信协议,绝大部分处理器都支持JTAG通信,因为JTAG是调试的通用协议,而SWDARM的专用调试通信协议。
  • CMSIS-DAP是ARM规定的调试标准
  • JLinkSEGGER开发的通用调试器JLink固件能兼容很多处理器架构的调试标准,兼容CMSIS-DAP
  • STM32内部调试单元支持SWDJTAG两种通信协议。
  • STM32ARM处理器,内部调试单元符合CMSIS-DAP标准。
  • 基于CMSIS-DAP标准开发的ST-Link调试器能用于STM32调试,使用SWD通信,并使用CMSIS-DAP标准里规定的指令。
  • SEGGER开发的J-Link能兼容CMSIS-DAP标准,因此也能用于STM32调试,使用SWD或者JTAG通信协议都可以,使用J-Link调试器时能使用J-Link规定的指令进行调试。

三、例子解读

国民技术的官方系统Bootloader和官方Download Tools的使用验证

兆易创新的官方系统Bootloader和官方Download Tools的使用验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值