Multifunktionale In-Circuit-Schnittstellen: Programmieren, Emulieren, Testen, Debuggen – Alles in Einem! Zwei Pins, die es in sich haben!

Die Flash-Speicher-Technik hat sich in den letzten Jahren als Embedded-Programmspeicher bei Mikrocontrollern durchgesetzt. Der Vorteil besteht vor allem in der Reprogrammierbarkeit, ohne dass der Controller dabei aus der Schaltung entfernt werden müsste. Diese In-Circuit-Programmierbarkeit ermöglicht es dem Anwender, den Flash-Speicher sowohl während der Produktion als auch später im Feld umzuprogrammieren. Bei manchen Controllern bieten diese Programmier-Schnittstellen noch einige weitergehende interessante Funktionen: Welche das sind, lesen Sie im folgenden Artikel.

Multifunktionale In-Circuit-Schnittstellen: Programmieren, Emulieren, Testen, Debuggen – Alles in Einem!

Die Flash-Speicher-Technik hat sich in den letzten Jahren als Embedded-Programmspeicher bei Mikrocontrollern durchgesetzt. Der Vorteil besteht vor allem in der Reprogrammierbarkeit, ohne dass der Controller dabei aus der Schaltung entfernt werden müsste. Diese In-Circuit-Programmierbarkeit ermöglicht es dem Anwender, den Flash-Speicher sowohl während der Produktion als auch später im Feld umzuprogrammieren. Bei manchen Controllern bieten diese Programmier-Schnittstellen noch einige weitergehende interessante Funktionen: Welche das sind, lesen Sie im folgenden Artikel.

Moderne Controller-Architekturen begnügen sich bei der In-Circuit-Communication (ICC) in der Regel mit sehr wenigen I/O-Pins. Der 8-bit-Mikrocontroller ST72 von STMicroelectronics verwendet neben dem Programmierspannungs-Anschluss gerade einmal zwei Pins. In der Applikation lassen sich diese beiden Pins mit einer Zweitfunktion belegen, sodass keine Ressourcen vergeudet werden.

In-Circuit-Communication-Schnittstelle

Über die sog. Programmier-Schnittstelle können bei der ST72-Familie verschiedene Funktionen ausgeführt werden. Die gemeinsame Basis für die Kommunikation bildet die ICC-Schnittstelle. Dieses Interface stellt dabei sowohl die HW- als auch die SW-Schicht für die In-Circuit-Communication dar. Der Datenaustausch erfolgt ähnlich dem I2C-Bus durch eine Takt- und eine bidirektionale Datenleitung. Der langsamere der beiden Kommunikationsteilnehmer hat dabei die Möglichkeit, die Geschwindigkeit der Datenübertragung an seine eigenen Bedürfnisse anzupassen.

Controller während des Reset-Zustandes mit einer speziellen Initialisierungssequenz in den ICC-Modus versetzt werden. In dieser Betriebsart steht dem Entwickler dann eine Reihe von „Embedded Commands“ im Systemspeicher des Mikrocontrollers zur Verfügung, durch die Daten oder Code in den Speicher geschrieben, gelesen bzw. ausgeführt werden können. Aufbauend auf dieser Technik sind verschiedene Betriebsarten möglich: In-Circuit-Programmierung, In-Application-Programmierung, In-Circuit-Testing und In-Circuit-Debugging. Bild 1 zeigt die In-Circuit-Entwicklungsumgebung für die ST72-Familie.

In-Circuit-Programmierung (ICP)
In der Betriebsart In-Circuit-Programmierung werden über die bereits beschriebene ICC-Schnittstelle verschiedene Treiber ins RAM geladen und von dort aus abgearbeitet. Der Treiber hat die Aufgabe, den Datenstrom vom Programmiergerät zu empfangen und die notwendigen Programmierschritte durchzuführen. Zur Flash-Speicher-Programmierung stehen dabei im Systemspeicher spezielle Befehle zur Verfügung, die je nach Bedarf aufgerufen werden können. In diesem Programmiermodus lässt sich der gesamte Flash-Speicher mit allen Sektoren und allen Controller-Optionen programmieren. Der Zugriff über diese Programmier-Schnittstelle kann auch später jederzeit wiederholt werden, solange im Baustein die „Readout-Protection“ nicht gesetzt wird. Möchte der Anwender allerdings seine Applikation vor unbefugtem Zugriff schützen, kann durch einen zweistufigen Lese- und Schreibschutz sein geistiges Eigentum zuverlässig und dauerhaft geschützt werden.

In-Application-Programmierung (IAP)
Im Gegensatz zur ICP ist bei der In-Application-Programmierung die Art der Kommunikations-Schnittstelle frei wählbar. Je nachdem, wie die Applikation aufgebaut ist, kann dies z.B. der CAN-Bus, eine serielle Schnittstelle (SCI) oder ein anderes Interface sein. Die dazu erforderlichen Treiber kann sich der Kunde selbst schreiben und hat dadurch alle denkbaren Freiheitsgrade. Das Besondere an dieser Betriebsart ist, dass der Controller während der Umprogrammierung im User-Mode weiterläuft. Dies bedeutet, dass ein kleiner Teil des Programmspeichers, der die notwendigen Routinen für die Kommunikations-Schnittstelle, die Interrupt-Routinen und einen Teil des Hauptprogramms enthält, von der Umprogrammierung unberührt bleibt. Gleiches gilt auch für die Controller-Optionen, die ansonsten durch falsche Einstellungen den weiteren Betrieb stören könnten. Bei der ST72-Familie sind aus Sicherheitsgründen der Sektor 0 und das „Option-Byte“ im User-Mode nicht löschbar, um derartige Risiken auszuschalten. Der Anwender kann dadurch sicherstellen, dass selbst bei einem gescheiterten Update-Vorgang der Controller immer noch lauffähig ist und ein erneuter Update-Versuch jederzeit gestartet werden kann. Bevor der IAP-Modus verwendet werden kann, müssen allerdings bereits per ICP der Sektor 0 und die Controller-Optionen programmiert sein.

Eine weitere Spielart der IAP ist die Möglichkeit, Datenbytes während des normalen Betriebs in einem bestimmten Flash-Bereich abzuspeichern. Es bieten sich dem Entwickler dadurch quasi die Vorteile eines internen Daten-EEPROM, allerdings ohne die Mehrkosten, die normalerweise für dieses zusätzliche Bauteil anfallen würden.

In-Circuit-Testing (ICT)
Während des Fertigungsprozesses der Applikation können mittels der Funktion In-Circuit-Testing beliebige Testroutinen temporär in das Controller-RAM geladen und abgearbeitet werden. So lassen sich beispielsweise bestimmte Testsignale an den I/Os erzeugen oder spezielle Betriebszustände auslösen. Der große Vorteil besteht darin, dass diese Testprogramme keinen Platz im Programmspeicher des Controllers belegen und die einzelnen Testschritte jederzeit verändert werden können, ohne dass das eigentliche Benutzerprogramm betroffen ist. Diese Technik funktioniert daher auch bei den ROM-Varianten des Controllers.

In-Circuit-Debugging (ICD)
Im In-Circuit-Debugging-Modus wird die ICC-Schnittstelle dazu verwendet, den Ablauf des Anwenderprogramms zu debuggen. Der Flash-Speicher ist in diesem Zustand bereits mit dem User-Code programmiert. Bei speziellen Controller-Familien wird an diesen Code lediglich noch ein kleines Monitorprogramm angehängt, das zur Kommunikation mit dem externen Debugger benötigt wird. Der Arbeitsspeicher wird von dieser Betriebsart nicht beeinflusst. In einer speziellen Hardware, dem sog. Debugging-Modul im Controller, lassen sich maximal zwei Programm- oder Daten-Breakpoints setzen. Die Konfiguration des Debugging-Moduls erfolgt durch entsprechende Kommandos über das ICC-Interface.

Das User-Programm läuft in dieser Betriebsart in Echtzeit im Original-Controller ab, bis die Break-Bedingung erfüllt ist oder vom angeschlossenen Debugger ein Break-Kommando kommt. Der Controller stoppt daraufhin die Programm-Abarbeitung und führt das Monitorprogramm aus, um mit dem Debugger zu kommunizieren. Über den Debugger lassen sich dann sämtliche Speicherbereiche des Controllers auslesen.

Durch diese Technik kann praktisch jede einzelne Applikation als kleiner Emulator verwendet werden. Dies ist besonders hilfreich, wenn im Laufe der Produktion einzelne Feldausfälle analysiert werden müssen. Durch die ICD-Technik bleibt die Applikation in Ihrem Aufbau absolut unverändert und lässt sich dennoch detailliert untersuchen.

Aufgrund des einfachen Aufbaus der ICC-Schnittstelle lässt sich dieses Protokoll einfach in vorhandene Produktionssysteme integrieren. Der Anwender schafft sich so die Möglichkeit, auf sehr effiziente Art die Programmierung und das Testen in den normalen Fertigungsablauf einzubauen.

STMicroelectronics bietet dem Anwender zur Umsetzung der entsprechenden Algorithmen die notwendigen Hilfsmittel in Form von „Reference Manuals“ an. Darin sind das ICC-Protokoll und die Flash-Programmierung in Form von Spezifikation und Beispiel-Quellcode dokumentiert. Alle Unterlagen stehen auf der Support Homepage [1] zum Download bereit. Zusätzlich findet der Entwickler auf dieser Web-Seite auch Diskussionsforen und weiterführende Links rund um Mikrocontroller von ST. Für die Entwicklungsarbeit bietet das Unternehmen auch fertige Lösungen an:

Unter der Bezeichung „ST7 Stick“ ist ein sehr kompaktes und preiswertes Programmier-Tool erhältlich, dass als Protokollumsetzer zwischen PC und ICC-Schnittstelle fungiert. Mit dieser Hardware und dem zugehörigen PC-Programm STVP7 können sämtliche X-Flash- und HD-Flash-Controller programmiert werden (Bild 2).

Für Debugging-Aufgaben steht dem Anwender neben einem Echtzeit-Emulator auch eine ICD-Hardware zur Verfügung. Dieses kleine Erweiterungsboard (Bild 3) wird einfach an die „Connection-Box“ des Emulators angeschlossen. Der Entwickler hat so die Möglichkeit, von der Entwicklung bis zum Debugging der fertigen Applikation mit dem gleichen System zu arbeiten.

„inDART“ von SofTec Microsystems
Neben STMicroelectronics haben auch verschiedene Drittanbieter (Third Parties) Entwicklungswerkzeuge für die ICC-Schnittstelle im Programm. Der italienische Hersteller SoftTec bietet mit seiner „inDART“-Serie eine interessante Lösung: Er hat mit seinem „ST7 inDART“ ein Tool entwickelt, das alle ICC-Funktionen der ST7-Flash-Controller vollständig unterstützt.

Die Hardware besteht aus einer kleinen Platine, die über den USB-Port an den PC angeschlossen wird (Bild 4). In dieser Schaltung finden Pegel- und Logikumsetzung auf das ICC-Interface statt. Für die Programmierung verwendet SofTec eine eigene Programmier-Software namens „DataBlaze“. Die neueste Generation der inDART-Tools unterstützt nicht nur die ST7-Familie, sondern auch die ST5-Derivate von STMicroelectronics.

Für den Debugging-Modus wurde der ST-Visual-Debugger STVD7 an die Hardware von SofTec angepasst. Seine grafische Benutzeroberfläche unterstützt damit sowohl die Emulatoren, Entwicklungs-Kits und Simulatoren von ST als auch die Tools des Drittanbieters. Der Entwickler hat so die Möglichkeit, stets in der gleichen Umgebung zu arbeiten, selbst wenn er unterschiedliche Tools verwendet. SofTec bietet den „ST7 inDART“ auch in Kombination mit einem ST7-Entwicklungs-Board an. Dieses Board verfügt neben dem Controllersockel über einige LEDs, Taster, Potentiometer und einen Anschluss für die ICC-Schnittstelle. Für eigene Aufbauten ist eine „Wrapping Area“ vorhanden. Dieses System ist damit vor allem für Neueinsteiger eine günstige und leistungsfähige Entwicklungsplattform.