请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】
文章目录
- SOC ETF
-
- SOC ETF REGISTERS
-
- css600_tmc_etf RAM Read Data register(RRD)
- css600_tmc_etf RAM Read Pointer register(RRP)
- css600_tmc_etf RAM Write Pointer register(RWP)
- css600_tmc_etf RAM Write Data register(RWD)
- css600_tmc_etf Control Register(CTL)
- css600_tmc_etf Mode register(MODE)
- css600_tmc_etf Latched Buffer Fill Level(LBUFLEVEL)
- css600_tmc_etf Current Buffer Fill Level(CBUFLEVEL)
- css600_tmc_etf Buffer Level Water Mark(BUFWM)
- css600_tmc_etf Formatter and Flush Status Register(FFSR)
- css600_tmc_etf Formatter and Flush Control Register(FFCR)
- ETF MODE
SOC ETF
SOC ETF REGISTERS
css600_tmc_etf RAM Read Data register(RRD)
- 偏移地址:
0x0010
- 类型 Read-only
通过读取这个寄存器,可以读到位于 trace memory 中的数据,数据的位置是由 RRP register 指向的,这种通过寄存器读取trace data 的方式需要处于 CB 模式或者 SWF1模式才能进行。
当 ATB_DATA_WIDTH 是 32bit、64bit、或者128bit 的时候,ETF 中的内部RAM(FIFO)的宽度是它们的二倍:8bytes/16bytes/32bytes。
每次必须读取一个 full memory word, 可以理解为每次必须读取一个FIFO的宽度。当读取完一次full memory work 之后, RRP register 将会增加到下一个 memory word。比如当你只读2 或 4 个字节的时候 RRP的值可能并不会增加。
当 etf处于 disabled 状态或者 为空的时候,读取这个寄存器的返回值为 0xFFFFFFFF。
css600_tmc_etf RAM Read Pointer register(RRP)
- 偏移地址:
0x0014
- 类型 Read-write
这个寄存器存放了当前应该从哪个地址读取trace data的值,需要注意的是在在开始抓取trace data 的时候需要将这个寄存器的值配置和 RWP 设置一样,通常配置为0。
css600_tmc_etf RAM Write Pointer register(RWP)
- 偏移地址:
0x0018
- 类型 Read-write
这个寄存器用于配置向 ram 中的哪个地址中写入数据,配置后之后直接向 RWD寄存器中写就可以了。
css600_tmc_etf RAM Write Data register(RWD)
- 偏移地址:
0x0024
- 类型 Write-only
当一个 full memory width 的数据通过 RWD 写入到 trace memory 之后,RWP的数据就会增加。所以可以通过读取 RWP寄存器中的值判断当前已经写入 RAM 中多少数据了。
css600_tmc_etf Control Register(CTL)
- 偏移地址:
0x0020
- 类型 Read-write
用于使能 ETF,bit0 用于配置使能。
css600_tmc_etf Mode register(MODE)
- 偏移地址:
0x0028
- 类型 Read-write
ETF 的模式配置,只有在ETF 处于 disable的状态下才能去配置MODE。
0x0
CB, Circular Buffer mode. 循环向内部RAM中写入。0x1
SWF1, Software Read FIFO mode 1. 当内部RAM写满之后,不会再写了,通过拉低ATREADY信号向上级形成反压。