I am running some example program in ARM Development Studio using FVP (fixed virtual platforms) simulator for A53.
All is OK, I can run the app.
However, the problem is the breakpoints: they don't work in C code, the work only in .S files assembly.
What could be the problem?
Model parameters are -C bp.secure_memory=false -C cache_state_modelled=0.
Hi DanijelI suspect that a breakpoint is being set, but is not being applied for the exception level in which your code is running, and so is not being hit.For example, if your C code is running in EL1, then debug symbols must be loaded for EL1, and the breakpoint must be set for EL1, with e.g. "break EL1N:main"I suggest you take a look at the ready-made example named "startup_Cortex-A53x1_AC6" that is supplied in Arm DS, and its accompanying readme.html that guides you through the example, including setting breakpoints in different ELs.Best regardsStephen
Thanks Stephen.
That's exactly what I am doing: using example named "startup_Cortex-A53x1_AC6"!
Bit I modified it, added some C code to it, called from main.c.
And I ended up with no breakpoints being hit in C.
Hi DanijelAs you've probably spotted, the "startup_Cortex-A53x1_AC6" example is a makefile-builder project that is based on the "startup_Armv8-Ax1_AC6" example. If you want to extend the "startup_Cortex-A53x1_AC6" example by adding a new source file e.g. hello.c then, as a starting point, you must add it to the /src folder of the "startup_Armv8-Ax1_AC6" example, otherwise hello.c will not get compiled.Also, check that symbol files are loaded for all exception levels that your code executes, e.g.:add-symbol-file "${workspace_loc:/startup_Cortex-A53x1_AC6/startup_Cortex-A53x1_AC6.axf}" EL1N:0I have tested this with the addition of a new C file hello1.c containing function hello1(), and the addition of a new function hello2() in main.c, with both functions being called from main(), and both breakpoints are hit as expected - see attached screenshot.If this still doesn't work for you, then revert back to the original "startup_Cortex-A53x1_AC6" example, and try setting a breakpoint on nudge_leds() in timer_interrupts.c. I've also tested that this works as expected.Stephen
Hi Stephen,
What I have done is I made a new project in ADStudio, than I added a folder with /src and /asm files from the example you mention, and as a last step I added another folder with a bunch of my C source files. It all compiles, builds and runs nicely.
I put a few breakpoints in startup.S, and they all work. Also I placed a few breakpoints into GIC*.c and they all work.
However, breakpoints in main.c don't work. Main.c is still in the /src dir as GIC files are. So it's not even my own folder.
Also, none of the breakpoints work in my own source.
What could I have done to cause this strange behavior? I modified main.c, added some lines, however, nothing suspicious. It builds and runs nicely!
View all questions in Arm Development Studio forum