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.
Some more info.
I can step through the code until "erret" line below:
bl SetSPISecurityAll
// // Set up EL1 entry point and "dummy" exception return information, // then perform exception return to enter EL1 // .global drop_to_el1drop_to_el1: adr x1, el1_entry_aarch64 msr ELR_EL3, x1 mov x1, #(AARCH64_SPSR_EL1h | \ AARCH64_SPSR_F | \ AARCH64_SPSR_I | \ AARCH64_SPSR_A) msr SPSR_EL3, x1 eret
Until eret is executed here it's all EL3 memory, and than EL1N. When I try to dissasembly Show in Source it says "no source available for address: EL1N...".
Is this drop_to_el1 the problem?
Hi Danijel,The different exception levels (ELx) are essentially different (but overlapping) memory spaces.As Stephen mentioned above, the solution is to load the debug symbols (you do not need to reload the image itself) to the necessary EL level, which is done by the below command (or from the Load menu item in the Debug Control pane).Note how EL1N:0 is specified as the 'offset' - this means it will be loaded to EL1N no matter what EL level the core happens to be in when the command is executed:
add-symbol-file "${workspace_loc:/startup_Cortex-A53x1_AC6/startup_Cortex-A53x1_AC6.axf}" EL1N:0
Understood, and resolved, thank you so much Ronan.
Thank you Stephen too.