I use a Cortex-A7 board and write start up code.
I try to use Security Extension.
I use `smc` instruction and make cpu mode monitor mode.
In the monitor handler, I tried to changed stack pointer value for calling other functions.
But after execute `ldr sp, =_stack_start`, sp value is 0x0 (Of course, _stack_start is not 0x0 and I check it in the assembler code).
Therefore, after `push` some registers and `pop` those registers, the data abort excetpions occurred!
How can I change the sp value?
In order to dump the registers the CPU must be halted first.
Try the 'halt' command or 'reset halt', then 'reg' should work.
You should also be able to use the 'step' command after the CPU is halted.
mdw shows a 32-bit word from memory, mdh shows a 16-bit word and mdb shows an 8-bit word (byte).
mww writes a 32-bit word, mwh writes a 16-bit word and mwb writes an 8-bit word.
arm disassemble <address> <length>
should show you the disassembly.
Yep, accessing flash, MMU, caches etc. don't work without the "board config" (=board, SoC or MCU config).
But if you know the parameters, you should be able to make a configuration that lets you debug "within the core".
If you need to upload the program with the debugger, the debugger is not of much use without the configuration (or driver).
It might be possible to "upload" a small program into RAM using MWW commands (better put them in a script; don't type them each time).
... Of course, a perl script on the host could generate an uploading script, so at least basic debugging *would* be possible; however a bit inconvenient.