I'm having a problem using my PEMicro Tracelink with CodeWarrior, attempting to trace the execution of firmware on a Cortex-M0+. The trace ends prematurely, well before the 128Mb of configured trace buffer is filled. Oddly, each trace seems to stop after a different number of trace records, sometimes in the 3k range, sometime in the 5k range. When the trace stops, it halts the processor and drops me into the debugger at a return from a function, in code that I was expecting to be running.
I have the "Trace Max Buffer Size" option set to 128 Mb in the target settings, and in the Trace and Profile settings I have the "Trace Buffer Size" set to 0x2000, with "Continuous" selected.
I'm tracing third-party code, so I'm stuck without source, but I can set a breakpoint where I want to begin trace and that works well. The problem is that the assembly should clearly be looping for a very long time but something is happening that exits the loop and I want to know what. Interrupts are disabled, but I was hoping a trace would catch an interrupt if that was the culprit and I was simply misunderstanding the assembly.
Thanks in advance for the assistance.
Hi Robert,
Is this problem of the trace ending prematurely just happening with this project? Which CodeWarrior version are you using? I think that the following posts created by our colleague Erich Styger might be helpful for you:
First Steps with the P&E Tracelink | MCU on Eclipse
Debugging ARM Cortex-M0+ Hard Fault with MTB Trace | MCU on Eclipse
Hope it helps!
Best Regards,
Carlos Mendoza
Technical Support Engineer
I never did get to the bottom of this, but the premature trace stops may have been occurring when the watchdog timer was resetting the chip. Code I added was not servicing the timer and this was causing resets. I got no indication of that in CodeWarrior, but that may have been what was happening.
Hi Robert,
I agree with you, the watchdog reset was most likely causing the trace to stop.
Best Regards,
Carlos Mendoza
Technical Support Engineer