Privacy Policy Cookie Policy Terms and Conditions In-Circuit-Emulator - Wikipedia

In-Circuit-Emulator

aus Wikipedia, der freien Enzyklopädie

Ein In-Circuit Emulator oder ICE ist ein Hilfsmittel, um die Software für ein eingebettetes System zu entwickeln. Für die Entwicklung der Software wird der normalerweise im System vorhandene Kontroller durch eine spezielle Variante ersetzt, der direkt mit dem ICE verbunden ist.

Inhaltsverzeichnis

[Bearbeiten] Bisherige Methode

Die althergebrachte Methode, die Software für ein eingebettetes System (das früher so gar nicht genannt wurde) zu testen, waren Logikanalysatoren, die mittels Software in der Lage waren, den Kontroller der Zielhardware zu emulieren. Dazu waren sie an den Kontroll-, Adress- und Datenbus angeschlossen und zeichneten deren Signale auf. Die integrierte Software konnte damit nachvollziehen, was der Kontroller auf der Zielhardware tat. Mittels eines sog. Tracespeichers konnte damit der Programmablauf des Kontrollers über mehrere hundert oder tausend Programmschritte nachvollzogen werden. Der Nachteil der Methode: Ein 16 Bit Kontroller mit 1MB Speicher (heute ein sehr kleines System!) und diversen Kontrollbits für Lesen, Schreiben und andere Dinge, bringt es leicht auf über 40 Leitungen, die auf der Leiterplatte kontaktiert werden müssen. Außerdem ist die Emulation nur in Assembler möglich. Als nächstes haben moderne Kontroller häufig ihren Speicher integriert, wodurch keine externen Leitungen für Kontroll-, Adress- und Datenbus zur Verfügung stehen.

[Bearbeiten] Der ICE

Abhilfe für diese Probleme schufen die In-Circuit Emulatoren. Für diese Geräte wird in der Regel vom Hersteller des Kontrollers eine spezielle Variante gebaut, der sog. „Bond-Out Chip“. Hier werden die (z.B.) 40 Leitungen direkt aus dem Chip herausgeführt und auf einer Verbindungsplatte (Pod) gesammelt, die wiederum in der Regel per Flachleitung mit dem eigentlichen ICE verbunden ist. Der Bond-Out Chip muss anstelle des normalen Kontrollers auf der Leiterplatte eingebaut werden. Der ICE ist in der Regel in die Entwicklungssoftware für den Kontroller direkt integriert. Es bedarf nicht mehr des Umwegs über den Logikanalysator. Debugging in Hochsprache ist damit möglich.

Normalerweise kommt der ICE beim Debugging zum Einsatz. Da er praktisch auch auf das „Innenleben“ des Kontrollers einblicken und Einfluss nehmen kann (Programcounter, Stackpointer, Statusregister und solche Dinge), ist der Programmablauf nun wunderbar kontrollierbar. Da die Zugriffe auch in (wahrer) „Echtzeit“ möglich sind, lassen sich damit auch Probleme analysieren, die mit sog. In-System Programmern nicht mehr erfassbar sind, da diese ihre Daten über verhältnismäßig langsame Schnittstellen bekommen. Der auch schon bei den Logikanalysatoren zum Einsatz gekommene Tracespacher ist dabei ein ausschlaggebendes Element. Je tiefer dieser Speicher ist, je mehr er also aufzeichnen kann, desto länger zurück kann man den Programmablauf verfolgen. Dies hilft beim Debugging von komplexen Systemen enorm. Vor allem Probleme mit Interrupts sind auf diese Art vergleichsweise leicht aufspürbar.

[Bearbeiten] Probleme

Das große Problem der ICE heute ist die hohe Taktgeschwindigkeit der Kontroller und deren manchmal extrem kurze Produktlebenszeit. Für den Hersteller des Kontrollers bedeutet ein Bond-Out Chip fast eine Neuentwicklung desselben. Damit wird er eigentlich nur dann interessant, wenn er in hohen Stückzahlen produziert werden kann. Dies ist bei Entwicklungssystemen regelmäßig aber nicht der Fall. So haben die Chiphersteller immer häufiger kein Interesse daran, einen Bond-Out Chip zu entwickeln. Die hohe Taktgeschwindigkeit ist eine weitere Hürde. Bei mehreren hundert Megahertz Takt sind die Leitungsinduktivitäten und -kapazitäten ein großes Problem, da die Signale vom Bond-Out Chip zum ICE sehr verfälscht werden können. Damit ist der ICE nicht mehr in der Lage, den Kontroller richtig zu interpretieren oder zu kontrollieren.

Außerdem sind ICE in der Regel recht teure Produkte, mehrere zigtausend € lassen sich damit locker ausgeben (der „Rolls-Royce“ der ICE liegt im sechsstelligen Bereich!). Auch ein Bond-Out Chip ist in der Regel nicht billig (hier sind Preise im vierstelligen Bereich nicht die Ausnahme). Und durch eine kleine Unachtsamkeit sind diese Chips leicht zu zerstören.

[Bearbeiten] Ausweg

Ein Ausweg aus dieser wirtschaftlichen Zwangslage liefern die In-System Programmer. Diese Teile bieten zwar nicht die Tiefe der Kontrolle über den Zielkontroller wie ein ICE, es lassen sich mangels Tracespeicher komplexe zeitliche Fehler nicht ohne weiteres aufklären, aber sie sind um Faktoren billiger (Preise zum Teil im zweistelligen Bereich!) und kommen ohne Bond-Out Chip aus. In der Regel muss aber ein zusätzlicher Steckplatz für ihre Schnittstelle auf der Leiterplatte (zumindest beim Entwicklungsmuster) integriert werden.

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu