6.4 Access from
In architectures before ARMv6T2, you cannot use the debug communications channel while the processor is in Thumb state, because there are no Thumb coprocessor instructions.
There are the following ways around this:
You can write each
polling routine in a SVC handler, which can then be invoked while
in either ARM or Thumb state. Entering the SVC handler immediately
puts the processor into ARM state where the coprocessor instructions
Thumb code can make interworking calls to ARM subroutines
that implement the polling.
Use interrupt-driven communication rather than polled
communication. The interrupt handler runs in ARM state, so the coprocessor
instructions can be accessed directly.