【ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用】

文章目录

    • ARM System Trace Macrocell
      • STM Features
      • STM 与 ETM/PTM的差异
      • STM Master

ARM System Trace Macrocell

ARM 对STM 的解释是其支持高带宽的"仪器化输出",仪器化输出其实也就是像 Cortex-M 系列中的 ITM 一样,通过将数据写入 STM 的 stimulus port,然后再通过STM将数据送输出,可以送到 System memory, 也可以通过TPIU送出去,之所以说是高带宽是因为 STM的输入口接入了AXI bus,所以CPU 可以通过 AXI bus 将大量数据写入STM。
【ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用】_第1张图片

STM 中的 stimulus port 其实一块地址空间,数据只要写入到这块地址空间就会被STM接收,从上图也可以看出,STM除了可以接收软件写入的数据,也可以接受硬件信号,比如中断信号,只要将硬件信号绑定到对应的stimulus port上,那么STM 就会接收并转换硬件发过来的信号并生成数据包。

STM Features

  • 可以为软件提供快速的 log 输出,相对于串口打印,STM的输出速度高出很多;
  • 系统性能监控及进行性能调控,大致可以理解为软件使用STM在需要加上打印时间戳的地方加上stm的log输出,从而来统计性能;
  • 跟踪内部的一些信号,如中断信号;
  • STM 可以通过DMA将CPU输出的数据搬运到STM中,这样可以减少CPU的负载;
  • 一个STM 可以被多个CPU访问,多个cpu可以共用一个STM。
    【ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用】_第2张图片

STM 与 ETM/PTM的差异

ETM: 如前文所述,ETM主要是用于跟踪 CPU 执行过的一些指令,通常只会统计指令有没有执行。早期的 ETM 也支持 Data trace, 由于data trace 对系统性能影响较大,后面ETM中就不再支持 Data trace了;
PTM: 功能和ETM很相似,目前很少用;用来追踪 branch instruction。

STM Master

在 STPv2 协议中一共有两个概念,一个是 master、一个是 channels。
master 可以理解为主动发出数据打印请求的,比如一个系统中存在多个cluster, 每个cluster中都有4个core, 那么一个core就是一个master;
channels:为 master 输出不同类型的数据通道。

按照 STPv2 协议 STM一共支持129个master,其中有128个用于软件打印信息输出,1个master用于观察硬件信号,每个master 有 64K 的channels 地址空间。

此外,每个channel(stimulus port) 占用连续的256 bytes,所以在STPv2 中 master一共可以支持 64K的 stimulus port,每个 master 需要的地址空间为 64K x 256 = 16M。

你可能感兴趣的:(#,ARM,Coresight,系列,coresight,soc-600,STM,PTM,ETM)