I’m using AM6442, R5 core as a main processor to communicate with percepio-CCS.
#define TRC_CFG_STREAM_PORT_BUFFER_SIZE 1024 * 29
when I’m trying to save the snapshot trace in CCS tool.
I’m able to save the buffer record of 29kb max. If i’m trying to increase the buff recorder size > 30Kb. I’m getting error pop up like “Unable to read memory“.
During 29kb → I’m able to save the trace data (2.3sec) in file which is of 32Kb.
I tried both methods like chunks wise and transfer all too.
Is there any limit of memory in snapshot mode?
How percepio knows that, where to read the record(memory location) and provides to tracealyzer
Is there any configuration? Any doc that may help to understand better..
I’m using XDS200 JTAG Emulator for debugging.
Record to save: i’m using DDR..
So you tried saving the memory dump from the Memory Browser → Save Memory? If you set the format to Binary and name the file something.bin, it should be possible to open directly in Tracealyzer/View (using File → Open → Open FIle) assuming all is well.
(Note that you don’t need to dump the whole memory, just the part where the trace buffer is. Also, the dump doesn’t have to match the exact boundaries of the trace buffer, as long as all data is included.)
Does this work for you?
If so, can you save memory dumps larger than 32 KB in this way, or do you get errors from the CCS SaveMemory function?
yeah I tried that, I’m not able to open that dump.bin file using tracealyzer. It is throwing error shown in the below ss.
but my tracealyzer is licensed.. one
do you get errors from the CCS SaveMemory function?
no..
it is asking from which address, i gave the ptr address and then it is also asking for the bouandary (mandatory) like in terms of words. i gave 65535.. and save the memory dump in dump.bin file.
The error message means that Tracealyzer can’t find anythings that looks like TraceRecorder data in the dump. Did you call xTraceEnable before dumping the data?
/* Enable Tracealyzer */
if (xTraceEnable(TRC_START) != TRC_SUCCESS)
{
DebugP_log("Trace enable failed.\r\n");
const char *err = NULL;
xTraceErrorGetLast(&err);
while (1)
; // Stay here for debugging
}
xTraceStringRegister("Logging", &xUserEventChannel);
xTracePrintF(xUserEventChannel, "Starting Demo...");
reset_timer0_counter_to_zero();
/* Print CPU Clock Frequency */
after success return only i took trace
From this, i can save my trace buffer(upto 12MB) w.r.to RAM size availability…
But, we can’t save and open the trace record via Percepio.
Instead of that, I can save via memory dump and try to open via tracealyzer.. right?
that is what is happening in my case..
Due to this memory dump method, i can able to save the minutes of trace data and analyze the CPU…
If it so, as my assumption. From CCS is not able to save trace data via plugin (Percepio→ save snapshot) which is more than 32KB trace bin file..
I don’t quite follow. Do you mean it doesn’t work to use the Percepio Trace Exporter (Percepio menu) if more than 32KB, but it works using the CCS memory dump?
I tested the Ecplise plugin with a 50 KB trace buffer and that worked fine in my setup. This was with STM32CubeIDE though. So there is no limitation in the plugin. However, we have only tested this on Eclipse IDEs based on GDB for the debugging. TI appears to use a different debug server. But great that you got it working anyway. If you want a simpler solution, I think CCS has a scripting system called DDS that might allow for automating the memory dump. I have not tried it, but maybe you could make a dds script for this.