DWT (Data Watchpoint and Trace)
De Cortex-M-eenheid die de processor stopzet zodra iemand een bepaald adres aanraakt — en toevallig ook de populairste stopwatch van de embedded wereld bevat.
DWT heeft een handvol comparators, meestal vier, die een debugger op een adres kan richten. Schrijft de core daar iets weg, dan stopt hij en zie je precies welke regel de buffer heeft overschreven. Dit is de hardware achter een GDB-watchpoint en, anders dan de softwarevariant die elke instructie afzonderlijk uitvoert, kost het helemaal geen snelheid.
Het populairste register is desondanks CYCCNT, een 32-bits teller die elke klokcyclus ophoogt. Schakel hem in via DEMCR en DWT_CTRL, lees hem voor en na, en het verschil is de uitvoeringstijd op de cyclus nauwkeurig. Bij 168 MHz loopt hij na iets meer dan 25 seconden over. Cortex-M0 en M0+ hebben de teller niet, iets wat mensen meestal ontdekken tijdens het porten.