I am working with two HW platforms that include two ARM processors:
I would like to export via Lauterbach Trace32 a mixed trace composed of program flow and BMC values (benchmark counters / performance counters). To clarify my intent, I provide the following synthetic example:
Instruction | Cache Misses | ... |
------------+--------------+------
0x1234 | 1 | 0
0x1235 | 1 | 0
0x1236 | 2 | 0
I tried to utilize the following commands to properly set the tracer:
bmc.PMN0 DCMISS
bmc.export ON
bmc.trace ON
bmc.select PMN0
Unfortunately, I am not able to export a trace containing the BMC I set.
I already tried with some of the trace.export
commands but I never succeeded.
Does anyone know how to produce such a trace? Thanks.
On Cortex-A and Cortex-R the performance counters (aka. "BenchMark Counters (BMC)") can usually not be transmitted via CoreSight trace.
(Btw.: Some Cortex-M can export the BMC via CoreSight ITM. A list of these processors is listed in this table, DWT column).
However the performance counters can be read during run-time, which allows to sample their values during run-time.
To sample the performance counters during run-time enable the SNOOPer with SNOOP.OFF
and SNOOP.AutoArm ON
and select the BMC counters with SNOOPer.Mode BMC
. View the results with SNOOPer.List
.
To save the results to hard drive for later analysis you can use SNOOPer.SAVE *
and re-load it later with SNOOPer.LOAD *