Emulace v obvodu - In-circuit emulation

V obvodové emulace ( ICE ) je použití hardwarového zařízení nebo v emulátory použít k ladění na softwaru z o vestavěný systém . Funguje pomocí procesoru s dodatečnou schopností podporovat ladicí operace a také provádět hlavní funkce systému. Zejména u starších systémů s omezenými procesory to obvykle zahrnovalo dočasné nahrazení procesoru hardwarovým emulátorem: výkonnější, i když dražší verze. Historicky to bylo ve formě procesoru bond-out, který má za účelem ladění vyvedeno mnoho interních signálů. Tyto signály poskytují informace o stavu procesoru.

Nověji termín zahrnuje také hardwarové debuggery založené na Joint Test Action Group (JTAG), které poskytují ekvivalentní přístup pomocí hardwaru pro ladění na čipu se standardními produkčními čipy. Díky použití standardních čipů namísto vlastních verzí bond-out je technologie všudypřítomná a má nízké náklady a eliminuje většinu rozdílů mezi vývojovým a běhovým prostředím. V tomto běžném případě je termín emulátoru v obvodu nesprávné pojmenování , někdy matoucí, protože emulace již není zahrnuta.

Vestavěné systémy představují pro programátory zvláštní problémy, protože obvykle postrádají klávesnice , monitory , diskové jednotky a další uživatelská rozhraní, která jsou v počítačích přítomna. Díky těmto nedostatkům jsou nástroje pro ladění softwaru v obvodu nezbytné pro mnoho běžných vývojových úkolů.

Funkce

Obvodový emulátor (ICE) poskytuje okno do integrovaného systému. Programátor pomocí emulátoru načítá programy do vestavěného systému, spouští je, pomalu je prochází a prohlíží a mění data používaná softwarem systému.

Emulátor dostane jeho jméno, protože to napodobuje (kopíruje) na centrální procesorovou jednotku (CPU) počítače implementovaného systému. Tradičně měl zástrčku, která se vkládá do zásuvky, kde by byl obvykle umístěn čip integrovaného obvodu CPU . Většina moderních systémů využívá CPU cílového systému přímo, se speciálním ladicím přístupem založeným na JTAG. Emulace procesoru nebo přímý přístup JTAG k němu umožňuje ICE dělat cokoli, co procesor umí, ale pod kontrolou vývojáře softwaru.

ICE připojují k integrovanému systému počítačový terminál nebo osobní počítač (PC). Terminál nebo PC poskytuje programátorovi interaktivní uživatelské rozhraní pro zkoumání a ovládání vestavěného systému. Je například rutinou mít ladicí program na úrovni zdrojového kódu s grafickým rozhraním oken, které komunikuje prostřednictvím adaptéru JTAG (emulátoru) s integrovaným cílovým systémem, který nemá žádné grafické uživatelské rozhraní.

Je pozoruhodné, že když jejich program selže, většina vestavěných systémů se jednoduše stane zděnou . Vestavěné systémy často postrádají základní funkce pro detekci známek selhání softwaru , jako je jednotka pro správu paměti (MMU) pro zachycení chyb přístupu k paměti. Bez ICE může být vývoj vestavěných systémů extrémně obtížný, protože obvykle neexistuje způsob, jak zjistit, co se stalo. S ICE může programátor obvykle testovat části kódu, poté izolovat chybu v konkrétní části kódu a poté zkontrolovat vadný kód a přepsat jej, aby se problém vyřešil.

Při používání poskytuje ICE programátoru zarážky spuštění , zobrazení a monitorování paměti a ovládání vstupu/výstupu. Kromě toho lze ICE naprogramovat tak, aby hledalo jakýkoli rozsah odpovídajících kritérií, u nichž se má pozastavit, ve snaze identifikovat původ selhání.

Většina moderních mikrokontrolérů využívá prostředky poskytnuté na vyrobené verzi mikrokontroléru pro funkce programování, emulace a ladění zařízení, místo aby potřebovala další speciální emulační verzi (tj. Bond-out) cílového mikrokontroléru. I když se jedná o nákladově efektivní metodu, protože jednotka ICE spravuje emulaci pouze místo emulace cílového mikrokontroléru, je třeba provést kompromisy, aby byly ceny v době výroby nízké, a přesto poskytnout dostatek funkcí emulace pro (relativně málo ) emulační aplikace.

Výhody

Prakticky všechny vestavěné systémy mají hardwarový a softwarový prvek, které jsou oddělené, ale úzce na sobě závislé. ICE umožňuje spuštění a testování softwarového prvku na hardwaru, na kterém má běžet, ale stále umožňuje programátorské vymoženosti, které pomáhají izolovat chybný kód, například ladění na úrovni zdroje (které ukazuje program tak, jak byl původně napsán) ​​a single-stepping (což umožňuje programátorům spouštět programy krok za krokem k nalezení chyb).

Většina ICE se skládá z adaptéru, který je umístěn mezi hostitelským počítačem ICE a testovaným systémem. Sestava konektoru záhlaví a kabelu připojuje adaptér k zásuvce, kde je v integrovaném systému namontována skutečná centrální procesorová jednotka (CPU) nebo mikrokontrolér . Nedávné ICE umožňují programátorům přístup k ladicímu obvodu na čipu, který je integrován do procesoru, pomocí JTAG nebo rozhraní BDM (Debug Mode Interface ) pro ladění softwaru integrovaného systému. Tyto systémy často používají standardní verzi čipu CPU a mohou se jednoduše připojit k ladicímu portu na produkčním systému. Někdy se jim říká debuggery v obvodu nebo ICD, aby se odlišil fakt, že nereplikují funkčnost CPU, ale naopak ovládají již existující, standardní CPU. Protože procesor není nutné vyměňovat, mohou pracovat na produkčních jednotkách, kde je CPU připájen a nelze je vyměnit. Na procesorech x86 Pentium používá ICE speciální „režim sondy“, který pomáhá při ladění.

V kontextu vestavěných systémů ICE neemuluje hardware. Spíše poskytuje přímý ladicí přístup ke skutečnému CPU. Testovaný systém je pod plnou kontrolou, což vývojáři umožňuje přímo načítat, ladit a testovat kód.

Většina hostitelských systémů jsou běžné komerční počítače, které nesouvisejí s CPU použitým pro vývoj. Například počítač s Linuxem může být použit k vývoji softwaru pro systém využívající čip Freescale 68HC11 , procesor, na kterém nelze spustit Linux.

Programátor obvykle také upravuje a kompiluje kód vestavěného systému na hostitelském systému. Hostitelský systém bude mít speciální kompilátory, které produkují spustitelný kód pro vestavěný systém, nazývané křížové kompilátory nebo křížové sestavovače .

Ladění na čipu

Ladění na čipu je alternativou k emulaci v obvodu. K dosažení podobného cíle používá jiný přístup.

Ladění na čipu, často volně označované jako Joint Test Action Group (JTAG), využívá v produkčním systému poskytnutí dalšího ladicího rozhraní pro živý hardware. Poskytuje stejné funkce jako ladění v obvodu, jako je kontrola vnitřního stavu nebo proměnných, a může mít schopnost nastavit kontrolní body, zarážky a hlídací body. Rozdíl je v tom, že to je zajištěno dodatečným křemíkem v produkčním procesoru, než výměnou procesoru za emulátor ladění mimo palubu. Z tohoto důvodu se některé funkce ICE mění podle specifikací procesoru. Na řídicí desku je přidáno další rozhraní JTAG, což je vyžadováno v každém produkčním systému, ale protože to vyžaduje pouze několik signálních kolíků, dodatečné náklady jsou minimální. Rozhraní JTAG byla původně vyvinuta pro testování výroby a jsou pro ně stále užitečná.

Intel

Pro podporu ladění emulátoru v obvodu (ICE) na Intel 286 bylo na procesoru k dispozici pět dalších pinů: jeden vstupní pin pro externí vynucení zarážky ICE, ( ICEBP#) a dva alternativní páry výstupních pinů pro výběr operací přes sběrnici ICE místo uživatelské paměti. Na 80286 existují dvě instrukce ( 0F 04, 0F 05) pro výpis/obnovení úplného stavu CPU na offset paměti 0x800 spolu s jednobajtovou předponou ( F1) pro povolení režimu ICE pro přístup do uživatelské paměti.

Viz také

Reference

externí odkazy