HardFault
Zbiorczy wyjątek Cortex-M dla poważnych błędów — firmware'owy odpowiednik segfaulta, tyle że bez systemu operacyjnego, który cokolwiek wypisze.
To wyjątek numer 3 w tablicy wektorów. W Cortex-M0 jest jedynym wyjątkiem błędu; od M3 wzwyż są bardziej szczegółowe — MemManage, BusFault, UsageFault — które eskalują do HardFault, o ile ich się nie włączy, a domyślnie włączone nie są. Zwykli podejrzani to przepełnienie stosu, niewyrównany dostęp, zapis do pamięci flash, wywołanie przez uszkodzony wskaźnik na funkcję albo zapomniany punkt przerwania semihostingu.
Ciekawostka: odczyt przez wskaźnik zerowy rzadko wywala program, bo pod adresem 0 leży flash z tablicą wektorów. Domyślna obsługa to pętla nieskończona. Kto pisze prawdziwą, czyta rejestry statusu CFSR i HFSR oraz wyciąga licznik programu z ramki stosu zapisanej przez sprzęt — wskazuje on dokładnie tę instrukcję, która się przewróciła.