Semihosting
Mechanizm ARM, który pozwala firmware'owi pożyczyć konsolę i system plików komputera-hosta przez sondę debugującą, dzięki czemu printf działa na układzie bez ekranu.
Program wkłada kod operacji i wskaźnik do dwóch rejestrów i wykonuje specjalną instrukcję punktu przerwania (BKPT 0xAB w Cortex-M). Debugger zatrzymuje rdzeń, odczytuje, o co prosi program — wypisz ten napis, otwórz ten plik — robi to na PC, wkłada wynik do rejestru i puszcza procesor dalej. Bez UART-a, bez dodatkowych pinów.
Jest też boleśnie wolny, bo każde wywołanie zatrzymuje CPU, i ma słynną pułapkę: bez podłączonego debuggera nikt nie obsłuży punktu przerwania, który zamienia się w HardFault. Zapomnij przebudować bez semihostingu, a wypuścisz produkt działający tylko na twoim biurku. ITM przez SWO i RTT od Seggera robią to samo bez zatrzymywania rdzenia.