Hi,
Regarding the 0 timestamps:
This can happen when the DWT unit is not enabled.
On Cortex-M3/4 the timestamp is generated from the DWT->CYCCNT, so the cycle counter needs to be enabled and to do this the DWT needs to be enabled as well.
This is usually done by the debugger, but can also be done by the application.
if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) == 0) {
CoreDebug->DEMCR |= 1 << CoreDebug_DEMCR_TRCENA_Pos; // Enable DWT in DEMCR if not done, yet.
}
DWT->CTRL |= 1 << DWT_CTRL_CYCCNTENA_Pos; // Enable CYCCNT in DWT_CTRL.
When there has been a debug session running or you connected with J-Link before, and read the data without a reset,
then the CYCCNT might have still been enabled and the application generated real timestamps.
If you do not want to use the CYCCNT, you can of course configure SystemView for any other timestamp source, i.e. the SysTick, too.
Regards
Johannes