调试原理[简要描述]

1.不同模式下的调试接口

  1. 相对于JTAG SWD的有效载荷会更高

2.调试架构

  1. 调试主机(Debug Host, PC)

作为调试的发起端,通过USB 以太网与 "调试接口硬件" 通信,发送调试指令(如设置断点、读取寄存器、下载程序等)。

  1. 调试接口硬件(Debug Interface Hardware)

负责将 PC 的指令转换为调试协议(Serial Wire 或 JTAG ,是 PC 与微控制器之间的 "硬件翻译层"。

  1. 调试端口(Debug Port, DP)接口

微控制器的外部调试入口,包含 SWJ-DP/SW-DP 模块:

  • SWJ-DP:支持 Serial Wire 和 JTAG 两种调试协议的复用端口;

  • SW-DP:仅支持 Serial Wire 协议的简化端口。它通过内部调试总线将调试信号传入微控制器内部。

  1. 调试访问端口(Debug Access Port, DAP)

微控制器内部的调试控制核心,包含 Memory Access Port(MEM-AP)

  • AHB-AP:基于 AHB 总线的访问端口,负责将调试指令转换为总线操作,访问微控制器的内部总线互联(bus matrix)。
  1. 内部总线互联(Internal bus interconnect, bus matrix)

微控制器的总线调度中心,连接以下核心模块:

  • 处理器核心(Processor core):Cortex-M3/M4 内核,是程序执行的核心。

  • NVIC 调试模块(NVIC, debug):嵌套向量中断控制器的调试组件,支持中断相关的调试操作。

  • 断点 单元( Break Point Unit):用于设置代码断点,使程序在指定位置暂停。

  • 观察点单元(Watch Point Unit):用于监控数据访问(如变量读写),触发调试动作。

  • 其他调试单元(Other debug units):支持覆盖率分析、性能统计等扩展调试功能。

  • APB 桥(APB Bridge :连接到扩展私有外设总线(Ext PPB),用于访问外设。

  • 存储器(Memory) :通过SystemD-Code(数据总线)、I-Code(指令总线)三类总线访问程序存储区和数据存储区。

3.内核总线侵入式调试(交互过程)

  1. AHB Access Port就会接再那个debug口(SW-DP or SWJ-DP),那么就可以和我们的系统进行一个交互

通过内核这个JTAG&SW(DAP外设)进行访问(通信协议)

通过DAP进来找到一个AP,ap就可以找内部总线上寻址(对应上面的Bus Matrix)

继续访问SRAM或Flash和外设寄存器 也可以往内核走 看cpu或nvic的寄存器

因为要访问总线 整个cpu的运行速度和外部沟通的速度会变慢。无法解决 所以叫侵入式调试

3.非侵入式调试(高阶调试)

  1. 与上面不同 通过ETM单元 可以直接与cpu DWT和Bus Matrix对接,这可以让cpu没有任何的延迟,直接获取cpu的指令

2.获取到的数据就通过tpiu出来

3.通过trace通道输出出来 数据量庞大

拓展知识

. 总线矩阵(Internal bus interconnect, bus matrix)的核心作用

总线矩阵是内核内部的总线调度中心,负责管理多主设备对多从设备的并发访问,核心功能包括:

  • 多主设备仲裁:支持多个主设备(如处理器核心、DMA、调试模块的 AHB-AP)同时发起总线请求,通过仲裁机制(如优先级配置)确保高优先级访问(如中断、调试)优先响应。

  • 多总线 并行 访问:I-Code、D-Code、System 总线可并行操作,例如处理器同时从 I-Code 取指令、从 D-Code 读数据、从 System 总线访问外设,大幅提升内核吞吐量。

  • 从设备路由:将主设备的访问请求路由到对应的从设备(如指令 Flash、数据 SRAM、外设寄存器),实现 "一主多从" 的灵活访问。

  1. 与 AHB/APB 总线的区别与关联
  • 区别 :Cortex-M4 内部总线(I-Code、D-Code、System)是内核级总线 ,专注于内核与最核心的存储 / 外设交互;而 AHB/APB 属于芯片级总线(由芯片厂商在 Cortex-M4 内核外扩展),AHB 用于高速外设 / 存储器,APB 用于低速外设,属于 "内核外的总线层级"。

  • 关联 :总线矩阵通过APB 桥(APB Bridge 连接到芯片级的 APB 总线,实现内核与外部低速外设的通信;同时,调试模块的 AHB-AP 通过总线矩阵,可访问内核的 I-Code、D-Code、System 总线,从而实现对指令、数据、外设的调试操作(如断点、寄存器读取)。

相关推荐
嵌入式小企鹅1 天前
嵌入式面试宝典
学习·面试·嵌入式·嵌入式工程师·高薪offer
星瞳科技OpenMV1 天前
国家级高新技术企业星瞳科技,定义嵌入式机器视觉行业新标杆
人工智能·嵌入式·图像识别·机器视觉·openmv·星瞳科技·星瞳科技openmv
Hello_Embed1 天前
【无标题】
网络·笔记·网络协议·tcp/ip·嵌入式
XD7429716362 天前
001. MSP430G2553 入门总述:从零开始学习这颗单片机
单片机·嵌入式硬件·学习·嵌入式·msp430g2553
CinzWS2 天前
A53 FPGA原型验证:从RTL到可运行系统的挑战
arm开发·嵌入式·芯片验证·原型验证·a53
Freak嵌入式2 天前
亲测可用!可本地部署的 MicroPython 开源仿真器
ide·驱动开发·嵌入式·仿真·micropython·upypi
嵌入式小企鹅2 天前
CPU供需趋紧、DeepSeek V4全链适配、小米开源万亿模型
人工智能·学习·开源·嵌入式·小米·算力·昇腾
FreakStudio2 天前
亲测可用!可本地部署的 MicroPython 开源仿真器
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
飞凌嵌入式2 天前
保姆级教程 | i.MX 93开发板适配Zephyr RTOS全解析
科技·嵌入式
freshman_y2 天前
Linux开发中DTS和/proc/device-tree讲解
linux·嵌入式