ARM CoreSight架构

一句话概括:CoreSight架构是什么?

CoreSight是ARM公司推出的一套标准化的、可扩展的片上系统调试和追踪架构。 它的核心目的是让芯片设计者和软件开发人员能够“看清”复杂SoC芯片内部的运行状态,尤其是在软件运行时,硬件究竟在做什么。


1. 核心问题:为什么需要CoreSight?

在CoreSight出现之前,调试嵌入式系统(尤其是复杂的多核SoC)非常困难:

  • “黑盒”操作:芯片对于开发者来说像一个黑盒子,你只知道输入和输出,但很难知道内部程序执行的精确流程、数据流向以及性能瓶颈在哪里。
  • 多核调试复杂性:现代SoC通常包含多个ARM处理器核心、GPU、DSP等。当一个问题发生时,很难确定是哪个核心、哪个任务、哪段代码引起的,因为多个核心在并发执行。
  • 实时性问题:很多问题(如时序竞争、中断延迟)无法通过停止CPU(如设置断点)来复现,因为一停下来问题就消失了。我们需要一种非侵入式的追踪手段。
  • 系统级问题:问题可能不仅限于CPU,还可能发生在总线、内存、外设之间的交互上。

CoreSight就是为了解决这些痛点而生的。


2. CoreSight的主要功能和组件

CoreSight不是一个单一的模块,而是一套由许多组件构成的“工具箱”,芯片厂商可以根据需要选择组合。其主要功能分为两大类:

A. 调试

提供对处理器的控制能力,例如:

  • 设置断点
  • 观察点
  • 单步执行
  • 访问寄存器和内存
B. 追踪

这是CoreSight最强大和核心的功能。它以非侵入式(不影响程序正常执行)的方式,实时记录系统运行的信息。追踪主要分为三种:

  1. 指令追踪

    • 记录什么:处理器执行了哪些指令流。它不会记录每一条指令,而是记录程序流的变化,如分支、跳转、异常、中断等。
    • 有什么用:精确还原程序的执行历史,定位程序跑飞、崩溃的原因。
    • 关键组件嵌入式追踪宏单元(ETM)程序流追踪(PTM),它们内嵌在每个CPU核心中。
  2. 数据追踪

    • 记录什么:处理器访问了哪些内存地址的数据(读或写)。
    • 有什么用:诊断数据损坏、内存访问冲突等问题。
    • 关键组件数据追踪宏单元(DTM)
  3. 系统和总线追踪

    • 记录什么:在SoC系统总线上发生的事务,如DMA传输、内存访问、外设间的通信等。
    • 有什么用:分析系统级性能瓶颈、带宽问题、以及多主设备(如CPU、DMA、GPU)之间的交互问题。
    • 关键组件系统追踪宏单元(STM)跟踪内存控制器(TMC) 等。
CoreSight系统的关键组件构成:

一个典型的CoreSight系统看起来像一个“太阳系”:

  • :产生追踪数据的组件,如每个CPU核心中的ETM,系统级的STM。
  • 链接:连接源和目的地的通路,如追踪漏斗,用于将多个源的追踪数据合并到一条线上。
  • 目的地:追踪数据的最终存放处。最常见的是:
    • 嵌入式追踪缓冲区:芯片内部的一小块SRAM,用于存储追踪数据。
    • 追踪端口:将追踪数据实时输出到芯片外部,通过专用的调试探头连接到PC上的调试器。
  • 复制器:可以将一路追踪数据复制到多个目的地。
  • 调试访问端口:这是调试的“总大门”,通过JTAG或SWD接口与外部调试器通信,用于控制调试会话(如设置断点)和访问CoreSight组件本身的寄存器。

3. CoreSight的工作原理简析

  1. 配置:开发者通过调试器(如DS-5, Lauterbach TRACE32)配置CoreSight组件。例如,告诉ETM:“请开始追踪CPU0的指令流”,或者告诉STM:“请记录所有对地址0x20000000的写操作”。

  2. 生成数据:当系统运行时,配置好的“源”(如ETM)会实时生成压缩的追踪数据包。

  3. 汇聚与传输:这些数据包通过链接组件(如漏斗、复制器)在芯片内部汇聚,形成一条或几条追踪数据流。

  4. 输出与存储:数据流最终被发送到“目的地”。如果目的地是ETB(Embedded Trace Buffer,嵌入式追踪缓冲区),数据就被存储在芯片内;如果目的地是追踪端口,数据就实时流到外部的追踪采集硬件。

  5. 解码与分析:PC上的调试软件接收到追踪数据(无论是从ETB读取还是从端口实时流式传输),利用处理器的映像文件进行解码,将压缩的数据包还原成人类可读的指令执行历史、性能分析图表等,呈现给开发者。


4. CoreSight的优势

  • 非侵入性:不干扰芯片的正常运行,可以捕捉到真实的、实时的系统行为。
  • 强大的系统级可见性:不仅能看到CPU,还能看到整个SoC的活动。
  • 高性能与高压缩比:追踪数据被高度压缩,以减少对带宽和存储空间的需求。
  • 标准化与可扩展性:ARM定义了标准,使得不同厂商的调试工具和芯片能够兼容。芯片设计者可以像搭积木一样构建适合自己产品的调试系统。
  • 强大的问题诊断能力:极大地简化了复杂、偶发、实时性要求高的问题的调试过程。

应用场景

  • 驱动和内核开发:调试底层、时序敏感的系统代码。
  • 多核系统调试:分析核心间的任务调度、通信和竞争条件。
  • 性能剖析:精确找出代码的“热点”和系统瓶颈。
  • 稳定性问题排查:解决系统死机、重启等难以复现的问题。
  • 安全认证:在汽车、航空等领域,提供可靠的运行证据。

总结

CoreSight架构是现代复杂SoC的“飞行数据记录仪”(黑匣子)和“精密诊断仪”的结合体。 它彻底改变了嵌入式系统的调试方式,从传统的“盲人摸象”变成了拥有“上帝视角”,是ARM生态系统能够支撑起从微控制器到高性能服务器芯片如此广泛产品线的重要基石技术之一。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐