Normal Execution

state = running
Halted

state = halted
Halting

state = running/halted
Resuming

state = running/halted
Non-Debug
Halt/Resume
Abstract Command
Abstract Command Error
Legend
Error Wait

abstractcs.cmderr != 0 abstractcs.busy = 0
Error Busy

abstractcs.cmderr = 1 abstractcs.busy = 1
+) Commands are issued by writing to command, or by accessing dataN when autoexecdataN is set, or by accessing progbufN when autoexecprogbufN is set.

++) Commands are interrupted when command, abstractcs, or abstractauto are written, or when data or progbuf registers are accessed, while abstractcs.busy=1.

+++) Quick Access Commands are not shown here in detail. They offer an alternate way to quickly go through the Halting/Halted/Halted Abstract Command/Halted/Resuming states.
Abstract Command Idle

abstractcs.cmderr = 0 abstractcs.busy = 0
Abstract Command Running+++

abstractcs.cmderr = 0 abstractcs.busy = 1
*) Software breakpoints, if enabled for the current mode in dcsr.
Hart Reset
Debug Module Reset
Reset
haltreq=>1, software breakpoint*, single step, trigger w/ action 1, halt group, OR external trigger
resumereq=>1, resume group, OR external trigger
command issued+
command completes
command interrupted++
command fails OR not supported
cmderr => 0
command succeeds
resethaltreq=0
resethaltreq=1