【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】

文章目录

    • Trace protocol
    • packet的种类
      • Error packets
      • VERSION Packets
      • 同步 packet

上篇文章:ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用
下篇文章:ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍

Trace protocol

STM 产生的trace的是遵守 MIPI System Trace Protocol version 2 (STPv2) 规范的,STM 提供 65536(64K) 个 STMv2 channels。STM能够产生的最大数据包时64bits。STP 历史版本如下图:
【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】_第1张图片

packet的种类

【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】_第2张图片【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】_第3张图片
从表中可以看到 STM 产生 VERSION value 为 3

Error packets

STM 将会产生 Error packets 包,如果出现数据丢失(如出现数据溢出),错误包的8bit 全部为0。

VERSION Packets

版本包的作用是告诉接收者当前STP使用的版本,版本包只会出现在同步包的后面,因为解析其他包的时候需要依赖版本包,比如 timestamp 包的长度会根据STP不同版本变化。

同步 packet

为了遵守 STPv2 协议,STM 在使能 之后产生的第一个包就是 对齐同步包(alignment synchronization packets) , 同步包之后会跟着一个版本包 VERSION packet,在 synchronization packetsVERSION packet之间只能是 NULL packets 如果 timestamping 被使能之后,FREQ packet 会紧接着 版本包。 由于接收 STM输出数据的接收器通常是按照bit 流接收的,所以接受器需要知道什么时候开始接收数据,STM 发出的同步包最长可能是由84个连续的0b1组成,也即 21个 0xF, 接着会再发一个0x0(0b0000),一旦接收器检测到了这个信号,首先会跳过 NULL packet(0x0),然后搜寻 VERSION packet 版本,来确认当前使用的版本号,以便决定后面如何解析剩下的数据。

下图展示了在同步包后面跟着一个16-bit的数据包,数据包的 channel id 为 4, master id为 3。每一个packet 的 payload(有效数据)之前都会有自己对应的opcodes。比如 版本号的opcde 是0xF00, 其payload 为4(0b0100),payload的位宽为4bits,4bits 也是STP 最小的传输颗粒,专业属于叫做nibble(半字节)。
【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】_第4张图片

下图展示了 ASYNC packet后面跟着版本包,VERSION packet 后面跟着 C8 packet,在后面就是 D64 packet,可以看到 STM 通过ATB 口发给 接收器receiver 的同步信息正好是21个0xF, VERSION packet的opcode 也正好 0xFF0, payload 为 3, C8 的opcode 为 3, payload 为 0x05, D64的opcode 为 7,对应的payload 为 0x12345678(代码中写入的值)。
在这里插入图片描述

上篇文章:ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用
下篇文章:ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍

你可能感兴趣的:(#,ARM,Coresight,系列,STPv2,STP,STM,FLAG_TS,arm,coresight)