Cache-onderhoud
De expliciete handelingen die firmware moet uitvoeren zodat cache en DMA-controller het eens zijn over wat er in het geheugen staat.
Bij een microcontroller zonder cache schrijft DMA rechtstreeks naar RAM en leest de CPU het daar weer uit. De Cortex-M7, die in 2014 een datacache naar de wereld van de microcontrollers bracht, maakte daar een eind aan: de DMA-controller omzeilt de cache en geen enkele hardware houdt beide gelijk. Vóór het verzenden moet de buffer gecleand worden, zodat vuile regels in het RAM belanden. Na ontvangst moet hij geïnvalideerd worden, zodat de CPU geen verouderde kopieën meer leest.
De valkuil is de cacheline van 32 bytes. Een buffer die niet op een lijngrens begint en eindigt, deelt regels met andere variabelen, en invalideren gooit dan ongemerkt ook hun verse schrijfacties weg. Het luie alternatief — het DMA-geheugen via de MPU als non-cacheable markeren — kost doorvoersnelheid in plaats van uren debuggen, en is vaak de betere ruil.