【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】

文章目录

    • 1.1 Debug Access Port
    • 1.2 Access Port
      • 1.2.1 IDR 寄存器
    • 1.3 Mem-APs 介绍
      • 1.3.1 Debug 寄存器访问模型
      • 1.3.2 APs 中寄存器的介绍
      • 1.3.4 AP CSW Register
      • 1.3.5 AP TAR Register
      • 1.3.6 AP DRW Register

1.1 Debug Access Port

外部 Debugger(DS-5/Trace32) 会通过JTAG接口或者SWD接口和DAP相连:
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第1张图片

JITAG 一般是5个pin:TCK, nTRST(可选), TDI, TDO, TMS
SWD 是两个pin: SWCLKTCK 和 SWDIOTMS(既可以作为JTAG接口TMS接口又可以作为SWD的数据接口)

下图可以看到在DP中有 SWD DP和 JTAG DP,一共两种,中间会有一个选择器(SWD/JTAG select)。
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第2张图片

图 1-1

SW-DP 的连接方式是通过 一个时钟线,一个双向的数据线;
SWJ-DP的连接方式是通过五根线:
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第3张图片

表 1-1

那么DP如何判断当前连接的是哪种协议呢
答:SWD 和 JTAG会复用TMS信号线,外部通过TMS发送一个16bits的序列到SWJ-DP,SWJ-DP内部实现了一个监控电路(watcher circuit), 然后监控电路会根据序列号进行判断当前传输是JTAG方式还是SWD方式。监控电路默认配置使用的是JTAG 操作,所以JTAG协议在系统复位的时候就可以使用,不需要发送选择序列。

SWJ-DP同时会有一个状态输出 pin: JTAGNSW,当其状态为高是表示当前是JTAG 模式,如果为低表示当前是SWD模式

1.2 Access Port

ADIv6 specifications 对AP的定义有几点要求:

  • 必须有 Identification Register, ADIv5同样要求必须有 IDR寄存器,其偏移地址为0xFC, 并且是AP 寄存器地址空间的最后一个寄存器;ADIv5 规定如果IDR寄存器的值为0,那么表示没有AP存在。
  • 任何AP都必须支持DP的访问;
  • 所有的AP reserved 寄存器都必须是 RES0
  • ABORT 机制是可选的

ADI 支持多个APs,最简单的ADI 只有一个AP,这个AP可以是MEM-AP 或者 JTAG-AP。
ADIs 可以有以下几种情况的AP搭配:

  • MEM-AP和JTAG-AP 都有
  • 只有MEM-APs
  • 只有 JTAG-APs

1.2.1 IDR 寄存器

在ADIv5中 IDR 寄存器的定义如下,分为6个域。
在这里插入图片描述
bits[31:17] 主要用来显示版本号和公司信息;
bits[16:13] 定义AP所属的类,有以下几种情况:

  • 0b0000 No defined class
  • 0b0001 COM Access Port(Component AP)
  • 0b1000 Memory Access Port

bits[16:13]、bits[7:4]和bits[3:0] 一块定义了AP的类型信息:
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第4张图片

1.3 Mem-APs 介绍

1.3.1 Debug 寄存器访问模型

coresight 组件中的寄存器通常会当做外设映射到系统空间,一般会占用4KB的地址空间,当然可以是4KB倍数的地址空间。
对于ARMv8和ARMv9 这种空间粒度的大小可以达到64KB。

ROM Table 可以被看做一组特殊的 debug 寄存器,通常也会占用4KB的地址空间,如果系统中只有一个debug组件连接到AP,这个时候 ROM Table 是可选的,也即硬件可以不实现ROM Table,如果系统中debug 组件的个数超过1个,那么ROM Table 必须实现。

APs 出来的接口可以是 Debug APB,AXI,AHB( 或者JTAG)。
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第5张图片

Coresight 图 1-2

  • APB Access Port(APB-AP): 一般用于Cortex-A或者Cortex-R Coresight 组件的访问,通常A/R系列会有一个Debug APB的接口;
  • AHB Access Port(AHB-AP): Cortex-M系列的 Debug 接口通常是AHB 接口;
  • AXI Access Port(AXI-AP): 挂载在系统 memory bus上,可以直接访问到系统memory,比如DDR,SRAM等;
  • JTAG Access Port(JTAG-AP): 对 JTAG 设备的访问。这个是兼容以前较早的ARM处理器,如ARM9; 这些较早的处理器内部是用 JTAG 来调试的。但是现在的ARM处理器,已经不用这种方式,统一用 memory-mapped 方式进行调试。

1.3.2 APs 中寄存器的介绍

一个 DAP 可以包括多个AP,AP 受 DP 的控制, 只有对 AP 的访问,才可以转化成 memory-mapped 总线,对 SoC 的内部资源进行访问。

根据 TMS 信号线 DP 区分完外部传入的是JTAG还是SWD之后,会去访问 DP 中的 DPACC或者APACC这两个寄存器中的一个 (不管是JTAG还是SWD都是可以访问这个寄存器)。如果访问的是DPACC,那么访问的将是访问DP的一些寄存器;如果访问的是APACC那么,后面将会接着访问AP的一些寄存器。

AP 里面主要有如下几个寄存器:

  • CSW(Control/Status Word):用于配置和控制memory interface的transfer;
  • TAR(Transfer Address):用于装载当前transfer的地址;
  • DRW(Data Read/Write):装载要transfer的数据,如果是读取操作,直接读取这个寄存器即可。
  • ROM(Debug ROM Address):装载rom table地址的寄存器;
  • IDR(Identification Register):显示当前版本号及memory interface 的类型,如APB-AP,AXI-AP等。

AP出来后 memory interface(memory interface都是有地址的)可以是AXI、AHB 或者APB,memory interface 会将地址配在TAR寄存器中,将数据配置在DRW寄存器中。AP会根据对上面三个寄存器的操作来产生 bus interface 的 transfer。

1.3.4 AP CSW Register

【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第6张图片

  • DbgSwEnable, bit[31] 控制软件是否可以访问AP中的寄存器,1: enable, 0: disable;
  • Prot, bits[30:24] 与 Type 域一块配置使用,用于总线访问权限控制;
  • SPIDEN, bit[23] 安全访问控制位,1:enable, 0: disalbe;
  • Type, bits[15:12],同 Prot 域一块使用;
  • MTE, bit [15] memory tagging 访问控制;
  • DeviceEn, bit[6] MEM-AP 使能控制位;
  • AddrInc, bits[5:4] 地址自动增长控制位;
  • Size, bits[2:0] MEM-AP 总线访问宽度控制位。

1.3.5 AP TAR Register

内容如下:
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第7张图片

1.3.6 AP DRW Register

具体内容如下:
【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】_第8张图片

上一篇:ARM Coresight 系列文章 2.1 - ARM Coresight 组件介绍
下一篇:ARM Coresight 系列文章 3.1 - ARM Coresight DP 对 AP 的访问 1

你可能感兴趣的:(#,ARM,Coresight,系列,coresight,soc-400,soc-600,DAP,ATB,APB-AP,SWD)