Hi,
I am using an STM32F4 / Cortex-M4 and MKD-ARM 5.18a
following my last question and starting a bit more simple.
I can set an ACCESS BREAKPOINT with a condition (not a CONDITIONAL BREAKPOINT) on a integer variable: BS write uiDebug == 0
But i can't set the same thing for a floating point variable. BS write fDebug == 0 results in: error 71: invalid expression type
Keil User Guide says: Expression must reduce to a memory address and memory type But want does this mean?
Timo
I assume that managing such a breakpoint is handled by the hardware and by using a dedicated register. Thus it succeeds with a matching integer- and fails with floating-variable. More details can be found at i.e.: sourceware.org/.../Breakpoint Handling
see also: http://www.keil.com/support/man/docs/uv4/uv4_cm_breakset.htm http://www.keil.com/support/man/docs/uv4/uv4_db_dbg_breakpnts.htm
I managed to set the desired breakpoint by using the following command:
BS WRITE (*((unsigned long *)0x20000F08)) == 0x3D99999A
0x20000F08 is the address of the float and 0x3D99999A is the desired value in hex.
Bonus: now i can trigger on the event of my float getting set to NaN.
BS WRITE (*((unsigned long *)0x20000F08)) == 0x7FC00000
thank you
let me name the post that let to my success: http://www.keil.com/forum/15912/
I can't really find got documentation on those details. is GDB involved in the KEIL/ARM toolchain?
well done - thanks for sharing your solution Tim. I just located that GDB link when searching for more details, same now with: visualgdb.com/.../