目录

前言:

一.ARM调试器整体介绍:

 a)ARM调试器概念:

b)ARM调试器的大致组成

c)硬件调试器的分类       

1. J-Link(SEGGER)

2. ST-Link(STMicroelectronics)

3. ULINK(Keil)

4. DAPLink/CMSIS-DAP

d)软件调试工具的分类

1. Keil µVision Debugger

2. IAR Embedded Workbench Debugger

3.VS Code + Cortex-Debug

e)协议的分类

(1) SWD(Serial Wire Debug)

(2) JTAG(Joint Test Action Group)

(3) CMSIS-DAP

(4) 厂商专用协议

二.ARM调试器的功能

a) ARM 调试器的主要调试功能包括:

b)ARM调试器的其它功能

1. Flash 编程

2. 内存访问

3. 外设寄存器查看与修改

4. 实时传输(RTT)

5. 跟踪功能

6. 性能分析

7. 脚本化调试

8. 多核调试

9. 虚拟串口(VCP)

10. 固件更新

11. 边界扫描(Boundary Scan)

12. 电源管理

13. 数据可视化

14. 调试器配置与管理

总结


前言:

        现在的硬件调试器集成了很多功能,在学习嵌入式应用方面时发现有时候实现某个功能很容易,实际上其中就有调试器的功劳。

        比如现在的开发板要实现串口的发送和接收就非常容易,主要是因为调试器中有虚拟串口,不再需要串口硬件模块了。

一.ARM调试器整体介绍:

 a)ARM调试器概念:

         ARM 调试器是用于开发和调试基于 ARM 架构的嵌入式系统的工具。它通过硬件和软件的结合,帮助开发者控制目标设备的运行状态、查看和修改寄存器/内存、设置断点、单步执行代码等

b)ARM调试器的大致组成

        首先是ARM或者其它厂商规定的协议,然后由这些协议进行设计硬件调试器,但光有硬件调试器没有输入输出的媒介也不行,由此在上位机运行的软件调试工具就诞生了。

        综上ARM调试器主要是由硬件调试器软件调试工具组成,当然其中用到的协议也不能小看。下面会进一步介绍硬件调试器、软件调试工具、协议。

c)硬件调试器的分类       

1. J-Link(SEGGER)

  • 特点

    • 高性能调试器,支持全系列 ARM Cortex 芯片。

    • 支持 SWD/JTAG 接口,提供 RTT(实时传输)和 ETM/ITM 跟踪功能。

    • 兼容 Keil、IAR、GDB 等多种软件工具。

  • 适用场景:企业级开发、复杂调试需求。

2. ST-Link(STMicroelectronics)

  • 特点

    • 专为 STM32 设计,支持 SWD/JTAG 接口。

    • 集成虚拟串口(VCP),支持拖放烧录。

    • 低成本,常见于 STM32 开发板(如 Nucleo 板)。

  • 适用场景STM32 开发首选,适合学生和爱好者。

3. ULINK(Keil)

  • 特点

    • Keil 官方调试器,深度集成 Keil MDK 开发环境。

    • 支持 SWD/JTAG 接口,提供高性能调试和 Flash 编程。

  • 适用场景Keil MDK 用户优先选择。

4. DAPLink/CMSIS-DAP

  • 特点

    • 开源调试器,支持 SWD/JTAG 接口。

    • 集成虚拟串口和拖放烧录功能。

    • 硬件成本低(基于 STM32F4/LPC11U35 等 MCU)。

  • 适用场景开源项目、教育用途(如树莓派 Pico 调试)。 

d)软件调试工具的分类

1. Keil µVision Debugger

  • 特点

    • Keil MDK 集成开发环境的一部分。

    • 支持断点、单步执行、寄存器/内存查看等功能。

    • 兼容 ULINK、J-Link、ST-Link 等多种硬件调试器。

  • 适用场景STM32、NXP LPC 等 Cortex-M 芯片开发。

2. IAR Embedded Workbench Debugger

  • 特点

    • IAR 开发环境内置调试工具。

    • 支持高级调试功能(如代码覆盖率分析、性能分析)。

    • 兼容 J-Link、ST-Link 等硬件调试器。

  • 适用场景企业级开发,尤其是对调试功能要求较高的项目。

3.VS Code + Cortex-Debug

(1) Visual Studio Code(VS Code)

  • 特点

    • 微软开发的免费、开源的代码编辑器。

    • 支持多种编程语言和插件扩展。

    • 跨平台(Windows、Linux、macOS)。

  • 适用场景:嵌入式开发、Web 开发、脚本编写等。

(2) Cortex-Debug 插件

  • 特点

    • 专为 ARM Cortex-M 微控制器设计的调试插件。

    • 支持多种调试器(如 J-Link、ST-Link、DAPLink、OpenOCD、PyOCD)。

    • 提供断点、单步执行、寄存器查看、内存查看等调试功能。

  • 适用场景:ARM Cortex-M 嵌入式开发。

e)协议的分类

(1) SWD(Serial Wire Debug)

  • 特点

    • 2 线制接口(SWDIO + SWCLK),占用引脚少。

    • 支持调试控制(如断点、寄存器访问)和 Flash 编程。

    • 适用于资源受限的 Cortex-M 系列芯片。

  • 支持的调试器

    • DAPLink

    • ST-Link

    • J-Link

    • ULINK

(2) JTAG(Joint Test Action Group)

  • 特点

    • 多线制接口(TDI、TDO、TCK、TMS 等),兼容性更广。

    • 支持复杂调试功能(如边界扫描)。

    • 适用于 Cortex-A/R/M 系列芯片。

  • 支持的调试器

    • J-Link

    • ULINK

    • ST-Link

(3) CMSIS-DAP

  • 特点

    • ARM 开源的调试协议,基于 USB HID 类实现。

    • 支持 SWD 和 JTAG 接口。

    • 主要用于低成本调试器(如 DAPLink)

  • 支持的调试器

    • DAPLink

    • 部分开源调试器(如 Black Magic Probe)

(4) 厂商专用协议

  • 特点

    • 针对特定厂商的芯片优化,提供额外功能(如高速 Flash 编程)。

    • 通常不开放协议细节。

  • 支持的调试器

    • ST-Link(STMicroelectronics)

    • J-Link(SEGGER)

    • TI XDS(Texas Instruments)

二.ARM调试器的功能

a) ARM 调试器的主要调试功能包括:

  1. 程序控制:

            1.启动、暂停、复位目标设备。

            2.单步执行、跳过函数、运行到指定位置。

      2.断点设置

           1.在代码中设置断点,使程序在特定位置暂停。

           2.支持硬件断点和软件断点。

b)ARM调试器的其它功能

    ARM 调试器 不仅仅是用于调试代码的工具,它还提供了许多其他功能,帮助开发者在嵌入式系统开发中更高效地完成任务。以下是 ARM 调试器除了调试功能之外的其他主要功能:


1. Flash 编程

  • 功能描述

    • 将编译后的二进制文件(如 .hex.bin.elf)烧录到目标设备的 Flash 存储器中。

    • 支持擦除、编程、校验等操作。

  • 应用场景

    • 固件更新。

    • 批量生产中的设备编程。


2. 内存访问

  • 功能描述

    • 查看和修改目标设备的内存数据(如 RAM、Flash、外设寄存器)。

    • 支持批量读取和写入。

  • 应用场景

    • 调试时查看变量值。

    • 修改外设寄存器以测试硬件功能。


3. 外设寄存器查看与修改

  • 功能描述

    • 通过 SVD(System View Description)文件查看和修改外设寄存器。

    • 提供外设寄存器的位域描述和实时更新。

  • 应用场景

    • 调试外设驱动(如 GPIO、UART、SPI)。

    • 验证硬件配置。


4. 实时传输(RTT)

  • 功能描述

    • 通过调试接口实时传输数据(如日志、变量值)。

    • 无需额外硬件(如串口)。

  • 应用场景

    • 实时监控程序运行状态。

    • 输出调试日志。


5. 跟踪功能

  • 功能描述

    • 通过 SWO(Serial Wire Output)或 ETM(Embedded Trace Macrocell)接口捕获程序执行轨迹。

    • 支持指令跟踪(ITM)和数据跟踪(ETM)。

  • 应用场景

    • 分析程序执行流程。

    • 诊断性能瓶颈。


6. 性能分析

  • 功能描述

    • 统计代码执行时间、函数调用次数、代码覆盖率等。

    • 提供性能分析报告。

  • 应用场景

    • 优化代码性能。

    • 验证代码覆盖率。


7. 脚本化调试

  • 功能描述

    • 支持通过脚本自动化调试任务(如批量测试、自动化烧录)。

    • 提供脚本接口(如 Python、TCL)。

  • 应用场景

    • 自动化测试。

    • 批量生产中的设备编程。


8. 多核调试

  • 功能描述

    • 支持同时调试多个 CPU 核心(如 Cortex-A 系列的多核处理器)。

    • 提供核心间的同步和通信调试功能。

  • 应用场景

    • 调试多核系统(如 SoC)。

    • 分析核心间的任务分配和通信。


9. 虚拟串口(VCP)

  • 功能描述

    • 通过调试器提供虚拟串口功能,用于串口通信。

    • 无需额外硬件(如 USB 转串口模块)。

  • 应用场景

    • 输出调试日志。

    • 与目标设备进行串口通信。


10. 固件更新

  • 功能描述

    • 支持调试器固件的更新。

    • 提供固件更新工具和接口。

  • 应用场景

    • 修复调试器固件中的问题。

    • 添加新功能或支持新芯片。


11. 边界扫描(Boundary Scan)

  • 功能描述

    • 通过 JTAG 接口测试 PCB 上的连接和元件。

    • 支持检测开路、短路和元件故障。

  • 应用场景

    • PCB 生产和测试。

    • 硬件故障诊断。


12. 电源管理

  • 功能描述

    • 监控目标设备的电源状态(如电压、电流)。

    • 支持电源控制(如复位、断电)。

  • 应用场景

    • 调试低功耗应用。

    • 验证电源管理功能。


13. 数据可视化

  • 功能描述

    • 将调试数据(如变量值、寄存器状态)以图形化方式展示。

    • 支持实时更新和历史数据查看。

  • 应用场景

    • 分析传感器数据。

    • 监控系统状态。


14. 调试器配置与管理

  • 功能描述

    • 配置调试器的参数(如时钟频率、接口类型)。

    • 管理调试器的连接和目标设备。

  • 应用场景

    • 适配不同的目标设备。

    • 优化调试性能。


总结

        ARM 调试器不仅提供了强大的调试功能,还支持 Flash 编程、虚拟串口、内存访问外设寄存器查看实时传输跟踪功能性能分析 等多种功能。这些功能帮助开发者在嵌入式系统开发中更高效地完成任务,从硬件验证到软件优化,覆盖了开发的各个环节。选择调试器时,可以根据项目需求选择支持相应功能的工具。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐