Standard input/output backend using ARM Semihosting. More...
Standard input/output backend using ARM Semihosting.
The ARM Semihosting provides an STDIO backend using the ARM Semihosting protocol. The main advantage of Semihosting is that is allows STDIO over the SWD/JTAG debugging interface already available on ARM microcontrollers.
ARM Semihosting works by using the breakpoint instructing to trigger the debugger to read the output or to write the input chars. Please be aware that this might skew the timing of your application.
The main disadvantage of Semihosting is that it is relative slow (even when compared to serial uart), and that it requires an active debug session to handle the breakpoint instructions. Without an active debug session the CPU will halt on the first STDIO activity until the breakpoint is handled by the debugger. Don't forget to disable the Semihosting module or replace it with stdio_null when switching to production builds.
As this is an ARM specific protocol, this module will only work on ARM-based microcontrollers.
Enable Semihosting-based stdio by adding the following module to your makefile:
If semihosting is not the default stdio mechanism of your board, the RIOT_TERMINAL
variable has to be set to semihosting
:
Launching the terminal will start an OpenOCD session with semihosting enabled. This can be used for both STDIO interaction and for debugging the firmware.
Files | |
file | stdio_semihosting.h |
Macros | |
#define | STDIO_SEMIHOSTING_RX (IS_USED(MODULE_STDIN)) |
Enable reception for Semihosting. | |
#define STDIO_SEMIHOSTING_RX (IS_USED(MODULE_STDIN)) |
Enable reception for Semihosting.
Automatically enabled when including the stdin
module
Definition at line 73 of file stdio_semihosting.h.