In-System-Programmierung - In-system programming

6- und 10-polige AVR-ISP-Header

In-System-Programmierung (ISP) oder auch In-Circuit-Serial-Programming (ICSP) genannt, ist die Fähigkeit einiger programmierbarer Logikgeräte , Mikrocontroller und anderer eingebetteter Geräte , während sie in einem vollständigen System installiert sind, programmiert zu werden, anstatt den Chip zu benötigen vor dem Einbau in das System programmiert werden. Es ermöglicht auch die Bereitstellung von Firmware-Updates für den On-Chip-Speicher von Mikrocontrollern und verwandten Prozessoren, ohne dass spezielle Programmierschaltkreise auf der Leiterplatte erforderlich sind, und vereinfacht die Designarbeit.

Es gibt keinen Standard für systeminterne Programmierprotokolle zum Programmieren von Mikrocontroller- Geräten. Fast alle Hersteller von Mikrocontrollern unterstützen dieses Feature, haben aber alle eigene Protokolle implementiert, die sich oft sogar bei verschiedenen Geräten desselben Herstellers unterscheiden. Im Allgemeinen versuchen moderne Protokolle, die Anzahl der verwendeten Pins gering zu halten, typischerweise auf 2 Pins. Einige ISP-Interfaces schaffen das Gleiche mit nur einem einzigen Pin, andere verwenden bis zu 4 für die Implementierung einer JTAG- Schnittstelle.

Der Hauptvorteil der systeminternen Programmierung besteht darin, dass Hersteller elektronischer Geräte die Programmierung und das Testen in eine einzige Produktionsphase integrieren und Geld sparen können, anstatt eine separate Programmierphase vor dem Zusammenbau des Systems zu erfordern. Dies kann es Herstellern ermöglichen, die Chips in der Produktionslinie ihres eigenen Systems zu programmieren, anstatt vorprogrammierte Chips von einem Hersteller oder Händler zu kaufen, was es möglich macht, Code- oder Designänderungen mitten in einem Produktionslauf vorzunehmen. Ein weiterer Vorteil ist, dass die Produktion immer mit der neuesten Firmware arbeiten kann und neue Features sowie Bugfixes implementiert und in Produktion genommen werden können, ohne dass es zu Verzögerungen beim Einsatz vorprogrammierter Mikrocontroller kommt.

Mikrocontroller werden normalerweise direkt auf eine Leiterplatte gelötet und haben normalerweise weder die Schaltung noch den Platz für ein großes externes Programmierkabel zu einem anderen Computer.

Typischerweise verfügen Chips, die ISP unterstützen, über interne Schaltkreise, um jede erforderliche Programmierspannung aus der normalen Versorgungsspannung des Systems zu erzeugen und mit dem Programmierer über ein serielles Protokoll zu kommunizieren. Die meisten programmierbaren Logikbausteine ​​verwenden eine Variante des JTAG- Protokolls für ISP, um die Integration in automatisierte Testverfahren zu erleichtern. Andere Geräte verwenden normalerweise proprietäre Protokolle oder Protokolle, die durch ältere Standards definiert sind. In Systemen, die komplex genug sind, um eine mäßig große Glue-Logik zu erfordern , können Designer ein JTAG-gesteuertes Programmiersubsystem für Nicht-JTAG-Geräte wie Flash-Speicher und Mikrocontroller implementieren , wodurch die gesamte Programmier- und Testprozedur unter der Kontrolle eines einzigen Protokolls durchgeführt werden kann.

Geschichte

Ab Anfang der 90er Jahre erlebten wir eine wichtige technologische Entwicklung in der Architektur der Mikrocontroller. Zunächst wurden sie in zwei möglichen Lösungen realisiert: mit OTP (One Time Programmable) oder mit EPROM-Speichern . Bei diesen Technologien erfordert der Speicherlöschprozess, dass der Chip durch ein spezielles Fenster über dem Gehäuse ultraviolettem Licht ausgesetzt wird. 1993 stellte Microchip Technology den ersten Mikrocontroller mit EEPROM-Speicher vor : den PIC16C84. EEPROM-Speicher können elektrisch gelöscht werden. Diese Funktion ermöglichte es, die Realisierungskosten zu senken, indem das Löschfenster über dem Paket entfernt und die In-System-Programming-Technologie eingeleitet wurde. Mit ISP kann der Flash-Prozess direkt auf der Platine am Ende des Produktionsprozesses durchgeführt werden. Diese Evolution gab die Möglichkeit, die Programmier- und Funktionstestphase und in Produktionsumgebungen zu vereinheitlichen und mit der Vorproduktion der Boards zu beginnen, auch wenn die Firmware-Entwicklung noch nicht abgeschlossen ist. Auf diese Weise war es möglich, Fehler zu korrigieren oder zu einem späteren Zeitpunkt Änderungen vorzunehmen. Im selben Jahr entwickelte Atmel den ersten Mikrocontroller mit Flash-Speicher, einfacher und schneller zu programmieren und mit viel längerer Lebensdauer im Vergleich zu EEPROM-Speichern.

Mikrocontroller, die ISP unterstützen, sind normalerweise mit Pins ausgestattet, die vom seriellen Kommunikationsperipheriegerät verwendet werden, um eine Schnittstelle mit dem Programmierer zu bilden, einen Flash/EEPROM-Speicher und die Schaltung, die verwendet wird, um die zum Programmieren des Mikrocontrollers erforderliche Spannung zu liefern. Das Kommunikationsperipheriegerät ist wiederum mit einem Programmierperipheriegerät verbunden, das Befehle zum Betrieb des Flash- oder EEPROM-Speichers bereitstellt.

Beim Entwurf von elektronischen Karten für die ISP-Programmierung ist es notwendig, einige Richtlinien zu berücksichtigen, um eine möglichst zuverlässige Programmierphase zu haben. Einige Mikrocontroller mit einer geringen Anzahl von Pins teilen sich die Programmierleitungen mit den I/O-Leitungen. Dies könnte ein Problem sein, wenn die notwendigen Vorkehrungen bei der Gestaltung der Platine nicht berücksichtigt werden; das Gerät kann während der Programmierung Schäden an den I/O-Komponenten erleiden. Darüber hinaus ist es wichtig, die ISP-Leitungen an hochohmige Schaltungen anzuschließen , um eine Beschädigung der Komponenten durch den Programmierer zu vermeiden und weil der Mikrocontroller oft nicht genug Strom liefern kann, um die Leitung zu steuern. Viele Mikrocontroller benötigen eine eigene RESET-Leitung, um in den Programmiermodus zu gelangen. Es ist notwendig, auf den zugeführten Strom für die Leitungsansteuerung zu achten und zu prüfen, ob an der RESET-Leitung angeschlossene Watchdogs vorhanden sind, die einen ungewollten Reset erzeugen und so zu einem Programmierfehler führen können. Darüber hinaus benötigen einige Mikrocontroller eine höhere Spannung, um in den Programmiermodus zu gelangen. Daher muss überprüft werden, ob dieser Wert nicht gedämpft wird und dass diese Spannung nicht an andere Komponenten auf der Platine weitergegeben wird.

Industrielle Anwendung

Der Prozess der systeminternen Programmierung findet während der letzten Produktionsphase des Produkts statt und kann je nach Produktionsvolumen auf zwei verschiedene Arten durchgeführt werden.

Bei der ersten Methode wird ein Konnektor manuell mit dem Programmiergerät verbunden. Diese Lösung erwartet die menschliche Beteiligung am Programmiervorgang, die den Programmierer mit dem Kabel mit der Elektronikplatine verbinden muss. Daher ist diese Lösung für geringe Produktionsmengen gedacht.

Die zweite Methode verwendet Testpunkte auf der Platine. Dies sind spezielle Bereiche auf der Leiterplatte oder PCB , die mit einigen der elektronischen Komponenten auf der Leiterplatte elektrisch verbunden sind. Testpunkte werden verwendet, um Funktionstests für auf der Platine montierte Komponenten durchzuführen, und da sie direkt mit einigen Mikrocontroller-Pins verbunden sind, sind sie für ISPs sehr effektiv. Für mittlere und hohe Produktionsmengen ist die Verwendung von Testpunkten die beste Lösung, da sie die Integration der Programmierphase in eine Montagelinie ermöglicht.

In Produktionslinien werden Bretter auf ein Nagelbett gelegt, das als Fixture bezeichnet wird . Letztere werden je nach Produktionsvolumen in halbautomatische oder automatische Prüfsysteme namens ATE – Automatic Test Equipment integriert . Fixtures werden speziell für jede Platine – oder höchstens für wenige Modelle, die der Platine ähnlich sind, für die sie entwickelt wurden – entwickelt, daher sind diese in der Systemumgebung, in der sie integriert sind, austauschbar. Sobald die Platine und die Halterung in Position gebracht sind, verfügt das Testsystem über einen Mechanismus, um die Nadeln der Halterung mit den Testpunkten auf der zu prüfenden Platine in Kontakt zu bringen. Das System ist mit einem ISP-Programmierer verbunden oder darin direkt integriert. Dieser muss das oder die auf der Platine montierten Geräte programmieren: zum Beispiel einen Mikrocontroller und/oder einen seriellen Speicher.

Mikrochip ICSP

Bei den meisten Mikrocontrollern von Microchip wird die ICSP-Programmierung mit zwei Pins durchgeführt, Takt (PGC) und Daten (PGD), während am Vpp/MCLR-Pin eine Hochspannung (12 V) anliegt. Die Niederspannungsprogrammierung (5 V oder 3,3 V) verzichtet auf die Hochspannung, behält sich aber die ausschließliche Verwendung eines I/O-Pins vor. Bei neueren Mikrocontrollern, insbesondere den PIC18F6XJXX/8XJXX-Mikrocontrollerfamilien, ist der Wechsel in die ICSP-Modi jedoch etwas anders. Um in den ICSP-Programm-/Verify-Modus zu gelangen, sind die folgenden drei Schritte erforderlich:

  1. Am Pin MCLR (Master Clear) wird kurz Spannung angelegt.
  2. Auf der PID wird eine 32-Bit-Schlüsselsequenz präsentiert.
  3. Spannung wird wieder an MCLR angelegt.
Microchip PICkit ICSP-Programmierer

Eine separate Hardware, ein sogenannter Programmierer, wird benötigt, um auf der einen Seite an einen I/O-Port eines PCs und auf der anderen Seite an den PIC anzuschließen. Eine Liste der Funktionen für jeden wichtigen Programmiertyp sind:

  1. Paralleler Anschluss – großes, sperriges Kabel, die meisten Computer haben nur einen Anschluss und es kann unpraktisch sein, das Programmierkabel mit einem angeschlossenen Drucker auszutauschen. Die meisten Laptops neuer als 2010 unterstützen diesen Port nicht. Die Parallelport-Programmierung ist sehr schnell.
  2. Serieller Port (COM-Port) - Einst die beliebteste Methode. An seriellen Ports fehlt normalerweise eine ausreichende Versorgungsspannung für die Schaltungsprogrammierung. Die meisten Computer und Laptops neuer als 2010 unterstützen diesen Port nicht.
  3. Sockel (in oder außerhalb des Schaltkreises) - Die CPU muss entweder von der Platine entfernt oder eine Klemme am Chip angebracht werden, was den Zugang zu einem Problem macht.
  4. USB-Kabel - Klein und leicht, unterstützt Spannungsquellen und die meisten Computer verfügen über zusätzliche Anschlüsse. Der Abstand zwischen dem zu programmierenden Schaltkreis und dem Computer ist durch die Länge des USB-Kabels begrenzt – es muss in der Regel weniger als 180 cm betragen. Dies kann Programmiergeräte tief in Maschinen oder Schränken zum Problem machen.

ICSP-Programmierer haben viele Vorteile, wobei Größe, Computer-Port-Verfügbarkeit und Stromquelle Hauptmerkmale sind. Aufgrund von Variationen im Verbindungsschema und der einen Mikrocontroller umgebenden Zielschaltung gibt es keinen Programmierer, der mit allen möglichen Zielschaltungen oder Verbindungen arbeitet. Microchip bietet einen detaillierten ICSP-Programmierleitfaden Viele Websites bieten Programmier- und Schaltungsbeispiele.

PICs werden unter Verwendung von fünf Signalen programmiert (ein sechster Pin 'Aux' wird bereitgestellt, aber nicht verwendet). Die Daten werden über ein synchron-serielles Zweidraht-Schema übertragen, drei weitere Drähte sorgen für Programmierung und Chip-Power. Das Taktsignal wird immer vom Programmierer gesteuert.

Typische Programmierkommunikation

Signale und Pinbelegung

Bild icsp.jpg
Typische Chipverbindungen
  • V pp - Spannung im Programmiermodus. Dieser muss mit dem MCLR-Pin oder dem V pp- Pin des optionalen ICSP-Ports verbunden werden, der bei einigen PICs mit großer Pinanzahl verfügbar ist. Um den PIC in den Programmiermodus zu versetzen, muss diese Zeile in einem bestimmten Bereich liegen, der von PIC zu PIC variiert. Bei 5-  V-PICs liegt dies immer etwas über Vdd und kann bis zu 13,5 V betragen. Die 3,3-V-PICs wie die 18FJ-, 24H- und 33F-Serie verwenden eine spezielle Signatur, um in den Programmiermodus zu gelangen, und V pp ist a digitales Signal, das entweder auf Masse oder auf Vdd liegt. Es gibt keine einzige V pp -Spannung, die innerhalb des gültigen V pp -Bereichs aller PICs liegt. Tatsächlich kann der minimal erforderliche V pp -Pegel für einige PICs andere PICs beschädigen.
  • V dd - Dies ist die positive Eingangsleistung des PIC. Einige Programmierer verlangen, dass dies von der Schaltung bereitgestellt wird (die Schaltung muss zumindest teilweise eingeschaltet sein), einige Programmierer erwarten, dass sie diese Leitung selbst ansteuern und verlangen, dass die Schaltung ausgeschaltet ist, während andere auf beide Arten konfiguriert werden können (wie der Microchip ICD2) . Die Programmierer von Embed Inc erwarten, dass sie die V dd- Leitung selbst ansteuern und verlangen, dass die Zielschaltung während der Programmierung ausgeschaltet ist.
  • V ss - Negativer Stromeingang zum PIC und die Null-Volt-Referenz für die verbleibenden Signale. Spannungen der anderen Signale beziehen sich implizit auf V ss .
  • ICSPCLK - Taktleitung der seriellen Datenschnittstelle. Diese Leitung schwingt von GND nach V dd und wird immer vom Programmierer angesteuert. Die Daten werden an der fallenden Flanke übertragen.
  • ICSPDAT - Serielle Datenleitung. Die serielle Schnittstelle ist bidirektional, sodass diese Leitung je nach aktueller Operation entweder vom Programmierer oder vom PIC angesteuert werden kann. In jedem Fall schwingt diese Leitung von GND zu Vdd. Bei der fallenden Flanke von PGC wird ein Bit übertragen.
  • AUX/PGM - Neuere PIC-Controller verwenden diesen Pin, um die Niederspannungsprogrammierung (LVP) zu ermöglichen. Wenn PGM hoch gehalten wird, wechselt der Mikrocontroller in den LVP-Modus. PIC-Mikrocontroller werden mit aktiviertem LVP ausgeliefert. Wenn Sie also einen brandneuen Chip verwenden, können Sie ihn im LVP-Modus verwenden. Die einzige Möglichkeit, den Modus zu ändern, ist die Verwendung eines Hochspannungsprogrammierers. Wenn Sie den Mikrocontroller ohne Verbindung zu diesem Pin programmieren, bleibt der Modus unverändert.

RJ11-Pinbelegung

Ein Industriestandard für die Verwendung von RJ11-Buchsen mit einem ICSP-Programmierer wird von Microchip unterstützt. Die Abbildung stellt Informationen dar, die in ihren Datenblättern enthalten sind. Es gibt jedoch Raum für Verwirrung. Die PIC-Datenblätter zeigen eine invertierte Buchse und bieten keine bildliche Darstellung der Pinbelegung, so dass unklar ist, auf welcher Seite der Buchse sich Pin 1 befindet. Die hier bereitgestellte Abbildung ist ungetestet , verwendet jedoch die Pinbelegung nach Telefonindustriestandard (der RJ11-Stecker/-Buchse wurde ursprünglich für kabelgebundene Tischtelefone entwickelt).

RJ11 zu ICSP PIC-Programmierer

Verweise

Siehe auch