DAP

DAP: Debug Access Port, 是微控制器内部的调试访问机制,它定义了如何访问内存、寄存器和其他调试资源。DAP时调试器访问芯片内部资源的唯一门户。它被设计为两层结构:DP (Debug Port) 负责外部通信,AP (Access Port) 负责内部访问。

  1. DP 是调试器(如 J-Link)直接连接的硬件接口。它的主要职责是管理物理连接和调试电源。它将 SWD(2 线)JTAG(5 线)信号转换为芯片内部的调试总线协议。DP 包含一个 SELECT 寄存器,用于决定当前的调试指令发往哪一个 AP(例如是从 AP[0] 读内存,还是从 AP[4] 连内核)。
  2. AP 负责与目标设备的内部总线(如AHB、APB等)进行通信。AP通常具有多个寄存器,用于访问目标设备的内存、寄存器和其他调试功能。
    •  AHB_AP: Core AHB_AP(AP[4])和System AHB_AP(AP[0])。其中jscope就是利用AHB_AP实时的从目标内存中读取相应的值。
    •  APB_AP(AP[1])
    •  HSE_AP(AP[2])
特性 DP (Debug Port) AP (Access Port)
位置 芯片最边缘,连接物理引脚 芯片内部,连接各种总线
数量 整个 DAP 通常只有一个 DP 可以有多个(AP[0], AP[1]...AP[n])
功能 物理链路管理、通电、选 AP 访问内存、控制内核、安全认证
错误现象 如果 DP 挂了,J-Link 连 ID 都读不到 如果 AP 挂了/锁了,读数会是全 0 或 Timeout

我们可以通过Jlink的相关指令去操作DP,例如:

J-Link> r0  # 拉低 Reset
J-Link> writeDP 1 0x50000000
J-Link> writeDP 2 0x000000F0
J-Link> r1  # 释放 Reset
J-Link> readAP 3

引用:

(65 封私信 / 80 条消息) STM32的DAP和SWD调试有什么区别? - 知乎

更多推荐