Dear sirs,
The ARM v7ar manual says that DCC data registers DBGDTRTX and DBGDTRRX have RW attributes from external view.
It confuses me why DBGDTRTX can be written from external debugger. what is the purpose for this function?
The same confusion to DBGDTRRX why it can be read from external debugger?
Can any expert explain it to me? Thanks.
cray
One use would be when you are using a JTAG debugger to debug an on-chip debug agent on one core that is using DCC to communicate with a target core. By reading the target core's RX you can see the value that the debug agent has written to the target core, and by writing TX you can change the value that the debug agent reads from the target core.
As a general rule, debuggers should be able to read and write registers - even registers that are dedicated to debug. Because debuggers also need to be debugged.
Hi Grant,
Thanks for your response. Can you help me answer another question about v7m debug. That is as follows.
Regarding v7m debug architecture, I have some questions after reading the v7m architecture document.
Q1: There is no mechanism to send instruction to the core for execution in debug state, is that true?
I guess the architecture uses debug return address value register to start debug instruction exectution, is that right?
Yes, that is correct. ARMv7-M has a different style of architecture where the processor is completely halted in Debug state. The DCRDR and DCRSR are used to access the processor registers: everything else is memory mapped and can be directly accessed via the DAP. Contrast this with the "A" profile processors which have coprocessors and multiple exception levels with Banked registers, and you can see why these architectures take different approaches.