An In-Circuit Emulator (ICE) is a tool to develop the software for an embedded system. For the development of the software, the controller normally present in the system is replaced by a special variant that is directly connected to the ICE. An in-circuit emulator also called in-circuit emulator (ICE) or on-circuit debugger (OCD) or background debug module (BDM) is a hardware device for debugging the software of an embedded system. Such a device is necessary because embedded systems have a number of shortcomings.
One method of testing the software for an embedded system is logic analyzers. They are connected to the control, address and data bus and record their signals. The logic analyzer’s software can use it to understand what the controller is doing on the target hardware. By means of a so-called trace memory, the program sequence of the controller can be traced over several hundred or thousands of program steps. The disadvantages of the method are a high number of signals that have to be tapped on the target system (even a 16-bit controller can easily reach over 60 signals), the lack of control over the program flow, no possibility to determine the contents of registers, and the program code can only be represented as assembly code. In addition, modern controllers often have their memory integrated, which means that no external lines are available for control, address and data bus. For these reasons, the use of logic analyzers for software development is hardly in use today.
Software Development with In-Circuit Emulator
The remedy for these problems is the in-circuit emulators. These devices replace the actual controller on the target system with hardware that has the necessary analysis functions built in.
There are several possibilities for the realization of the in-circuit emulators. In many cases, a special version of the chip to be emulated is used, which leads out additional signals in order to be able to follow the program sequence, so-called “bond-out chips”. This bond-out chip (so called because the process of connecting the signals of a chip to the terminals of the package is called “bonding” and signals are led out here that otherwise only exist internally) then sits either on a so-called pod, an adapter that is attached to the target system instead of the normal controller, or directly in the emulator and only the signals are routed to the pod.
If such a bond-out chip does not exist, the controller can also be completely simulated by FPGA or other logic circuits. However, this may involve a significantly higher effort and does not guarantee a 100 percent faithful replica.
The ICE is usually integrated directly into the development software for the controller. This not only allows the recorded command code to be displayed, but also allows the source code to understand what the controller is currently doing. Debugging in high-level language and even resolving operating system data is possible.
Normally, the ICE is used for debugging. Since it can also practically look into and influence the “inner workings” of the controller (e.g. program counter, stack pointer, status register), the program sequence can now be controlled. Since access is also possible in (true) “real time”, it can also be used to analyze problems that can no longer be detected with so-called in-system programmers, as they receive their data via relatively slow interfaces. The trace memory, which has already been used in the logic analyzers, is a decisive element in this. The deeper this memory is, i.e. the more it can record, the longer back you can follow the program sequence. This helps tremendously when debugging complex systems. Above all, problems with interrupts are comparatively easy to detect in this way.
Limitations of In-Circuit Emulator
The big problem of the ICE is the high cycle speed of today’s high-end controllers and their sometimes extremely short product lifetime. For the manufacturer of the controller, a bond-out chip almost means a new development of the same. This means that it only becomes interesting if it can be produced in large quantities. However, this is regularly not the case with development systems. For example, some chip manufacturers have no interest in developing a bond-out chip, but other chip manufacturers now provide practically all new controllers with an ICE interface. The high cycle speed is another hurdle. With a processor clock of several hundred megahertz, the technical effort required to route the signals from the bond-out chip to the emulator is correspondingly high.
Depending on the equipment and the complexity and speed of the controller to be emulated, ICE can be quite expensive products.