文章目录
- 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。
STM 中的 stimulus port 其实一块地址空间,数据只要写入到这块地址空间就会被STM接收,从上图也可以看出,STM除了可以接收软件写入的数据,也可以接受硬件信号,比如中断信号,只要将硬件信号绑定到对应的stimulus port上,那么STM 就会接收并转换硬件发过来的信号并生成数据包。
STM Features
- 可以为软件提供快速的 log 输出,相对于串口打印,STM的输出速度高出很多;
- 系统性能监控及进行性能调控,大致可以理解为软件使用STM在需要加上打印时间戳的地方加上stm的log输出,从而来统计性能;
- 跟踪内部的一些信号,如中断信号;
- STM 可以通过DMA将CPU输出的数据搬运到STM中,这样可以减少CPU的负载;
- 一个STM 可以被多个CPU访问,多个cpu可以共用一个STM。
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。