Semihosting
Un mecanismo de ARM con el que el firmware toma prestados la consola y el sistema de archivos del PC anfitrión a través de la sonda de depuración, para que printf funcione en un chip sin pantalla.
El programa coloca un código de operación y un puntero en dos registros y ejecuta una instrucción de punto de ruptura especial (BKPT 0xAB en Cortex-M). El depurador detiene el núcleo, lee qué se le pide —imprime esta cadena, abre este archivo—, lo hace en el PC, deja el resultado en un registro y suelta de nuevo el procesador. Sin UART y sin pines extra.
También es lentísimo, porque cada llamada para la CPU, y tiene una trampa célebre: sin depurador conectado nadie atrapa el punto de ruptura y acaba en HardFault. Quien olvide recompilar sin semihosting entrega un producto que solo funciona en su escritorio. ITM sobre SWO y el RTT de Segger hacen lo mismo sin detener el núcleo.