跳转至

交叉触发

本章介绍 Cortex®-R52+ 处理器的交叉触发逻辑。

1. 关于交叉触发

在 Cortex®-R52+ 处理器中,每个核以及每个 ETM 内的调试逻辑都具有交叉触发输入与输出,可用于发出触发事件信号。每个核都有一个与之关联的 CoreSight 交叉触发接口(CTI,Cross-Trigger Interface),用于连接这些信号。各 CTI 模块又由一个交叉触发矩阵(CTM,Cross-Trigger Matrix)连接到处理器唯一的外部交叉触发通道接口。

CTI 使调试逻辑、ETM 跟踪单元与 PMU 之间能够相互作用,也能够与其他 CoreSight 组件相互作用。这称为交叉触发(cross-triggering)。例如,可以配置 CTI,使其在 ETM 跟踪单元触发事件发生时产生中断。

下图给出了调试系统的各个组件以及可用的触发输入与触发输出。

Figure14-1

2. 触发输入与触发输出

本节介绍 CTI 可用的触发输入与触发输出。

下表给出了 CTI 的输入。

CTI 输入 描述
0 Cross Halt 触发事件。
1 PMU 中断
2 -
3 -
4 ETM 跟踪单元外部输出 0
5 ETM 跟踪单元外部输出 1
6 ETM 跟踪单元外部输出 2
7 ETM 跟踪单元外部输出 3

下表给出了 CTI 的输出。

CTI 输出 描述
0 请求处理器进入调试状态
1 请求处理器退出调试状态
2 CTI 中断
3 -
4 ETM 跟踪单元外部输入 0
5 ETM 跟踪单元外部输入 1
6 ETM 跟踪单元外部输入 2
7 ETM 跟踪单元外部输入 3

3. Cortex®-R52+ CTM

来自所有核的 CoreSight CTI 通道信号通过一个 CTM 模块合并,从而使 Cortex®-R52+ 处理器呈现单一的交叉触发通道接口。

下图给出了 Cortex®-R52+ 处理器的 CTM。在 CTM 中,外部通道输出由所有内部通道输出的或(OR)输出驱动。每个内部通道输入由所有其他 CTI 的内部通道输出与外部通道输入的或输出驱动。图中只给出了通道的其中一位,但每一位都与该图类似。该图未示出与通道相关的握手与同步逻辑。

Figure14-2

4. 交叉触发寄存器汇总

本节汇总 Cortex®-R52+ 处理器中每个 CTI 的寄存器。这些寄存器通过内存映射接口或外部调试接口访问。

有关 Cortex®-R52+ 处理器中每个 CTI 基地址的更多信息,请参见第 420 页的 12.7.1 Debug memory map。

下表给出了 Cortex®-R52+ 交叉触发寄存器的汇总。除若干包含 ID 信息的只读寄存器外,CTI 寄存器在《Arm® Architecture Reference Manual for A-profile architecture》中有完整说明。这意味着不存在 Cortex®-R52+ 特有的细节。

注意: PADDRDBG31 的取值与 CoreSight 软件锁会限制通过内存映射外部调试接口对 CTI 寄存器的写访问。当 PADDRDBG31 驱动为低电平时,必须使用 CoreSight 软件锁来解锁交叉触发寄存器的写权限。当 PADDRDBG31 驱动为高电平时,软件锁不限制交叉触发寄存器的写访问权限。软件锁由 Lock Access 寄存器(CTILAR)控制。

偏移 名称 类型 描述
0x000 CTICONTROL RW CTI Control Register
0x010 CTIINTACK WO CTI Output Trigger Acknowledge Register
0x014 CTIAPPSET RW CTI Application Trigger Set Register
0x018 CTIAPPCLEAR WO CTI Application Trigger Clear Register
0x01C CTIAPPPULSE WO CTI Application Pulse Register
0x020 CTIINEN0 RW CTI Input Trigger to Output Channel Enable Registers
0x024 CTIINEN1 RW CTI Input Trigger to Output Channel Enable Registers
0x028 CTIINEN2 RW CTI Input Trigger to Output Channel Enable Registers
0x02C CTIINEN3 RW CTI Input Trigger to Output Channel Enable Registers
0x030 CTIINEN4 RW CTI Input Trigger to Output Channel Enable Registers
0x034 CTIINEN5 RW CTI Input Trigger to Output Channel Enable Registers
0x038 CTIINEN6 RW CTI Input Trigger to Output Channel Enable Registers
0x03C CTIINEN7 RW CTI Input Trigger to Output Channel Enable Registers
0x0A0 CTIOUTEN0 RW CTI Input Channel to Output Trigger Enable Registers
0x0A4 CTIOUTEN1 RW CTI Input Channel to Output Trigger Enable Registers
0x0A8 CTIOUTEN2 RW CTI Input Channel to Output Trigger Enable Registers
0x0AC CTIOUTEN3 RW CTI Input Channel to Output Trigger Enable Registers
0x0B0 CTIOUTEN4 RW CTI Input Channel to Output Trigger Enable Registers
0x0B4 CTIOUTEN5 RW CTI Input Channel to Output Trigger Enable Registers
0x0B8 CTIOUTEN6 RW CTI Input Channel to Output Trigger Enable Registers
0x0BC CTIOUTEN7 RW CTI Input Channel to Output Trigger Enable Registers
0x130 CTITRIGINSTATUS RO CTI Trigger In Status Register
0x134 CTITRIGOUTSTATUS RO CTI Trigger Out Status Register
0x138 CTICHINSTATUS RO CTI Channel In Status Register
0x13C CTICHOUTSTATUS RO CTI Channel Out Status Register
0x140 CTIGATE RW CTI Channel Gate Enable Register
0x144 ASICCTL RW CTI External Multiplexer Control Register
0xF00 CTIITCTRL RW 第 469 页的 14.5.2 CTI Integration Mode Control Register
0xFA0 CTICLAIMSET RW CTI Claim Tag Set Register
0xFA4 CTICLAIMCLR RW CTI Claim Tag Clear Register
0xFA8 CTIDEVAFF0 RO CTI Device Affinity Register 0
0xFAC CTIDEVAFF1 RO CTI Device Affinity Register 1
0xFB0 CTILAR WO CTI Lock Access Register
0xFB4 CTILSR RO CTI Lock Status Register
0xFB8 CTIAUTHSTATUS RO CTI Authentication Status Register
0xFBC CTIDEVARCH RO CTI Device Architecture Register
0xFC0 CTIDEVID2 RO CTI Device ID Register 2
0xFC4 CTIDEVID1 RO CTI Device ID Register 1
0xFC8 CTIDEVID RO 第 468 页的 14.5.1 CTI Device Identification Register
0xFCC CTIDEVTYPE RO CTI Device Type Register
0xFD0 CTIPIDR4 RO 第 475 页的 14.5.3.5 Peripheral Identification Register 4
0xFD4 CTIPIDR5 RO 第 476 页的 14.5.3.6 Peripheral Identification Register 5-7
0xFD8 CTIPIDR6 RO 第 476 页的 14.5.3.6 Peripheral Identification Register 5-7
0xFDC CTIPIDR7 RO 第 476 页的 14.5.3.6 Peripheral Identification Register 5-7
0xFE0 CTIPIDR0 RO 第 471 页的 14.5.3.1 Peripheral Identification Register 0
0xFE4 CTIPIDR1 RO 第 472 页的 14.5.3.2 Peripheral Identification Register 1
0xFE8 CTIPIDR2 RO 第 473 页的 14.5.3.3 Peripheral Identification Register 2
0xFEC CTIPIDR3 RO 第 474 页的 14.5.3.4 Peripheral Identification Register 3
0xFF0 CTICIDR0 RO 第 476 页的 14.5.4.1 Component Identification Register 0
0xFF4 CTICIDR1 RO 第 477 页的 14.5.4.2 Component Identification Register 1
0xFF8 CTICIDR2 RO 第 478 页的 14.5.4.3 Component Identification Register 2
0xFFC CTICIDR3 RO 第 479 页的 14.5.4.4 Component Identification Register 3

4.1. 外部寄存器访问权限

是否允许访问某个 CTI 寄存器取决于:

  • CTI 软件锁的状态。
  • 处理器调试认证输入的状态。

5. 交叉触发寄存器描述

本节介绍 Cortex®-R52+ 的 CTI 寄存器。

5.1. CTI 设备标识寄存器(CTIDEVID)

CTIDEVID 向调试器描述 CTI 组件。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIDEVID 是一个 32 位寄存器。

下图给出了 CTIDEVID 的位分配。

Figure14-3

下表给出了 CTIDEVID 的位分配。

位 名称 功能
[31:26] - 保留,RES0。
[25:24] INOUT 输入与输出选项。表示是否存在输入门控。取值为:
0b01:CTIGATE 屏蔽来自外部通道的输入事件的传播。
[23:22] - 保留,RES0。
[21:16] NUMCHAN 实现的通道数。取值为:
0b000100:实现四个通道。
[15:14] - 保留,RES0。
[13:8] NUMTRIG 实现的触发器数。取值为:
0b001000:实现八个触发器。
[7:5] - 保留,RES0。
[4:0] EXTMUXNUM 表示触发输入与触发输出上可用的多路复用器数量。取值为:
0b00000:未实现外部触发器。

CTIDEVID 可通过外部调试接口访问:

组件 偏移
CTI 0xFC8

5.2. CTI 集成模式控制寄存器(CTIITCTRL)

CTIITCTRL 寄存器表明 Cortex®-R52+ 处理器未实现集成模式。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIITCTRL 是一个 32 位寄存器。

下图给出了 CTIITCTRL 的位分配。

Figure14-4

下表给出了 CTIITCTRL 的位分配。

位 名称 功能
[31:1] - 保留,RES0。
[0] IME 集成模式使能。取值为:
0:正常运行。
注意: 对该位的写入被忽略。

CTIITCTRL 可通过外部调试接口访问:

组件 偏移
CTI 0xF00

5.3. CTI 外设标识寄存器

外设标识寄存器提供所有符合 Arm CoreSight 架构的组件所需的标准信息。它们是一组八个寄存器,如下表所列。

寄存器 取值 偏移
CTIPIDR0 0xBB 0xFE0
CTIPIDR1 0xB9 0xFE4
CTIPIDR2 0x1B 0xFE8
CTIPIDR3 0x00 0xFEC
CTIPIDR4 0x04 0xFD0
CTIPIDR5 0x00 0xFD4
CTIPIDR6 0x00 0xFD8
CTIPIDR7 0x00 0xFDC

每个外设标识寄存器只使用位 [7:0],位 [31:8] 保留。八个外设标识寄存器共同定义一个 64 位外设 ID。

外设 ID 寄存器包括:

  • 第 471 页的 14.5.3.1 Peripheral Identification Register 0。
  • 第 472 页的 14.5.3.2 Peripheral Identification Register 1。
  • 第 473 页的 14.5.3.3 Peripheral Identification Register 2。
  • 第 474 页的 14.5.3.4 Peripheral Identification Register 3。
  • 第 475 页的 14.5.3.5 Peripheral Identification Register 4。
  • 第 476 页的 14.5.3.6 Peripheral Identification Register 5-7。

5.3.1. 外设标识寄存器 0(CTIPIDR0)

CTIPIDR0 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIPIDR0 是一个 32 位寄存器。

下图给出了 CTIPIDR0 的位分配。

Figure14-5

下表给出了 CTIPIDR0 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:0] Part_0 0xBB
交叉触发部件号的最低有效字节。

CTIPIDR0 可通过外部调试接口访问:

组件 偏移
CTI 0xFE0

5.3.2. 外设标识寄存器 1(CTIPIDR1)

CTIPIDR1 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIPIDR1 是一个 32 位寄存器。

下图给出了 CTIPIDR1 的位分配。

Figure14-6

下表给出了 CTIPIDR1 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:4] DES_0 0xB
Arm Limited。这是 JEP106 ID 码的最低有效半字节。
[3:0] Part_1 0x9
CTI 部件号的最高有效半字节。

CTIPIDR1 可通过外部调试接口访问:

组件 偏移
CTI 0xFE4

5.3.3. 外设标识寄存器 2(CTIPIDR2)

CTIPIDR2 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIPIDR2 是一个 32 位寄存器。

下图给出了 CTIPIDR2 的位分配。

Figure14-7

下表给出了 CTIPIDR2 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:4] Revision 0x1
r0p1。
[3] JEDEC 1
表示使用 JEP106 标识码。
[2:0] DES_1 0b011
Arm Limited。这是 JEP106 ID 码的最高有效半字节。

CTIPIDR2 可通过外部调试接口访问:

组件 偏移
CTI 0xFE8

5.3.4. 外设标识寄存器 3(CTIPIDR3)

CTIPIDR3 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIPIDR3 是一个 32 位寄存器。

下图给出了 CTIPIDR3 的位分配。

Figure14-8

下表给出了 CTIPIDR3 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:4] REVAND 0x0
部件次要修订号。
[3:0] CMOD 0x0
客户修改。

CTIPIDR3 可通过外部调试接口访问:

组件 偏移
CTI 0xFEC

5.3.5. 外设标识寄存器 4(CTIPIDR4)

CTIPIDR4 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTIPIDR4 是一个 32 位寄存器。

下图给出了 CTIPIDR4 的位分配。

Figure14-9

下表给出了 CTIPIDR4 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:4] Size 0x0
1KB。组件的大小。
[3:0] DES_2 0x4
Arm Limited。这是 JEP106 延续码的最低有效半字节。

CTIPIDR4 可通过外部调试接口访问:

组件 偏移
CTI 0xFD0

5.3.6. 外设标识寄存器 5-7(CTIPIDR5-CTIPIDR7)

外设 ID5、外设 ID6 与外设 ID7 寄存器中不保存任何信息。它们为 RES0。

5.4. 组件标识寄存器

共有四个只读组件标识寄存器,即组件 ID0 至组件 ID3。下表给出了这些寄存器。

寄存器 取值 偏移
CTICIDR0 0x0D 0xFF0
CTICIDR1 0x90 0xFF4
CTICIDR2 0x05 0xFF8
CTICIDR3 0xB1 0xFFC

组件 ID 寄存器包括:

  • 第 476 页的 14.5.4.1 Component Identification Register 0。
  • 第 477 页的 14.5.4.2 Component Identification Register 1。
  • 第 478 页的 14.5.4.3 Component Identification Register 2。
  • 第 479 页的 14.5.4.4 Component Identification Register 3。

5.4.1. 组件标识寄存器 0(CTICIDR0)

CTICIDR0 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTICIDR0 是一个 32 位寄存器。

下图给出了 CTICIDR0 的位分配。

Figure14-10

下表给出了 CTICIDR0 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:0] PRMBL_0 0x0D
前导字节 0。

CTICIDR0 可通过外部调试接口访问:

组件 偏移
CTI 0xFF0

5.4.2. 组件标识寄存器 1(CTICIDR1)

CTICIDR1 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTICIDR1 是一个 32 位寄存器。

下图给出了 CTICIDR1 的位分配。

Figure14-11

下表给出了 CTICIDR1 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:4] CLASS 0x9
调试组件。
[3:0] PRMBL_1 0x0
前导字节 1。

CTICIDR1 可通过外部调试接口访问:

组件 偏移
CTI 0xFF4

5.4.3. 组件标识寄存器 2(CTICIDR2)

CTICIDR2 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTICIDR2 是一个 32 位寄存器。

下图给出了 CTICIDR2 的位分配。

Figure14-12

下表给出了 CTICIDR2 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:0] PRMBL_2 0x05
前导字节 2。

CTICIDR2 可通过外部调试接口访问:

组件 偏移
CTI 0xFF8

5.4.4. 组件标识寄存器 3(CTICIDR3)

CTICIDR3 提供用于标识 CTI 组件的信息。

使用限制

本寄存器为只读。有关影响本寄存器访问权限的条件汇总,请参见第 391 页的 12.2.4 External register access permissions。详细说明请参见《Arm® Architecture Reference Manual Supplement Armv8, for the Armv8-R AArch32 architecture profile》。

陷阱与使能

不存在影响本寄存器的陷阱与使能。

配置

在所有处理器构建配置中均可用。

属性

CTICIDR3 是一个 32 位寄存器。

下图给出了 CTICIDR3 的位分配。

Figure14-13

下表给出了 CTICIDR3 的位分配。

位 名称 功能
[31:8] - 保留,RES0。
[7:0] PRMBL_3 0xB1
前导字节 3。

CTICIDR3 可通过外部调试接口访问:

组件 偏移
CTI 0xFFC