In-Circuit Programmers, Emulators and Debuggers
An In-Circuit Programmer (ICP) also called an In-System Programmer has the ability to program embedded devices like microprocessors (MPUs), microcontrollers (MCUs) and programmable logic devices (PLD, CPLD, and FPGA). They can program these devices and their attached memory while they are in a larger system. They usually attach a computer to the device by a simple header style connector, allowing for the programmer to download the software to the target.
Programmers can usually download to the non-volatile storage space on a target, usually flash memory. They may also have the capability to upload a code space from a target to make a copy, or to verify no errors occurred. Most programmers today use a JTAG protocol to interface to the memory bus systems of the device, as JTAG is usually integrated into devices to provide access to the boundaries of the subsystems, and registers in the device.
In-Circuit Emulators (ICEs) are hardware devices that facilitate debugging and testing of software in an embedded system. This usually interfaces to the system by a JTAG serial connection, which is shared by the ICP. Even though the name suggests that they emulate, this is more for historic reasons than to describe their function today. In the past, in order to debug a system, very expensive bond-out chips were sometimes used. These were sometimes attached to a target system by a connector that plugged into an adapter pod soldered on the system circuit board. As the JTAG circuitry built into most modern devices provides the access to the subsystems, buses and registers directly, these expensive and cumbersome systems are not required.
In-Circuit Debuggers are mixed software/hardware systems that typically include an ICP and ICE (usually the same device), and a complete software development environment. The software development environment has a special text editor with color-coding of keywords in the language being used (syntax highlighting), appropriate indenting and sometimes the ability to tag functions to facilitate code visibility. They allow compilation, and download to the target, and can usually provide a graphic user interface to present the downloaded software. Through the instruction-by-instruction step control capabilities of JTAG, the debugger links, and steps the code displayed in the graphical user interface. The user can specify breakpoints to stop code for inspection, inspect registers in the CPU and even inspect variable values, stacks, frames and memory data.
Continua a leggere
Meno informazioni