2025-01-14 12:37 AM
Has anyone worked with the Serial Wire Viewer on an STM32H7RS board?
We've been using it on a F7 board, without too much issue, but we are stuck on this new board.
We've followed the usual steps :
- Enable Serial Wire Viewer (SWV) in Debug configuration (using the CPU Core Clock)
- Overwrite the "_write" function to use ITM_SendChar(...) (also tested that it works and calls it for every character we send with printf()
- Open the SWV ITM Data Console, enabling port 0 and start trace.
However, nothing appears in the console :(
We double checked the clock ..
We also tried to enable the debug mode for our application (although, it doesn't seem to change anything in the code)
But so far nothing..
One thing to note is that our application uses ThreadX and NetXDuo (I don't know if it has an impact...)
We are also using a simple STLINK-V3 connector to debug
2025-10-04 1:45 AM
> Core clock mismatch – make sure the CPU core clock configured in the debug settings exactly matches the running core clock
Exactly. The value of SystemCoreClock global variable (standard CMSIS), divide it by 10**6 (Hz to MHz) and put the result into the GUI. But remember that the CPU starts off with some internal clock, so the ITM won't work until the program calls SystemClock_Config (or equivalent) to start the PLL and it stabilizes at the given frequency.
But the debugger starts the ITM much earlier, maybe at the first breakpoint at main, or so - and it starts streaming some data at a wrong frequency. This can confuse the debugger while it tries to parse the data. I guess this may be the reason why ITM is so flaky.
2025-10-04 10:34 AM
Interesting point.
The CPU probably starts at 16MHz. That is the 32F4 speed.
The breakpoint on main() is configurable but you need a PhD in UI design to find where (it is under Project / Properties ... Debugger and one of the other tabs like Startup, IIRC).
2025-10-05 9:57 PM
We have faced the same issue using NUCLEO-H753ZI