DWT(Data Watchpoint and Trace)
指定アドレスに誰かが触れた瞬間にプロセッサを止める Cortex-M のユニット。ついでに、組み込み界で最も愛されるストップウォッチも内蔵している。
DWT にはコンパレータが通常4つほどあり、デバッガがそれぞれにアドレスを設定できる。コアがそこへ書き込むと実行が停止し、どの行がバッファを踏み荒らしたかが正確に分かる。GDB のウォッチポイントを支えるハードウェアがこれで、全命令をシングルステップする代替のソフトウェア方式と違い、速度の低下が一切ない。
ただ、最もよく使われるレジスタは CYCCNT のほうだ。クロックサイクルごとにカウントアップする32ビットカウンタで、DEMCR と DWT_CTRL で有効にし、処理の前後で読めば差が実行時間(サイクル単位)になる。168MHz なら25秒ちょっとで一周する。Cortex-M0/M0+ にはこのカウンタがなく、移植の段階で初めて気づく人が多い。