Over the past few decades, engineers have become reliant on the use of a trace buffer to assist in their development and debugging efforts. Trace buffers have typically been associated with in-circuit-emulators, where the trace buffer is the tool built into the emulator, which records a history of the processor’s executed bus cycles. This is often referred to as the program flow. Tracking the program flow is accomplished by recording the external address and data lines of the processor over time. With the appropriate trace filters and triggers, one could easily see how the trace buffer can offer an engineer an efficient method of debugging and extensive run-time analysis.

With the introduction of higher speed RISC processors, running at frequencies over 100MHz, the use of on-chip cache, RAM, or FLASH memories has become necessary in many cases. This often results in much of the processor’s bus activity being invisible to the external pins of the processor. Hence, the traditional method of collecting trace information is no longer viable. This being the case, one might wonder if the days of the trace buffer and even the in-circuit-emulator, might pass into ancient history.

Reprinted in its entirety from ARM IQ Vol. 4, No. 1, 2005