ETM (Embedded Trace Macrocell)
Blocco hardware di ARM per la traccia delle istruzioni: comprime e trasmette all'esterno il percorso esatto seguito dal programma, senza fermare il core.
Un breakpoint dice dove si trova il programma. L'ETM dice come ci è arrivato. Il blocco si affianca al core nell'architettura CoreSight di ARM ed emette un flusso compresso di salti ed eccezioni; il resto lo ricostruisce il debugger a partire dal binario. Il flusso esce da una porta di traccia parallela (quattro pin dati più un clock) verso una sonda dedicata, oppure confluisce in un piccolo buffer on-chip (ETB).
È lo strumento per i bug che svaniscono nell'istante in cui si ferma il processore: crash legati alla temporizzazione, rami rari, HardFault con uno stack privo di senso. Fornisce inoltre la copertura del codice su hardware reale, apprezzata nei settori certificati. Il rovescio è il costo: l'ETM è opzionale su Cortex-M3/M4/M7, manca sull'M0+ (che ha il più semplice MTB) e richiede una sonda di tutt'altra fascia di prezzo rispetto a un economico adattatore SWD. Il suo parente ITM si occupa invece di ciò che il programma sceglie di stampare.