ETM(Embedded Trace Macrocell)
ARMの命令トレース用ハードウェアブロック。プログラムがたどった経路を圧縮して出力し、コアを停止させずに追跡できる。
ブレークポイントが教えてくれるのは、プログラムが今どこにいるかである。ETMは、そこへどう至ったかを教えてくれる。このブロックはARMのCoreSightアーキテクチャでコアの隣に置かれ、分岐と例外の圧縮ストリームを出力する。残りはデバッガがバイナリから復元する。ストリームの出口は、専用プローブへの並列トレースポート(データ4本とクロック)か、チップ内の小さなバッファ(ETB)のどちらかである。
プロセッサを止めた途端に消えるバグ、つまりタイミング依存のクラッシュ、まれな分岐、スタックが意味をなさないHardFaultなどに使う道具である。実機でのコードカバレッジも得られるため、認証が必要な業界で重宝される。難点はコストで、ETMはCortex-M3/M4/M7ではオプション、M0+にはなく(代わりに簡易なMTBがある)、基本的なSWDドングルとは別の価格帯のプローブを必要とする。兄弟のITMは、プログラムが自ら出力したいものを担当する。