Projekt
Hardware
Typenliste




UPROG2: Universeller Programmer für Linux

V1.26 (c) 2017 Jörg Wolfram





1 Hinweis und Lizenz

Das Programm unterliegt der GPL (GNU General Public Licence) Version 3 oder höher, jede Nutzung der Software/Informationen nonkonform zur GPL oder ausserhalb des Geltungsbereiches der GPL ist untersagt!
Die Veröffentlichung dieses Projekts erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, auch ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK.
Alle im Text genannten Marken sind Eigentum des entsprechenden Inhabers.

Die Software wurde unter und für Linux entwickelt, Unterstützung für andere Betriebssysteme ist nicht vorgesehen.

2 Allgemeines

Angefangen hat es vor ein paar Jahre damit, dass es keine gescheite Software für den TBDML (BDM-Programmer für Freescale/NXP S12(x)) gab, die auch die S12XD und S12XE unterstützt. Nach einigen (vergeblichen) Versuchen, die vorhandene Software anzupassen, habe ich mich letztendlich dazu entschlossen mir einen eigenen Programmer zu bauen.
Inzwischen sind einige andere Controllerfamilien dazugekommen, irgendwann war der Mega168 zu klein und ich habe ein komplettes Re-Design mit einem Mega644 gemacht.
Und da ich wohl nicht er Einzige bin der sich mit deratigen Problemen rumschlägt, habe ich mich entschlossen, das Projekt zu dokumentieren und zu veröffentlichen.

2.1 Unterstützte Controller- und Speicherfamilien

Die Liste der unterstützten Devices ist fest in das Programm integriert und schon recht lang, zusätzliche Devices könen nur durch Neukompilation hinzugefügt werden. Derzeit können Devices aus folgenden Familien programmiert werden:
  • Atmel AVR (SPI)
  • Atmel ATxmega (PDI)
  • Cypress PSOC4 (SWD)
  • Microchip PIC10xx/PIC12xx/PIC16xx
  • Microchip PIC18xx
  • Microchip dsPIC33xx
  • NXP/Freescale MPC56xx (BAM)
  • NXP/Freescale HCS08
  • NXP/Freescale HCS12(X)
  • Renesas R8C
  • Renesas 78K0R
  • Renesas RL78
  • ST Micro SPC56xx (BAM)
  • ST Micro ST7FLITE
  • ST Micro STM8 (SWIM)
  • ST Micro STM32 (SWD)
  • TI MSP430 (SBW)
  • TI CC2540/1
  • XILINX XC9500/XL
  • Atmel Dataflash (AT45DBxx)
  • SPI-Flash (25xx)
  • I2C-EEPROM (24xx)
Wenn man uprog2 LIST aufruft, werden die aktuelle unterstützten Devices ausgegeben. Geplant sind derzeit noch LPCxxxx von NXP, Freescale ColdFire, Renesas (früher NEC) V850 und TI C2000 (TMS32F28xx). Wann ich letztendlich dazukomme, steht allerdings in den Sternen. Und natürlich die Erweiterung der vorhandenen Listen um weitere Devices.

2.2 Konzept

Das Steuerprogramm auf dem PC ist ein einzelnes Binary, es werden keine witeren Dateien benötigt/angelegt. Auf dem System müssen libbluetooth und libftdi (bzw. libftdi1) vorhanden sein.
Das mit der fest eincompilierten Typenliste ist zwar erstmal etwas unflexibel, für mich aber völlig ausreichend. Beim Start prüft das Programm ob der uprog2d-Dämon schon läuft, ansonsten wird der Prozess geforkt. Die Kommunikation mit dem Dämon findet über Shared Memory statt, Auf die gleiche Weise könnte dann auch ein Debugger über Programmer mit seinem Device kommunizieren.
Updates werden automatisch auf den Programmer übertragen, wenn die PC-Software eine veraltete Version feststellt.

2.3 Installation



2.3.1 Auf dem PC

Momentan werden Intel 32-bit und X64 unterstützt. Je nach System sollte uprog-32 oder uprog2-64 nach /usr/local/uprog2 kopiert werden, das war es dann auch schon. Ausserdem müssen libftdi und libbluetooth auf dem Rechner installiert sein.

2.3.2 Auf dem AVR

Zuerst sollten die Fuses prorammiert werden. Für den Mega644 ist folgende Einstellung vorgesehen:
  • LOW FUSE: 0xe6
  • HIGH FUSE: 0xd0
  • EXT FUSE: 0xff
Danach muss das entsprechende Hexfile (main-bt.hex, main-usb.hex) programmiert werden. Die Bluetooth-Variante führt beim erstmaligen Start eine Initialisation des Bluetooth-Modules durch, danach muss das Pairing durchgeführt werden. Als Pin ist 55309 fest im Programm codiert. Soll diese geändert werden, muß das AVR-Programm anschließend neu übersetzt werden.

2.4 Compilieren und Erweitern

Eine Erweiterung auf zusätzliche Controller ist derzeit nur durch eine Neucompilation möglich. Soweit möglich, werde ich entsprechende Anfrage in zukünftigen Softwareversionen berücksichtigen.
Bei vielen Controllerfamilien lassen sich als "Workaround" ähnliche Typen finden. Wenn dabei die ID-Abfrage zu einem Abbruch führt, lässt sich diese meist auch über das Kommando "ii" (ignore ID) entschärfen.
Für das Übersetzen der Firmware benötigt man AVRA, für die PC-Seite ist eine Standard-Toolchain mit make und gcc ausreichend. Für die Übersetzung der EXEC-Files (z.B. PowerPC und STM32) wird dafür auch noch die entsprechende Binutils-Variante benötigt.

3 Changelog

25.2.2017 Version 1.26
  • Anzeige über Debug-LEDs beim SPC56xx deaktiviert
  • Bugfix: Pageoffset bei SPI-Flashes stimmte nicht
  • Bugfix: beim MSP430 wurden falsche Programmerpins angesteuert
  • Bugfix: Erase Dataflash beim RL78 brach mit Fehler ab, obwohl alles OK war
  • 64MB SPI-Flash und Quad-Mode hinzugefügt
  • MLX90363 readout (EEPROM write noch nicht implementiert
8.11.2016 Version 1.25a
  • DOC: Fehler in der Controllerbeschaltung behoben (10K-Widerstand an PA3)
7.11.2016 Version 1.25
  • Initiale Version


created with latex2web.pl v0.64 © 2006-2016 Joerg Wolfram