In-System-Programmierung

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 12. Januar 2008 um 11:01 Uhr durch 84.191.123.176 (Diskussion) (AVR-ISP). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die In-System Programmierung (ISP) ermöglicht das Programmieren einer Logischen Schaltung direkt im Einsatzsystem. Dazu wird meist eine einfache serielle Verbindung genutzt.

Der Vorteil der In-System Programmierung ist, dass der zu programmierende Schaltkreis nicht mehr aus dem Zielsystem entfernt werden muss. Er wird weniger mechanisch belastet und der gesamte Programmiervorgang ist schneller.

Zur Programmierung wird ein In-System Programmer (ISP), gelegentlich auch In-Circuit Programmer, benutzt, der eine üblicherweise kleine und preiswerte Zusatzhardware darstellt, mit der sich dafür ausgelegte programmierbare Elektronikbausteine in system, also im eingebauten Zustand, programmieren lassen. Programmieren in diesem Zusammenhang bedeutet, dass ein bereits zuvor erstelltes Programm und/oder Daten in den internen, nichtflüchtigen Speicher (z.B. ein internes EEPROM oder Flash-Speicher) eines Elektronikbausteins geschrieben werden.

Typischerweise handelt es sich bei den zu programmierenden Bausteinen um Mikrocontroller oder System on a Chip (SoC) Bausteine oder um „einfache“ Speicher, deren Daten programmiert werden. Diese müssen für diese Prozedur ausgelegt sein. Sie müssen sich z.B. von Außen, durch den ISP, in einen Programmiermodus versetzen lassen. Ebenso muss die sie umgebende Beschaltung das Programmieren zulassen und die verwendeten Spannungen aushalten.

Ein In-System Programmer besitzt üblicherweise eine Steckverbindung, welche auf den zu programmierenden, eingebauten Baustein aufgesteckt wird, oder an einen extra für diesen Zweck auf der Leiterplatte vorgesehenen Anschluss angesteckt wird. Der In-System Programmer bezieht seine Daten üblicherweise von einem PC, mit dem er ebenfalls verbunden ist. Im Normalfall übernimmt eine Software auf dem PC die gesamte Steuerung des Programmierablaufs, so dass der ISP recht einfach und preiswert gehalten werden kann. Er setzt in diesem Fall die Spannungspegel vom PC in für den Baustein geeignete Werte um.

Die Steuersoftware auf dem PC ist häufig in eine entsprechende Programmierumgebung zur Softwareerstellung für den spezifischen Baustein integriert. Häufig, jedoch nicht immer, ist es möglich, dass die ISP-Hardware und die PC-Software auch das Auslesen des bereits im Baustein vorhandenen Programms und von Daten erlaubt, z.B. zur Kontrolle eines Programmiervorgangs. Die ausgelesene Software ist jedoch nur als Maschinencode lesbar, der anschließend durch einen Disassembler für den Menschen als Assembler wieder lesbar gemacht werden muss. In Hochsprache geschriebene Programme sind so nicht aus dem Speicher lesbar.

Weiterhin lassen sich mit einem ISP, soweit vorhanden, auch spezielle Funktionen des Elektronikbausteins schalten. So zum Beispiel sogenannte Fuse-Bits, die festlegen, ob ein einmal geschriebenes Programm permanent, nicht mehr überschreibbar ist, oder das Programm von Außen ausgelesen werden darf.

In-System-Programmierbarkeit ist eine wichtige Eigenschaft von Systemen, besonders in der Entwicklungsphase und bei der Wartung. Sie spart das ständige Auswechseln, eventuell sogar verbunden mit Auslöten, des zu programmierenden Bausteins. Nicht alle Systeme, die in system programmierbar sind, benötigen dazu einen zusätzlichen In-System Programmer. Gerade bei Consumer-Hardware ist es üblich geworden, dass die Firmware dieser Geräte ohne Zusatzhardware 'geflasht', das heißt neu eingespielt, werden kann.

Möglich wurde die ISP durch die Integration von Flash-Speicher und Mikrocontroller.

Beispiele für ISP-fähige Schaltkreise:

AVR-ISP