MPU (jednostka ochrony pamięci)
Odchudzona MMU dla mikrokontrolerów: niczego nie tłumaczy, ale potrafi odmówić kodowi odczytu, zapisu lub wykonania w wyznaczonych obszarach pamięci.
Bez MPU każdy wskaźnik w firmware może pisać gdziekolwiek — na stos innego zadania, w wewnętrzne struktury RTOS-a albo do rejestru sterującego silnikiem. MPU dzieli przestrzeń adresową na kilka regionów, osiem lub szesnaście w Cortex-M, każdy z własnymi uprawnieniami. Naruszenie wywołuje błąd MemManage zamiast cichego uszkodzenia danych, które wyjdzie po trzech godzinach.
Najczęstsze zastosowania są skromne: region strażniczy pod każdym stosem, który łapie przepełnienia, oraz oznaczenie RAM-u jako niewykonywalnego, by przepełnienie bufora nie zamieniło się w kod. FreeRTOS-MPU i Zephyr idą dalej i uruchamiają zadania bez uprawnień. ARMv7-M wymaga, by region miał rozmiar potęgi dwójki i był do niego wyrównany, co zamienia projektowanie układu pamięci w łamigłówkę.