Cacheunderhåll
De uttryckliga instruktioner som firmware måste ge för att cachen och DMA-kontrollern ska se samma minne.
På en mikrokontroller utan cache skriver DMA rakt i RAM och processorn läser därifrån. Med Cortex-M7, som 2014 tog datacachen till mikrokontrollervärlden, slutade det vara sant: DMA-kontrollern går förbi cachen, och ingen hårdvara håller dem överens. Före en sändning måste bufferten därför cleanas, så att smutsiga cacherader skrivs ut till RAM. Efter en mottagning måste den invalideras, så att processorn inte läser gamla kopior.
Fällan är cacheradens storlek, 32 byte. En buffert som inte börjar och slutar på en radgräns delar rad med andra variabler, och en invalidering slänger då även deras nyskrivna värden. Det enklare alternativet är att låta MPU:n märka DMA-minnet som icke-cachebart och betala i prestanda i stället för i felsökningstimmar.