ARM芯片架构之CoreSight Channel Interface 介绍
CoreSight Channel Interface(通道接口)详解
1. 概述
Channel Interface 是 ARM CoreSight 架构中用于在不同组件之间传递触发事件的专用接口。它是 Event Interface 的增强版本,支持多通道、双向通信,以及同步与异步两种时钟域连接方式。
常见用途:
- 多核 CPU 同步调试停止(Halt)
- 多个 Trace 单元同步开始/停止捕获
- Profiling 事件同步广播
- 跨组件硬件触发协调
Channel Interface 特别适合低频、单次触发或允许少量事件合并的应用,但不适合高速计数场景。
2. 信号结构详解
2.1 通道数量
- 通道数量可配置(由 SoC 设计定义)。
- ARM 推荐至少 4 个通道,以支持多种事件类型并行传输。
- 当两个组件的通道数不同时,连接规则:
- 通道数少的一方连接到多的一方的前 N 个通道
- 额外通道留空,不参与连接
2.2 信号列表与说明
异步 Channel Interface(Asynchronous)
适用于不同时钟域之间的通信,采用 4 阶段握手机制 进行安全事件传输。
信号名称 | 方向(相对于本组件) | 复位后值 | 说明 |
---|---|---|---|
CHOUT[n-1:0] | 输出 | 0 | 事件请求信号。源组件将其置高表示有事件产生。 |
CHOUTACK[n-1:0] | 输入 | — | 事件确认信号。目标组件处理完事件后拉高,通知源组件可以结束本次事件。 |
CHIN[n-1:0] | 输入 | — | 接收到的事件请求信号,由另一组件的 CHOUT 驱动。 |
CHINACK[n-1:0] | 输出 | 1 | 事件确认反馈信号,通知对方事件已被接收并处理。 |
异步 Channel Interface 连接形式
同步 Channel Interface(Synchronous)
适用于同一时钟域内的通信,事件直接依赖公共时钟 CHCLK
同步,无需握手。
信号名称 | 方向(相对于本组件) | 复位后值 | 说明 |
---|---|---|---|
CHCLK | 输入 | — | 通道接口时钟输入,保证两端同步采样。 |
CHOUT[n-1:0] | 输出 | 0 | 事件输出信号,直接在时钟边沿采样传输。 |
CHIN[n-1:0] | 输入 | — | 事件输入信号,来自另一组件的 CHOUT 。 |
异步 Channel Interface 连接形式
3. 异步握手机制(四阶段握手)
在异步模式下,信号跨时钟域传输,需要通过四阶段握手确保事件不丢失。
过程描述
- 发起事件
源组件将CHOUT
从 0 置为 1,表示有事件产生。 - 事件到达目标
目标组件检测到CHIN
上升沿或高电平,执行事件处理逻辑。 - 目标确认
目标组件事件处理完成后,将CHINACK
置为 1,表示事件已处理。 - 释放握手
源组件检测到CHOUTACK
为 1 后,将CHOUT
清零。目标组件随后清零CHINACK
,完成一次握手。
4. 同步模式工作流程
- 所有事件信号在
CHCLK
上沿采样 - 无需握手,事件传递延迟仅为 1 个时钟周期
- 要求两端组件完全在同一时钟域
5. 与 CTI/CTM 的应用结合
CTI(Cross Trigger Interface)
- 提供多个触发输入(TRIGIN)和输出(TRIGOUT)
- 可以将 Channel Interface 的事件直接连接到 CTI 输入
- 用于触发:
- CPU 调试事件(halt、step)
- Trace 启动/停止
- 向其他 CTI 广播事件
CTM(Cross Trigger Matrix)
- 连接多个 CTI,形成事件传播网络
- 支持一对多、多对多事件广播
- Channel Interface 在其中承担物理传输通道的角色
6. 系统应用示例
多核调试停止
- CPU0 断点 → ETM 输出事件
- 事件通过 Channel Interface 进入 CTI0
- CTI0 通过 CTM 向 CTI1、CTI2 广播事件
- CTI1、CTI2 发出 halt 信号 → CPU1、CPU2 同步停止
Trace 停止同步
- ETB 缓冲区满 → CTI 输出事件
- CTM 将事件分发给 ETR、TPIU
- 所有 Trace Sink 同步停止捕获
7. 设计注意事项
- 异步接口必须用握手防止丢事件
- 跨时钟域必须加同步器,防止亚稳态
- 高速频繁事件建议使用专用事件总线
- 通道数设计需预留裕量,ARM 建议 ≥ 4