++ usburn für Linux ++


Ein Steuerprogramm für die USB-PIC-Brenner8 und -Brenner9



 zurück zur Software-Seite , Download , Elektronik , Homepage

Problem
Voraussetzungen (nötige Hardware)
unterstützte PIC-Typen
Download
GUI für usburn
Brenngeschwindigkeit
bekannte Probleme
Besonderheiten/Eigentümlichkeiten

passende Hardware für 5V-PICs:  Brenner8
passende Hardware für 3,3V-PICs:  Brenner9

Tux-Burner

Problem
Wer mit den PICs experimentieren will, braucht ein Programmiergerät und geeignete Software.
Diese Software usburn kann das mit einem Brenner8  (bzw. Brenner8mini) bzw. einem Brenner9 mit USB-Anschluss.



Voraussetzungen
- ein Brenner8  bzw. Brenner8mini bzw. Brenner9
- ein PC oder Notebook mit Linux-Betriebssystem mit USB-Anschluss und den libusb-Treibern.
 
Brenner8 mit USB-Anschluß


unterstützte PIC-Typen

Möglichkeiten
- Brennen, Löschen, Auslesen, Vergleichen,
- Entfernung des Speicherschutzes bei gleichzeitigem Löschen

Eine Liste der unterstützten PIC-Typen befindet sich auf der "US-Burn für Windows" - Seite

nach oben


Installation
Usburn erfordert ein Linux-Betriebssystem mit libusb-Treibern. Diese sollte man am besten mit der Paketverwaltung der jeweiligen Linux-Distribution installieren.
Usburn wird im C++-Quelltext ausgeliefert. Durch Aufruf des enthaltenen make-Files wird die ausführbare Datei usburn erzeugt.
usburn ist freie Software und steht unter GPL-2.
Da sowohl C++ wie auch das Programmieren unter Linux für mich Neuland darstellen, sind hier sicherlich noch viele Verbesserungen nötig und möglich.
nach oben



Bedienung
Usburn ist z.Z. ein reines Kommandozeilenprogramm. Ein GUI als Frontend ist in Planung. Eine manuelle Einstellung der Konfiguration des PIC (wie z.B. mit US-Burn für Windows) ist noch nicht möglich. Die Konfiguration muss im HEX-File enthalten sein, dass ist aber ohnehin der Normalfall.

Beim Brennen von PICs mit im Flash oder Config abgelegtem OSCCAL-Wert oder BG-Wert (Bandgap) sollte man sich diese Werte (werden von usburn ausgegeben) sicherheitshalber notieren. Dann kann man sie im unwahrscheinlichen Falle eines Datenverlustes rekonstruieren.

Der Brenner8/9 wird  an den USB-Port des PC angeschlossen.

Der PIC wird in den IC-Sockel so eingesetzt, dass sein Pin 1 im Pin 1 des Sockels steckt. Alternativ kann eine PIC-Testplatine mit ICSP-Anschluss via Kabel mit dem ICSP-Anschluss des Brenners verbunden werden.

Dann wird das Programm mit den nötigen Kommandozeilenparametern gestartet. Der Brenner und der zu brennende PIC werden automatisch erkannt.


Für PIC18FxxKxx, PIC16LF7xx und PIC16LF1xxx ist ein Brenner8 mit einem Adapter zu verwenden, da diese PICs nur 3,3V Signalpegel vertragen.


Alle Einstellungen von usburn erfolgen durch Kommandozeilenparameter.

Option kurz
Option lang
Wert
Bedeutung
benutzbar
-h
--help
-
Auflistung aller möglichen Optionen
ja
-r
--read
-
Auslesen des PIC in ein HEX-File
ja
-w
--write
-
Brennen eines HEX-Files in den PIC
ja
-c
--compare
-
Vergleichen eines PIC mit dem HEX-File
ja
-e
--erase
-
Löschen des PIC
ja
-p
--remove
-
entfernt Codeprotection vom PIC und löscht ihn
ja
-i
--info
-
bewirkt die zusätzliche Ausgabe aller möglichen sinnlosen und hilfreichen Informationen
ja
-d
--reanimate
-
erweckt einen scheinbar toten PIC wieder zum Leben
ja
-l
--list
-
listet alle unterstützten PIC-Typen auf
ja
-b
--blank
-
testet, ob PIC leer ist
nein
-f
--firmware
-
brennt neue Firmware in den Brenner
ja
-k
--calibration
-
kalibrieren der Vpp-Erzeugung des Brenner8
ja
-t
--test
-
interaktiver Test der Hardware
ja
-o
--boot
-
schaltet den Brenner in den Bootloadermode
ja
-n
--normal
-
schaltet vom Bootloadermode in den normalen Mode
ja
-u
--run
-
aktiviert vor Programmende die Betriebsspannung des PIC via ICSP beim Brenner8P
ja
-S
--SOCKET
8, 14, 18, 20, 28, 40, ICSP Pinzahl des PIC im DIL-Gehäuse (wenn er im Testsockel des Brenners steckt) bzw. Auswahl des ICSP-Anschlusses (Vorgabe: 18 / ICSP)
ja
-F
--FAMILY
10, 16, 18, 18J, 18K, 24, 30, 33
Auswahl der PIC-Familie (PIC10F...dsPIC33F...) (Vorgabe: 16)
ja
-H
--HEX
name.hex
legt einen Namen für Brenn- und Lese-Hexfile fest
ja
-I
--IN
name.hex
legt den Namen für das Brenn-Hexfile fest (Vorgabe: HexIn.hex)
ja
-O
--OUT
name.hex
legt den Namen des Lese-Hexfiles fest (Vorgabe: HexOut.hex)
ja

Erwartet eine Option einen Wert, so ist er bei Verwendung der Kurzform unmittelbar hinter dem Optionsbuchstaben anzugeben. Wird die Langform verwendet, so ist zwischen Option und Wert ein Leerzeichen zu lassen: --HEX file.hex  aber  -Hfile.hex

Die Reihenfolge, in der Optionen angegeben werden, ist egal.


Beispiel:

usburn -w --SOCKET 40 --FAMILY 16 --IN test.hex

Im Testsockel des Brenners8 steckt ein 40-poliger PIC im DIL-Gehäuse. Er gehört zur Familie der PIC16Fxxx.
Erkenne den exakten Typ und beschreibe ihn mit dem Inhalt des Hex-Files "test.hex" (Achtung: zwischen "--IN" und "test.hex" muss ein Leerzeichen stehen.)
Wird die Brennoption w gewählt, dann wird automatisch der PIC vor dem Brennen gelöscht, und nach dem Brennen auf korrektes Brennen geprüft. Die Optionen p, e und c müssen also nicht extra angegeben werden.

usburn -r -S28 --FAMILY 16 --OUT test.hex

Im Testsockel des Brenners8 steckt ein 28-poliger PIC im DIL-Gehäuse. Er gehört zur Familie der PIC16Fxxx.
Erkenne den exakten Typ, lese ihn aus und schreibe seinen Inhalt in das HEX-File test.hex.

usburn -e  -F16

Im Testsockel des Brenners8 steckt ein 18-poliger PIC im DIL-Gehäuse oder ein PIC ist am ICSP-Verbinder angeschlossen (Standard-Einstellung). Er gehört zur Familie der PIC16Fxxx. (Da auch das die Standardeinstellung ist, wäre eigentlich auch die Option -F16 nicht nötig.)
Erkenne den exakten Typ und lösche ihn.


usburn -w  -F10 -SICSP --PIC PIC10F202 -IN blink-hex

Am ICSP-Anschluss des Brenners8 hängt ein PIC10F202. Er gehört zur Familie der PIC10Fxxx. Da für diese Familie die automatische Typerkennung nicht möglich ist, muss der Typ mit --PIC angegeben werden. Der PIC soll mit dem File "blink.hex gebrannt werden.

Eine detaillierte Beschreibung von usburn befindet sich in der aktuellen Version des Brenner8-Handbuchs.

nach oben



Download

Das Handbuch zu US-Burn und Brenner8 (1 MByte)
english calibration instruction for Brenner8
english usburn-Handbook (pre-pre-liminary)


Die Version V 0.4 (vom 16.05.2010) (für Brenner8 & 9)
Unterstützt mit dem Brenner8 fast alle mir bekannten 14-Bit-Kern-Typen (z.B. PIC16Fxxx) und 16-Bit-Kern-Typen (z.B. PIC18F) sowie Signalcontroller der Serie dsPIC30Fxxxx (>170 unterschiedliche Typen).
Zusätzlich werden die 12-Bit-Typen (PIC10F200 u.s.w) via ICSP-Kabel unterstützt.
Mit einem Adapter werden PIC18FxxKxx unterstützt.

Unterstützt mit dem Brenner9 fast alle mir bekannten PIC24, dsPIC33 sowie PIC18FxxJxx-Typen (via ICSP-Anschluss).

USBurn ist für Linux mit libusb-Treibern geeignet. (Ich teste die Software aber ausschließlich unter Debian 5.0.) 


  nach oben


GUI - grafische Benutzeroberfläche

Christian hat für usburn eine grafische  Oberfläche geschrieben, die einem das manchmal lästige Tippen auf der Kommandozeile erspart. Anfangs war ich etwas skeptisch, da alles in PureBasic geschrieben ist, und das ist für mich eine Fremdsprache. Aber nach einigem Testen bin ich ganz begeistert. Die GUI kommt in einer 32-bit und einer 64-bit-Version mit Quelltexten und PDF-Handbuch. Was will man mehr?
Die GUI setzt natürlich ein installiertes usburn voraus.
(Ein Problem gibt es noch bei PIC12F-Typen und bei PIC1xF5xx-Typen, die der falschen Familien zugeordnet werden.)

Bildschirmfoto der GUI

Schnellstart:
Beim ersten Start wird die GUI einen Fehler melden, da sie usburn noch nicht finden kann. Im Fenster Settings stellt man den Pfad zu usburn ein. Wird die GUI dann neu gestartet, dann wird usburn gefunden und der angeschlossenen Brenner erkannt. Nun sollte man (ebenfalls auf Settings) den Button Sync GUI-DB with usburn anklicken, damit die GUI über die Fähigkeiten des angeschlossenen Brenners informiert wird (PIC-Typen und PIC-Familien). Die GUI speichert diese Einstellungen, ein Synchronisieren ist nun nur noch beim Wechsel des Brenners oder beim Aktualisieren der Firmware nötig.

Von nun an kann man auf der Burning-Seite arbeiten. Man wählt die PIC-Familie und die Anschlussart (Sockel, ICSP) aus, erkennt den PIC-Typ mit Autodetect, und kann nach Herzenslust brennen, lesen, löschen .....

Eine tolle Arbeit, Danke Christian.


  nach oben


Brenngeschwindigkeit

 Dauer eines vollständigen Brennens (FLASH + EEPROM + ID + Config) inklusive Vergleich auf Richtigkeit:

Typ
Flash-Zellen
EEPROM-Bytes
Dauer in Sekunden
PIC16F876
8 k
256
45
PIC16F84
1 k
64
13
PIC16F628A
2 k
128
10
PIC16F916
 8 k
256
15
PIC12F629
1 k
128
6
PIC16F874A
4 k
128
6
PIC18F242
16 k
256
17
PIC18F2455
24 k
256
23
PIC18F4431
16 k
256
15

nach oben



bekannte Probleme

Bug: Ein unter 64-Bit-Linux compiliertes usburn kann die Database aufgrund einer Typenunverträglichkeit nicht verarbeiten, und funktioniert deshalb nicht. Das Problem wird in der nächsten Version behoben sein. Solange sollte mit der zusätzlichen Option -m32 (im makefile) die Erzeugung von 32-Bit Code erzwungen werden.

Da der Zugriff auf den Brenner8&9 nicht über Kernelmodule, sondern direkt über libusb erfolgt, sind eigentlich root-Rechte erforderlich. Damit alle User Zugriff bekommen, legt man eine  Datei "/etc/udev/rules.d/99-sprutbrenner.rules" an und schreibt in diese Datei:
SUBSYSTEM=="usb", SYSFS{idProduct}=="ff0b", SYSFS{idVendor}=="04d8",
GROUP = "plugdev"

Damit sollte der Brenner ab dem nächsten Einstecken für alle User der plugdev-Gruppe (in der man ja grundsätzlich sein muss, wenn man USB-Geräte benutzen möchte) verfügbar sein. Getestet unter Gentoo und Debian 4.0, 5.0 & 6.0. (Danke Marcel)


Fehler in der Firmware des Brenner8 stehen sobald bekannt auf der
Brenner8-Seite.

Das Programm ist noch recht jung und deshalb sicherlich noch unreif. Ich bitte um Erfahrungsberichte.

Folgende Typen funktionieren z.Z. nicht sicher im Brenner8 (Brennen der ID kann fehlschlagen):

Bei folgenden 28-poligen Typen bin ich nicht sicher, ob sie im Testsockel des Brenner8/Brenner8P funktionieren (Ich bitte um Erfolgs-/Misserfolgsmeldungen.). Sie lassen sich aber auf jeden Fall mit einem ICSP-Adapter am Brenner8 brennen. Ich empfehle den universellen ICSP-Adapter :
Bei dsPIC30F-Typen wird z.Z. immer der gesamte Flash-Speicher gebrannt, auch wenn man nur ein kleines Programm in den dsPIC schreiben will, dadurch dauert das Brennen großer dsPICs recht lange. Das wird mit einem späteren Softwareupdate korrigiert werden.

nach oben


Besonderheiten/Eigentümlichkeiten

Alle PIC10Fxxx, PIC18FxxJxx, PIC24,  dsPIC30F und  dsPIC33F werden nur über den ICSP-Anschluss gebrannt.

PIC18FxxKxx, PIC18LFxxKxx, PIC16LF7xx und PIC16LF1xxx werden mit Brenner8 und einem 3,3V-Adapter gebrannt.

nach oben



Entwicklungsgeschichte

04.10.2012
GUI für usburn Version 0.6

20.11.2010
GUI für usburn Version 0.5

20.11.2010
GUI für usburn

17.05.2010
usburn für Linux V0.4

02.03.2010
usburn für Linux V0.3

- einige Fehler beseitigt
- BG bleibt erhalten
- OSCCAL bleibt erhalten
- OSCCAL kann manuell eingestellt werden

18.12.2009
neue Database und aktuelle Firmware ins TAR-Archiv aufgenommen

19.09.2008
usburn für Linux V0.2
- Fehler in Typerkennung beseitigt
- Optionen "-I" und "-O" nachgerüstet

10.09.2008
- usburn für Linux V0.1


 zurück zur Software-Seite , Download , Elektronik , Homepage
Autor: sprut
erstellt: 05.09.2008
letzte Änderung :  04.10.2012