In-System-Programmierung JTAG für flexible Standards

Der Inline-Programmierer Rapido von Göpel.

Bisher gab es kein einheitliches Verfahren, um logische Bausteine auf elektronischen Baugruppen im Rahmen von Test-Aktivitäten in einem Schritt zu programmieren. Eine Reihe neuer Standards und Techniken speziell über den JTAG-Bus hilft nun beim Schließen dieser Lücke.

Derzeit steigt die Nachfrage nach schnellen Programmiersystemen in der Elektronikproduktion rasant an. Das Ziel ist, möglichst spät im Produktionsprozess zu programmieren − dann aber meist große Datenmengen in kurzer Zeit. Die Programmierung von Datenmengen zwischen 50 und 150 MB in weniger als einer Minute ist hierbei keine Seltenheit mehr.

Programmieraufgaben und derzeit bestehende Lösungen

Die On-Board-Programmierung lässt sich in drei Fälle fassen:

  • Programmierung von On-Board-Flash-Bausteinen wie NOR, NAND, EEPROM
  • Programmierung von komplexeren Logik-Gattern wie FPGAs und CPLDs
  • Programmierung von On-Chip-Flash-Bereichen in Mikrocontrollern

On-Board-Flash-Bausteine können mit dem seit 1990 standardisierten Test- und Programmierverfahren JTAG/Boundary Scan gemäß Standard IEEE 1149.1 problemlos gelöscht, programmiert und verifiziert werden. Zwar verfügen die Flash-Bausteine nicht über einen eigenen JTAG-Anschluss, sind aber in der Regel über einen JTAG-fähigen Logikbaustein (Prozessor, FPGA oder CPLD) ansteuerbar. Der Vorteil dieses Verfahrens liegt darin, dass es mit einer Boundary Scan Hardware problemlos herstellerübergreifend eingesetzt werden kann. Allerdings handelt es sich nicht um ein Programmierzeit-optimiertes Verfahren und ist somit für große Datenmengen nur bedingt geeignet. Trotzdem ist dieses Konzept interessant, da es die Kombination von Test und Programmierung sowie die Möglichkeit der parallelen Ausführung für bis zu 32 identische Prüflinge als einzige ­nadelfreie Lösung unterstützt. Weltweit gibt es deshalb bereits mehrere zehntausend Installationen.

Des Weiteren können On-Board-Flash-Bausteine mit einem Programmer auch direkt über den Prozessor oder FPGA programmiert werden. Dieses Verfahren ist sehr schnell, erfordert aber meist von jedem Hersteller eine eigene Hard- und Software-Palette und dementsprechendes Know-how, was es wiederum recht unflexibel macht.

Um programmierbare Logik-Gatter zu füllen, nutzt man sinnvollerweise den JTAG-Bus. Dieser hat sich aufgrund seiner Standardisierung und seiner Flexibilität sehr schnell durchgesetzt und ist heute an fast jedem komplexeren Baustein zu finden. Im Zuge dieser Entwicklung wurde im Jahr 2001 der IEEE-1532-Standard, der eine Erweiterung der JTAG-Funktionen nach IEEE 1149.1 darstellt, verabschiedet.

Dieser Standard beschreibt, wie FPGAs, CPLDs und ihre angeschlossenen PROMs herstellerübergreifend programmiert, ausgelesen, gelöscht und verifiziert werden können − und dies gleichzeitig für mehrere Bausteine in einer JTAG-Kette.

Im Falle der Programmierung von On-Chip-Flash-Bereichen z.B. auf Mikrocontroller-Chips besteht die einzige Realisierungsmöglichkeit darin, den Debugger des Herstellers oder ein geeignetes Programmiersystem zu verwenden. Diese Varianten werden aber zumeist entweder von der Stabilität der Programmierung, der parallelen Nutzung für mehrere Boards oder der Unterstützung der verschiedenen Hersteller stark eingeschränkt. Somit stehen bis zum heutigen Zeitpunkt zwar einige Alternativen zur Verfügung, die den JTAG-Bus (Bild 1) als Medium nutzen, allerdings erfordern diese fast ausnahmslos separate Hard- und Software.