Das Kefk Network Wiki befindet sich im Testbetrieb.


In-Circuit-Emulator

Aus Kefk.

Wechseln zu: Navigation, Suche

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 Controller durch eine spezielle Variante ersetzt, der direkt mit dem ICE verbunden ist.

Inhaltsverzeichnis

SW-Entwicklung mit Logikanalysator

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 Controller 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 Controller auf der Zielhardware tat. Mittels eines sog. Tracespeichers konnte damit der Programmablauf des Controllers über mehrere hundert oder tausend Programmschritte nachvollzogen werden. Der Nachteil der Methode: Ein 16 Bit Controller 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 Controller häufig ihren Speicher integriert, wodurch keine externen Leitungen für Kontroll-, Adress- und Datenbus zur Verfügung stehen.

SW-Entwicklung mit In-Circuit-Emulator

Bild:Ice PC4701.jpg
Ein ICE mit Pod für die Renesas M16C-Familie

Abhilfe für diese Probleme schufen die In-Circuit Emulatoren. Für diese Geräte wird in der Regel vom Hersteller des Controllers 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 Controllers auf der Leiterplatte eingebaut werden. Der ICE ist in der Regel in die Entwicklungssoftware für den Controller direkt integriert. Es bedarf nicht mehr des Umwegs über den Logikanalysator. Debugging in Hochsprache und sogar das Auflösen von Betriebssystem-Daten ist damit möglich.

Normalerweise kommt der ICE beim Debugging zum Einsatz. Da er praktisch auch auf das „Innenleben“ des Controllers 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 Tracespeicher 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.

Grenzen von In-Circuit-Emulatoren

Das große Problem der ICE heute ist die hohe Taktgeschwindigkeit der Controller und deren manchmal extrem kurze Produktlebenszeit. Für den Hersteller des Controllers 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 Controller richtig zu interpretieren oder zu kontrollieren.

Außerdem sind ICE in der Regel recht teure Produkte, mehrere tausend € sind die Regel (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.

In-System-Programmer / In-System-Debugger

Bild:Isp atmel.jpg
Ein ISP für Atmel-Microcontroller

Einen Ausweg aus dieser wirtschaftlichen und technischen Zwangslage liefern die In-System-Programmer (ISP) bzw. In-System-Debugger. Zwar bieten diese nicht die Tiefe der Kontrolle über den Zielcontroller wie ein ICE, so lassen sich beispielsweise mangels Tracespeicher komplexe zeitliche Fehler nicht ohne weiteres aufklären. Jedoch sind sie um Faktoren billiger (die Preise liegen zum Teil im zweistelligen Bereich) und kommen ohne Bond-Out Chip aus. In der Regel muss aber, zumindest beim Entwicklungsmuster, ein zusätzlicher Steckplatz für ihre zumeist serielle Schnittstelle auf der Leiterplatte integriert werden.

Die Hardware für den Zugriff auf die internen Register, etwa um Haltepunkte zu setzen, ist dabei nicht mehr im Pod bzw. Emulator untergebracht, sondern auf jedem Microcontroller-Chip bereits enthalten. Der ISP stellt also lediglich die Schnittstelle zu den chipinternen Debugmöglichkeiten her. Neben propietären Schnittstellen (z.B. dem BDM-Interface von Freescale) gehen mehr und mehr Hersteller von Mikrocontrollern dazu über, die genormte JTAG-Schnittstelle zu nutzen.

Weblinks

Einige Chip-Hersteller bieten zwar eigene ICE oder ISP an, es gibt aber auch unabhängige Anbieter, bei denen meist die selbe Programm-Oberfläche für unterschiedlichste Prozessoren verwendet wird - was die Einarbeitungszeit bei Wechsel des Prozessors verringert.

  • iSystem stellt ICEs her
  • Hitex stellt ICEs und Debugger für unterschiedlichste Prozessoren her
  • Lauterbach bietet im wesentlichen Debugger an
Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort In-Circuit-Emulator, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge