> De. Lépésenként hogy működtetsz egy áramkört úgy, hogy közben látod a progid változóinak aktuális értékét is?
ICD (In-circuit debugger) vagy ICE (In-circuit emulator).
Az ICD az a cél MCU-hoz kapcsolódik, és lehetővé teszi a program léptetését, breakpointok elhelyezését, változók figyelését, stb. Nagyjából ugyanazokat a funkciókat nyújtja, mint amiket egy desktop alkalmazás debuggolásakor elérsz. Természetesen ez némi többletet igényel az MCU-n belül, amit ráadásul a végtermékbe épített példányokban (99%) sosem használunk, de a mai gyártási költségek mellett ez elenyésző.
Az ICE nagyjából ugyanazt nyújtja, mint az ICD, csak teljes egészében lecseréli a cél MCU-t ugyanabból a családból egy sokkal nagyobbra, amin még a legtöbb belső kapcsolat is ki van vezetve. Tehát van egy 1 kB RAM-os eszközöd 32 lábbal a céláramkörben. Kapsz helyette egy 100 lábú, 100 kB RAM eszközt, aminek a 32 lábú adapterét berakod az eredeti MCU helyére. A 32 lábon minden kapcsolata pontosan ugyanolyan lesz a hardver többi részével, mint az eredeti MCU-nak. A te programod is 32 lábú, 1 kB RAM-os eszköznek fogja látni, mert azt emulálja. (Innen a neve.) A maradék erőforrásokat pedig a debuggoláshoz (breakpoint, watch, stb) használja.
Tehát ICD esetén a hibakereséshez szükséges többlet be van építve minden egyes legyártott eszközbe, addig ICE esetén a fejlesztés idejére a mikrokontroller egy speciális, hibakeresésre kialakított változatát használod.
Atmel MCU-hoz:
http://www.atmel.com/tools/JTAGICE3.aspx
http://www.atmel.com/tools/AVRDRAGON.aspx