Beschreibung der Schalteroptionen für USBurnCPP

USBurnCPP ist ein Kommandozeilenprogramm, das durch Kommandozeilenoptionen (mit Parametern) gesteuert wird. Die vom sprut-Tool verwendeten Schalter unterscheiden sich von den Schaltern des USBurnCPP zum Teil. Die Anzahl der Optionen habe ich verringert, da ich spezifische Optionen kombinieren konnte. Die Reihenfolge bei der Angabe der Schalter ist nicht wichtig und kann beliebig gewählt werden. Genauso ist es unwichtig, ob optionale Parameter hinter dem Schalter mit oder ohne einem Leerzeichen angegeben werden.

USBurnCPP versucht den PIC im Brenner8 über eine Chip-ID zu identifizieren. Das gelingt nicht immer. Viele PICs der 12-Bit Family haben keine Chip-ID und benötigen daher die Angabe des PIC-Typen über den Schalter -P. Des weiteren gibt es PICs, die die gleiche Chip-ID besitzen (PIC16F616 und PIC18F2550). Hier ist zur Unterscheidung die Core-Family (Schalter -F) oder der PIC-Typ (Schalter -P) anzugeben.

 

Allgemeine Optionen und Optionen, die dem Setup des Brenners 8 dienen

Hilfe-Informationen anzeigen (-h --help)

Zeigt alle Optionen mit einem kurzen erklärenden Text.

Zusätzliche Informationen anzeigen (-i --info)

Neben den üblichen Informationen kann man sich mit dieser Option weitere ausgeben lassen, die zur Fehlersuche hilfreich sein können. Eine optionale Zahl (2, 3, 5 oder 7) gibt weitere detaillierte Informationen aus.

Brenner 8 kalibrieren (-c --calibrate)

Diese Option startet die Kalibrierung des Vpp-Boostkonverters im Brenner8. Ein unkalibrierter Brenner8 ist in der Lage jeden PIC innerhalb kürzester Zeit zu zerstören! Der Brenner kann problemlos eine Programmierspannung von 25 Volt erzeugen und das überlebt kein PIC!

Man benötigt zur Kalibrierung ein Voltmeter. Die nötigen Anweisung gibt das USBurnCPP während der Kalibrierung aus. Da dabei u.U. recht hohe Spannungen erzeugt werden, darf sich während der Kalibrierung kein PIC im Testsockel oder am ICSP-Anschluss des Brenners befinden.

Der Brenner8 erzeugt die Programmierspannung Vpp mit Hilfe eines kleinen Schaltreglers. Per Software kann die Höhe der Spannung variiert werden. Damit ist garantiert, dass jeder PIC die für ihn optimale Programmierspannung bekommt. Das funktioniert aber nur optimal, wenn der Steuer-PIC des Brenners die Höhe der Programmierspannung auch genau messen kann. Die Programmierspannung wird im Brenner8 über einen Spannungsteiler gemessen, und mit einer Referenzspannung (von einer Z-Diode) verglichen. Bei der Kalibrierung werden die Z-Spannung und das Spannungsteilerverhältnis ermittelt.

Die Kalibrierdaten werden im Brenner8 dauerhaft im EEPROM gespeichert.

Gibt man zum Schalter -c einen optionalen Parameter an (Zahl zwischen 9 und 14), erfolgt keine Kalibrierung. Mit diesem optionalen Parameter kann die Höhe der Programmierspannung, die der Brenner erzeugt, überprüft werden. Die generierte Programmierspannung ist mit einem Multimeter zwischen den Messpunkten 1 und 3 zu prüfen.

Beispiel die Programmierspannung (13 Volt) zu überprüfen:  USBurnCPP  -c 13

Test der Hardware (-t --test)

Diese Option wird benutzt, um alle Signale des Brenners einzeln zu testen.

Ausgabe aller unterstützten PIC-Prozessoren (-l --list)

Diese Option listet alle PIC-Typen auf, die die USBurnCPP zusammen mit der eingesetzten Datenbank (Dateien: PicDatabase.json, ConfigDatabase.json, FieldDatabase.json) und der Firmware des Brenners unterstützt. Um Herauszufinden, ob ein gewünschter PIC vom Brenner8 unterstützt wird, kann man mit Hilfe des grep-Kommandos sehr schnell nach diesen in der Liste der unterstützten PICs suchen.

Beispiel:  USBurnCPP  -l  | grep PIC16F636

Unter Ubuntu wird dann nur eine (lange, eventuell umgebrochene) Zeile ausgegeben und der gesuchte PIC farblich (rot) hervorgehoben. Wird keine Zeile ausgegeben, dann hat man sich eventuell vertippt oder der PIC wird vom Brenner nicht unterstützt.

Neue Firmware laden (-f --firmware)

Das Laden wirklich neuer Firmware ist sicherlich nicht mehr nötig, da die Firmware (Version 17) nicht mehr weiterentwickelt wird. Diese Option ist aber sinnvoll, wenn man die Firmware in einem neuen PIC laden möchte.

Diese Option aktiviert den Bootloader des Brenners und lädt eine neue Firmware in den Steuer-PIC. Hat das fehlerfrei funktioniert, dann wird der Brenner wieder in den Normalmodus zurückgeschaltet. Die Firmware ist ein HEX-Datei und ist als Parameter zu dieser Option anzugeben.

Beispiel: USBurnCPP  -f b8_fw17.hex

 

 

Optionen für die Arbeit mit einem PIC (im Testsockel oder auch über ISCP)

Für die Arbeit mit einem PIC im Brenner8 ist in jedem Fall über den Schalter -S der Sockel anzugeben, damit der Brenner8 weiß, wie er den PIC (siehe auch unterschiedliche Pin-Belegung) ansprechen muss. Beispiele sind unten und in der Testtabelle dokumentiert.

BlankCheck eines PICs (-b --blankcheck)

Diese Option prüft, ob Programm-, Daten-, UserID- und Konfigurations-Speicher eines PICs leer sind. Diese Funktion ist im normalen Betrieb eigentlich überflüssig, kann aber wichtig sein, falls man gebrauchte PICs an Dritte weitergeben möchte.

Beispiel: USBurnCPP  -S 18 -b

Löschen eines PICs (-e --erase)

Der PIC wird gelöscht.

Laut sprut funktioniert diese Option bei einigen PICs nicht, solange Codeprotection aktiviert ist. In diesem Fall sollte --erase zusammen mit --remove verwendet werden.
Beim PIC12F508 werden mit dieser Option die gespeicherten UserIDs nicht gelöscht. Möchte man diese löschen, so sollte --remove verwendet werden.

Code-Protection eines PICs löschen (-p --remove)

Eine aktivierte Codeprotection des PICs wird deaktiviert, und dabei der Programmspeicher und der EEPROM-Datenspeicher gelöscht. Das Löschen der
Konfiguration und der User-ID ist nicht bei allen PIC-Typen gewährleistet. Ein vollständiges Löschen ist aber durch die Kombination von --remove und --erase garantiert.

INFO: Bei der Verwendung dieses Option wird beim PIC12F508 und bei anderen 12-Bit-Kern PICs auch der OSCCAL-Backup-Wert gelöscht und nicht wiederhergestellt. Siehe auch Bekannte Probleme des Ansteuerprogramm USBurnCPP.

Sockel für den PIC festlegen (-S --SOCKET)

Damit der Brenner den PIC im Testsockel korrekt ansteuern kann, muss er wissen, wie viele Pins er hat oder ob er am ICSP-Verbinder angeschlossen ist. Das erfährt er durch den Parameter der –SOCKET-Option. Mögliche Parameter für PICs im Testsockel sind 8, 14, 18, 20, 28 und 40. Das sind die Anzahl der Pins des PICs. Ist der PIC im ICSP-Verbinder angeschlossen, ist der Parameter ICSP zu wählen.

  • -S8   --SOCKET 8
  • -S14   --SOCKET 14
  • -S18   --SOCKET 18
  • -S20   --SOCKET 20
  • -S28   --SOCKET 28
  • -S40   --SOCKET 40
  • -SICSP   --SOCKET ICSP

Dabei ist zu beachten, dass nur PICs mit 14-Bit-Kernen (PIC16F...und einige PIC12F...) und 16-Bit-Kern (PIC18F...) im Testsockel gebrannt werden können. Alle anderen benötigen den ICSP-Anschluss. Wird ein PIC in den Sockel eingesetzt, so muss sein Pin 1 im Pin 1 des Sockels stecken. 

PIC-Family (Core) festlegen (-F --FAMILY)

Es gibt eine Reihe grundsätzlich unterschiedlicher PIC-Prozessorfamilien. Der Brenner benötigt die Information, zu welcher Famile der Target-PIC gehört. Diese Einstellung erfolgt mit dem Parameter der --FAMILY-Option. sprut hat weitere PICs unterstützt. Auch hat er die Kategorisierung von PICs nach der Beschriftung vorgenommen. Ich habe mich eher an die Core-Architektur orientiert. Ich unterscheide also nach der Befehlsbreite der PIC-Prozessoren (12-bit, 14-bit oder 16-bit). Prozessoren mit 24-bit breiten Befehlen unterstütze ich mit USBurnCPP nicht. Daher gibt es nur folgende Parameter: 12, 14, 16.

  • -F12   --FAMILY 12    PIC with 12-bit wide instructions like PIC10Fxxx, PIC1xF50x, ...
  • -F14   --FAMILY 14    PIC with 14-bit wide instructions like PIC12Fxxx, PIC16Fxxx, ...
  • -F16   --FAMILY 16    PIC with 16-bit wide instructions like PIC18Fxxx, PIC18FxxKxx, ...

Manuelle Auswahl des verwendeten PICs (-P --PIC)

Die meisten PICs werden, vorausgesetzt der Sockel ist richtig gesetzt, automatisch von USBurnCPP erkannt. Bei einigen PICs (mit 12-Bit-Kernen) ist das aber nicht möglich. In diesen Fällen ist der Name des PICs über diese Option anzugeben. 

Mit der Option --list lassen sich alle unterstützten PIC-Typen auflisten. Dabei verwendet USBurnCPP die akzeptierten Bezeichner für PICs.

Übertragung eines Bandgap-Wertes in den PIC (-B --BANDGAP)

Einige PICs haben einen Kalibrierwert für die internen Bandgap-Spannungsquelle. Dieser Bandgap-Wert wird in der Konfiguration des PICs gespeichert. USBurnCPP kümmert sich selbständig darum, dass beim Löschen und Neuprogrammieren solcher PICs der Bandgap-Wert erhalten bleibt. Deshalb benötigt man diese Option eigentlich nicht. 

Sollte dieser Wert aber einmal verloren gehen, oder soll er bewusst geändert werden, so kann man USBurnCPP den neuen Wunsch-Wert mit dieser Option vorgeben. Gültige Werte sind von 0 bis 3.

Diese Option wird nur ausgeführt, wenn der PIC beschrieben wird, also beim Löschen (--erase) oder beim Brennen (--WRITE) eines PICs.

Übertragung eines OSCCAL-Wertes in den PIC (-O --OSCCAL)

Die internen Oszillatoren einiger PICs lassen sich mit Hilfe eines Zahlenwertes in einem Register in ihrer Frequenz etwas verstellen. Der Hersteller misst den idealen Zahlenwert für die optimale Einhaltung der Sollfrequenz (meist 4 MHz) aus, und legt diesen in der letzten Zelle des Programmspeichers in Form eines Befehls ab. Beim Brennen des PICs liest USBurnCPP diesen Wert aus dem Programmspeicher aus, und programmiert ihn dann wieder in den Programmspeicher ein. Dadurch bleibt dieser Wert erhalten. Deshalb benötigt man diese Option eigentlich nicht. 

USBurnCPP gibt den im PIC vorhandenen OSCCAL-Wert aus.

Sollte dieser Wert aber einmal verloren gehen, oder soll er bewusst geändert werden, so kann man USBurnCPP den neuen Wunsch-Wert mit dieser Option vorgeben. Gültige Werte sind für 12-Bit-Kern- PICs -64 .. +63 und für 14-Bit-Kern-PICs 0 .. 63. Werte außerhalb dieser Bereiche werden von USBurnCPP ignoriert.

Diese Option wird nur ausgeführt, wenn der PIC beschrieben wird, also beim Löschen (--erase) oder beim Brennen (--WRITE) eines PICs.

Inhalt eines PICs auslesen und in eine Hex-Datei speichern (-R --READ)

Der PIC wird ausgelesen, und sein Inhalt in eine HEX-Datei geschrieben. Der Name der Hex-Datei kann als Argument angegeben werden. Fehlt die Angabe der Ausgabe-Datei, so wird der Inhalt des PICs in die Datei  „HexOut.hex“ geschrieben. Ein eventuell bereits vorhandenen HEX-Datei gleichen Namens wird ohne Warnung überschrieben.

Inhalt eines PICs mit dem Inhalt einer Hex-Datei vergleichen (-C --COMPARE)

Der Inhalt eines PICs wird mit dem Inhalt einer HEX-Datei verglichen, und Fehler angezeigt. Der Name der Hex-Datei muss zwingend angegeben werden. 

Inhalt einer Hex-Datei in den PIC brennen (-W --WRITE)

Der Inhalt einer HEX-Datei wird in den PIC gebrannt. Der Name der Hex-Datei muss zwingend angegeben werden. Diese Option bewirkt automatisch ein Löschen des PICs und ein Entfernen von Codeprotection vor dem Brennen sowie ein Test des gebrannten PICs nach dem Brennen.

Beispiel: USBurnCPP -S28  -F16  -W boot_0_20mhz.hex