Embedded Systems Design: An Introduction to Processes, Tools, and Techniques

The debug kernel is a powerful part of the embedded system designer s toolkit. In fact, it s arguably the most important tool of all. With a debug kernel, you have a degree of control and an observation window into the behavior of your system, with only moderate overhead demands on the target.
As the complexity (and cost) increases, these hardware tools are asked to address the issue of intrusiveness in their own particular way. With an embedded system, you need the run control feature set that the debugger provides because examining and modifying memory and registers, single- stepping, and running to breakpoints is fundamental to debugging software of any kind. You can use these debug kernel features to trace program execution but not without intruding on the real-time behavior of the system. The logic analyzer, although more expensive, provides a less intrusive means of tracing program execution.
This chapter has considered the three fundamental tool requirements for integrating hardware and software:
A debug kernel for controlling the processor during code development
Substitution memory as a way to rapidly download and replace code images in non-volatile memory
A non-intrusive way to follow code execution in real time
In the next chapter, you ll learn how to benefit even more by tightly coupling these three tools. In short, you ll examine the in-circuit emulator.