Semihosting
Een ARM-mechanisme waarmee firmware via de debugprobe de console en het bestandssysteem van de host-pc leent, zodat printf werkt op een chip zonder scherm.
Het programma zet een opcode en een pointer in twee registers en voert een speciale breakpoint-instructie uit (BKPT 0xAB op Cortex-M). De debugger zet de kern stil, leest wat er gevraagd wordt — druk deze tekst af, open dit bestand —, voert het uit op de pc, zet het resultaat in een register en laat de processor weer lopen. Geen UART, geen extra pinnen.
Het is ook pijnlijk traag, omdat elke aanroep de CPU stopzet, en er zit een beroemde valkuil in: zonder aangesloten debugger vangt niemand de breakpoint op en wordt het een HardFault. Wie vergeet te herbouwen zonder semihosting, levert een product dat alleen op het eigen bureau werkt. ITM via SWO en Segger's RTT doen hetzelfde zonder de kern stil te zetten.