Hi everyone,
I'm working on a project using the STR736FV2T6 microcontroller in Keil µVision 5.42 with a ULINK2 debugger. My firmware builds and runs, but I can't set breakpoints in the C source code — they only work in the disassembly window.
What I’ve Tried:
Optimization is set to Level 0 (-O0)
Level 0 (-O0)
"Debug Information" is enabled in the target and C/C++ options
I’ve rebuilt the project multiple times (Rebuild All)
IROM1 is set to 0x00000000, since the CPU starts from this address after reset (due to Flash aliasing from 0x80000000)
0x00000000
0x80000000
The code is later flashed using J-Flash (after shifting the .hex file to 0x80000000 using srec_cat)
.hex
srec_cat
I disabled "Load Application at Startup" and tried loading the .axf manually using:
.axf
LOAD "C:/.../Hybrid_7_6_0x1_6_6GPA.axf"
New Problem:
When I try to load the .axf, I get this error:
*** error 57: illegal address (0x00008006) ULINK - ARM Error: Memory Mismatch! Address: 0x00008006 Value = 0x08 Expected = 0x00
Also:
Watch Window shows <cannot evaluate>
<cannot evaluate>
Symbol Browser is empty
This suggests that my debug symbols are not loading properly, even though I’ve verified they are generated and the file is being rebuilt. I'm not sure why Keil is trying to verify or flash memory at 0x00008006, since Flash is physically located at 0x80000000.
0x00008006
My Goal:
I want to debug the existing firmware already flashed via J-Flash (manually offset to 0x80000000)
I want to step through C code and use breakpoints, without Keil trying to re-flash anything
Questions:
How do I properly load debug symbols without triggering flashing or memory mismatch errors?
Is there a better way to get breakpoints working in C code on STR73x chips when code is physically at 0x80000000?
Any advice or insight would be greatly appreciated.
Thanks,