Arm Coresight 介绍

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。

Arm Coresight 介绍

简介

Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。

Coresight 特点

  1. 收集流水线中所有的 branch 指令。

  2. 全量采集:大多数 trace 组件都是基于一定的采样频率采集,Coresight 可以全量采集。

  3. 可以结合 PMU 事件。

Coresight 架构

Coresight 架构较为复杂,包括数据采集、数据传输、采集时间通知、多核协同、物理/虚拟地址映射等功能。具体描述可见附录A

安装和使用

购买倚天裸金属服务器

安装 Coresight 驱动

modprobe coresight

modprobe coresight-catu

modprobe coresight-funnel

modprobe coresight-tmc

modprobe coresight-cti

modprobe coresight-replicator

modprobe coresight-etm4x

modprobe coresight-tpiu

image

利用 perf-tools 直接使用 coresight 收集数据

采集命令:perf record -C 0 -m ,1G -e cs_etm//u ls

解析命令:perf script

coresight 设置采样频率

perf record -C 0 -m ,1G -e cs_etm/autofdo,preset=8/u ./app

preset 可以设置为 1-9,对应的采样频率为:

preset 采样间隔
1 每隔 2 * 5000 个 cycle,持续采集 5000 个 cycle
2 每隔 4 * 5000 个 cycle,持续采集 5000 个 cycle
3 每隔 8 * 5000 个 cycle,持续采集 5000 个 cycle
4 每隔 16 * 5000 个 cycle,持续采集 5000 个 cycle
5 每隔 64 * 5000 个 cycle,持续采集 5000 个 cycle
6 每隔 128 * 5000 个 cycle,持续采集 5000 个 cycle
7 每隔 512 * 5000 个 cycle,持续采集 5000 个 cycle
8 每隔 1024 * 5000 个 cycle,持续采集 5000 个 cycle
9 每隔 4096 * 5000 个 cycle,持续采集 5000 个 cycle

地址过滤

即使是最简单的跟踪场景,CoreSight tracers生成的跟踪数量也是惊人的。可以通过地址过滤来节省跟踪缓冲区空间并避免不相关的跟踪数据。

在CoreSight上实现了两种类型的地址过滤器-地址范围和开始/停止过滤器:

Start/Stop filters: 使用开始/停止过滤器,当指令指针等于开始地址时,生成跟踪。顺便说一句,当指示指针等于停止地址时,停止生成跟踪。在事件之间发生的任何事情都被跟踪:

perf record -e cs_etm/@tmc_etr0/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0' --per-thread  uname

perf record -vvv -e cs_etm/@tmc_etr0/u --filter 'start 0x72c@/opt/lib/libcstest.so.1.0,    \
                                                     stop 0x40082c@/home/linaro/main'          \
                                                 --per-thread ./main

三、故障排除和调试

在使用Coresight时,可能会遇到一些常见问题,如数据丢失、不准确的分析结果等。为了解决这些问题,可以采取以下措施:检查Coresight设备和代码是否正确连接和编写,检查数据采集是否正常,检查分析结果是否准确,并查阅Coresight文档或联系技术支持。在调试时,还可以采用以下技巧和技巧:正确使用Coresight、分析Coresight数据以查找问题,并使用调试工具进行跟踪和调试。

四、未来方向

Coresight将继续发展,未来将支持更多的处理器和硬件平台,并增强分析功能,如深度学习和数据可视化。同时,将与其他开源和商业工具集成,以满足不断增长的需求。

五、结论

总的来说,Coresight是一款功能强大的嵌入式系统监控和分析工具,能够帮助开发人员和系统管理员更轻松地解决问题。通过正确的安装、配置、故障排除和调试,可以更好地利用Coresight的功能。未来,Coresight将继续发展,并与其他工具和技术集成,以应对日益增长的需求。

附录A

CoreSight架构指定了一组组件,用于实现支持调试和跟踪信息收集的特定SoC子系统。本节展示了基于CoreSight架构的CoreSight组件的一些示例实现。

硬件组成

Control components

  • Cross Trigger Interface (CTI).

  • Cross Trigger Matrix (CTM).

Trace sources

  • Embedded Trace Macrocells (ETMs).

  • AMBA Trace Macrocells.

  • Program Flow Trace Macrocells (PTMs).

  • System Trace Macrocells (STMs).

Trace links

  1. Trace funnels.

  2. Replicators.

  3. ATB bridges.

Trace sinks

  • Trace Port Interface Units (TPIUs).

  • Embedded Trace Buffers (ETBs).

  • Trace Memory Controllers (TMCs).

硬件结构

Coresight 组件的组合方式可以参考 Linux Kernel 文档

 *****************************************************************
**************************** AMBA AXI  ****************************===||
 *****************************************************************    ||
       ^                    ^                            |            ||
       |                    |                            *            **
    0000000    :::::     0000000    :::::    :::::    @@@@@@@    ||||||||||||
    0 CPU 0<-->: C :     0 CPU 0<-->: C :    : C :    @ STM @    || System ||
 |->0000000    : T :  |->0000000    : T :    : T :<--->@@@@@     || Memory ||
 |  #######<-->: I :  |  #######<-->: I :    : I :      @@@<-|   ||||||||||||
 |  # ETM #    :::::  |  # PTM #    :::::    :::::       @   |
 |   #####      ^ ^   |   #####      ^ !      ^ !        .   |   |||||||||
 | |->###       | !   | |->###       | !      | !        .   |   || DAP ||
 | |   #        | !   | |   #        | !      | !        .   |   |||||||||
 | |   .        | !   | |   .        | !      | !        .   |      |  |
 | |   .        | !   | |   .        | !      | !        .   |      |  *
 | |   .        | !   | |   .        | !      | !        .   |      | SWD/
 | |   .        | !   | |   .        | !      | !        .   |      | JTAG
 *****************************************************************<-|
*************************** AMBA Debug APB ************************
 *****************************************************************
  |    .          !         .          !        !        .    |
  |    .          *         .          *        *        .    |
 *****************************************************************
******************** Cross Trigger Matrix (CTM) *******************
 *****************************************************************
  |    .     ^              .                            .    |
  |    *     !              *                            *    |
 *****************************************************************
****************** AMBA Advanced Trace Bus (ATB) ******************
 *****************************************************************
  |          !                        ===============         |
  |          *                         ===== F =====<---------|
  |   :::::::::                         ==== U ====
  |-->:: CTI ::<!!                       === N ===
  |   :::::::::  !                        == N ==
  |    ^         *                        == E ==
  |    !  &&&&&&&&&       IIIIIII         == L ==
  |------>&& ETB &&<......II     I        =======
  |    !  &&&&&&&&&       II     I           .
  |    !                    I     I          .
  |    !                    I REP I<..........
  |    !                    I     I
  |    !!>&&&&&&&&&       II     I           *Source: ARM ltd.
  |------>& TPIU  &<......II    I            DAP = Debug Access Port
          &&&&&&&&&       IIIIIII            ETM = Embedded Trace Macrocell
              ;                              PTM = Program Trace Macrocell
              ;                              CTI = Cross Trigger Interface
              *                              ETB = Embedded Trace Buffer
         To trace port                       TPIU= Trace Port Interface Unit
                                             SWD = Serial Wire Debug
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
缓存 安全 SoC
来看看ARM gicv2/gicv3的详解
来看看ARM gicv2/gicv3的详解
109 0
|
9月前
|
存储 传感器 安全
「Arm Arch」 初识 Arm(下)
「Arm Arch」 初识 Arm(下)
434 0
|
9月前
|
机器学习/深度学习 存储 监控
「Arm Arch」 初识 Arm(上)
「Arm Arch」 初识 Arm(上)
448 1
|
4月前
|
存储 缓存 监控
【芯核架构】听你说你很了解ARM?
【芯核架构】听你说你很了解ARM?
169 0
|
9月前
|
存储 机器学习/深度学习 Java
「Arm Arch」 ISA 指令集
「Arm Arch」 ISA 指令集
193 0
|
Linux 数据处理 Android开发
【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
497 0
|
存储 中间件 编译器
ARM学习笔记
ARM学习笔记
Arm金勇斌:15年之后的场景是什么样子?
最终让人变得更懒,才是最终AI的方向。
549 0