Semihosting
Un meccanismo ARM che permette al firmware di prendere in prestito console e file system del PC host tramite il debug probe, così printf funziona su un chip senza schermo.
Il programma mette un codice operativo e un puntatore in due registri ed esegue una speciale istruzione di breakpoint (BKPT 0xAB sui Cortex-M). Il debugger ferma il core, legge la richiesta — stampa questa stringa, apri questo file — la esegue sul PC, deposita il risultato in un registro e lascia ripartire il processore. Nessuna UART, nessun pin aggiuntivo.
È anche penosamente lento, perché ogni chiamata ferma la CPU, e ha una trappola celebre: senza debugger collegato nessuno intercetta il breakpoint, che diventa un HardFault. Se si dimentica di ricompilare senza semihosting, si consegna un prodotto che funziona solo sulla propria scrivania. ITM su SWO e l'RTT di Segger fanno lo stesso lavoro senza fermare il core.