IN CIRCUIT EMULATOR and IN CIRCUIT DEBUGGER

Hi all
I hope my question is relevant to this sub forum .

What is the difference between the two
IN CIRCUIT EMULATOR and IN CIRCUIT DEBUGGER

I mean in the software level and in the hardware level .

Thanks
EC

Please note that this is my understanding, and it may be completely wrong or off-base in some fundamental way:

  1. An in-circuit emulator is a device (generally a PC, or a peripheral card in a PC) which is connected to the circuit (via a jumper cable) to -emulate- a particular portion of the circuit; that portion could be a microcontroller, it could be logic, it could even be analog circuitry. Whatever it is, generally the device doing the emulation is taking an active role, and the real device is not in the circuit at all. What is doing the emulation is usually a piece of software, which acts just like the original hardware, and reads the pins, outputs voltages, etc - just like the original device.

  2. In the case of an in-circuit debugger, though, this is a similar in hardware (that is, usually a PC running some software is connected to the circuit via a cable), but instead of replacing the component, it acts in a directive (or sometimes passive) manner, monitoring and sometimes directing the hardware; for instance, if the hardware being debugged is a microcontroller, the software might control the "stepping" of the clock of the controller, instead of allowing it to "free-run", while also examining registers, address locations in memory, as well as allowing the altering of registers and memory locations; it may also allow for the setting of "breakpoints" or conditional breaks (such as when a register becomes some value, or a certain pin state is reached, etc). In this case, the software is only doing a monitoring and control action, but it doesn't replace the real hardware. Also, the real hardware has to allow for this possibility.

Does this make sense? Also - are you aware of what emulation actually is; that it is possible (given Turing completeness) for software to emulate hardware, and vice-versa? This awareness, of course, brings up questions as to what is -really- considered hardware, and what is -really- considered software. There's also potential philosophical questions about whether "hardware" is needed to run "software" at all (alternatively - maybe everything is -hardware-?). Maybe there's a false dichotomy between the concepts of hardware and software? Of course, at a certain point, you run into the question of life vs. non-life (there is postulation that the base mechanisms of life - DNA/RNA/ribosomal machinery/chromosomes/etc - are Turing complete mechanisms)...

/ok - kinda got off on a tangent there, but this kind of stuff fascinates me... :slight_smile:

Thanks
here is a nice related article I found online
http://www.best-microcontroller-projects.com/debugging.html

I also want to say that the ARDUINO method of debugging - using the serial.print command is unique
and smart thing when used right but not as powerful as the ICE/ICD.

Elico

I would say that the serial printing is the most common method in Arduino world, closely followed by toggling pins for those with proper instruments.


Rob