We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi everyone,
I am debugging an application on a STM32F4 in flash with a ULINK. I read one of the features for the ULINK should be 8 breakpoints, but after the 6th breakpoint I get an error message. Isn't it possible to use all 8 breakpoints? Maybe can I use 8 breakpoints with another device?
Can you help me with this?
Warden
Let's say Keil promises that their hardware can be used up to 100MHz processors. If you then buy a 20MHz processor - would Keil then be wrong in their promises?
Keil specifies the capability of their JTAG adapter. But that doesn't mean the actual capabilities available to you will depend on which processor you connect it to. Guess what? If the processor haven't any JTAG interface, then you get zero breakpoints...
Same with the trace functionality - you only get trace functionality when using a processor that have trace support. But Keil can still list trace functionality for the adapter.
"Keil promises 8 ROM breakpoints here:"
Actually, no they don't.
They promises "8 max" (note that 8 max often means something else than 8 - "8 max" often means "up to", indicating that there may be other factors making the practical limit lower).
And the above promise is for Cortex-M3 - isn't your processor a Cortex-M4? Where in that table do you see any promises for Cortex-M4 besides the check for "Supported Device Families"?
Per,
My processor is an older STM32F1, so it is an M3, but I think for both M3 and M4: I am not aware of any Cortex-M3 or M4 that has more than 6 Flash patch units that can be used. Can you name even one Cortex-M device on which the 8 Breakpoints can actually be set? If you can not, should not the "8 max" be changed?
How many get eaten with reset, run-to-main, stepping, or other housekeeping purposes?
Perhaps flow might be better exposed via telemetry rather than abruptly grinding to a halt in a debug terminal?
The limit is 6 breakpoints, calling it 8 is simply wrong. Trying to say: Oh you do not need breakpoints, you can simulate etc. does not make it any more true.
Besides: The way I work I need a lot of breakpoints. Reminds me of my old boss, who said: Debuggers are only for sloppy programmers...