Hallo an alle Bastler und Entwickler da draussen!
Mit usbprog versuche ich einen freien Programmieradapter zu schaffen,
mit dem man alles, was das Bastelherz so begehrt programmieren kann.
Alle Quelltexte stehen unter der GNU/GPLv2
Homepage: http://www.embedded-projects.net/usbprog
Die Technik ist ganz einfach gehalten. Ohne viel Schnickschnack, so dass
es schön billig und einfach zum Nachbauen ist. Über USB kann man bequem
verschiedene "Firmwares" einspielen. Dafür gibt es ein grafisches Tool
(Windows und Linux) mit dem man im "Online Pool" surfen kann und sich
dann die gewünschte Firmware per klick einspielen kann.
Aktuell bastle hauptsächlich ich alleine an neuen Firmwares aber ich
hoffe dass sich bald Leute finden, die eigene Versionen beisteuern.
Aktuelle Firmwares:
- AVRISP mk2 Klon
- JTAG USB Adapter (unteranderem für OpenOCD (ARM7,ARM9))
- USB zu Seriell Wandler (ohne Treiber, CDC)
- SimplePort (einfach die 6 IO Leitungen des Adapters nutzen)
- es entsteht gerade ein JTAGICE mk2 Klon
(stoppen und starten über den GDB funktioniert bereits, leider fehlt mir
gerade etwas die Zeit)
- es gibt ebenfalls Pläne für einen PIC Programmer
NEU NEU NEU USB JTAG ADAPTER mit OpenOCD Unterstützung:
http://www.embedded-projects.net/index.php?page_id=175
Also ich hab fuer den AT89S8252 schon mal ein Projekt geschrieben.
Waere das was?
Das ist die gleiche Hardware nur in gross:
http://www.ixbat.de/index.php?page_id=89
Meinst du auch diese Controllereihe oder was genau? Das ich mir mal ein
Datenblatt anschauen kann.
Gruss Bene
Interessantes Projekt! Für den Anfang würde mich die OpenOCD
Firmware interessieren. Allerdings nur zum Flashen, Debugger
habe ich mir schon vor Jahren abgewöhnt. Welche Übertragungsrate
erreicht das Gerät denn so ungefähr? Der LPC21xx Bootloader
ist mir etwas zu langsam.
- Michael
Ich mess es heute mal. Wobei ich noch ein paar Schrauben kenne, an denen
man drehen kann.
Der schnellste wird er nicht sein, aber will es so haben, dass das
arbeiten mit Adapter ok ist.
Wie lange braucht denn dieser Bootloder?
Hast du da irgendwie zahlen? Also was braucht 1K oder so?
Gruss Bene
Nicht weit weg von der Bitrate der Seriellen die ihn bedient. Nur ist
genau die das Problem. Denn während deren UARTs mittlerweile oft
fraktionale Baudraten können, hat der Bootloader davon noch nichts
mitgekriegt und besteht hartnäckig auf maximal 38400 - es sei denn der
Quarz hat zufällig 14,7MHz, was sich aber schlecht mit den 12MHz eines
USB-Interface oder den 1MHz eine CAN-Bus verträgt.
Bei mir läuft ein LPC2136/01 mit einem 20MHz Quarz. Bis zu
38.4 kBaud kann ich beim Flashen einstellen was ich will - also
zumindest im Philips Flash-Tool. Die 23xx können zumindest 115kBaud.
Gemessen habe ich mal etwa 100 Sekunden zum Lesen der gesamten
256k.
- Michael
115k gehen bei meinem 2136 ja auch nicht mit dem Bootloader. Aber
4k8, 9k6, 19k2, 38k4.
In der Firma haben wir ein MCB2300 (LPC2368) mit einem 12MHz Quarz.
Den habe ich schon mit 115k geflashed.
Hab ein Problem beim kompilieren von OpenOCD für usbprog, hoffe es kann
mir wer helfen.
Ich versuche openocd mit cygwin unter Windows zu kompilieren und benutze
dazu die fertig angepassten sourcen
(http://www.ixbat.de//files/admin/embedded/usbprog/downloads/openocd4usbprog.tar.gz).
bootstrap - ok
./configure --enable-usbprog - ok
make - problem:
sobald das Makefile den "src/jtag"-Ordner erreicht, bricht das makefile
mit fogender fehlermeldung ab:
Zum fehler führt also folgender teil der usbprog.c:
1
intusbprog_init(void)
2
{
3
usbprog_jtag_handle=usbprog_jtag_open();
4
...
meiner meinung nach bindet er zwar die header-datei ein und findet den
prototyp der funktion, aber die funktion selbst in der library
libusbprogjtag.a findet er nicht.
hab darauf hin nochmal die libusbprogjtag neu kompiliert und
installiert, jedoch auch ohne erfolg. langsam bin ich echt am
verzweifeln :( ^^
danke für jegliche Hilfe :)
MfG
Martin Planer
Hi,
Du solltest vieleicht erstmal zählen lernen. Oder wenigstens die
Fehlermeldung auch richtig lesen!
Die Zeile, in der Du den Fehler vermutest ist 177 und nicht 180!
Außerdem stammt die Fehlermeldung vom Compiler und nicht vom Linker. Und
der Compiler hat mit irgendwelchen Libraries erstmal überhaupt nichts am
Hut.
Das Neukompilieren der libusbprogjtag war also ziemlich sinnlos.
CU Frank
PS: Hätte ich ja fast vergessen.
Der Grund für den Fehler ist, das sich die zu OpenOCD gehöhrende log.h
(in src/helper) mit der von libusb-win32 (von cygwin) zur Verfügung
gestellten usb.h (genauer gesagt mit der von dieser via windows.h
eingebundenen wingdi.h) beißt.
Zur Behebung des Fehlers sollte es reichen Zeile 51 zu löschen (oder
besser einen Kommentar draus zu machen).
Also aus:
Also mal danke für deine Antwort!
Arbeite das erste mal richtig mit cygwin und bin nicht (mehr) so
wirklich fit beim gcc :)
Das kompilieren läuft jetzt wirklich einwandfrei, doch meldet sich jetzt
wirklich der Linker zu Wort und zwar mit ein paar Referenzproblemen:
Hast du die libusb installiert? Da sieht so aus als findet der die .a
oder .so nicht.
Findest du da was in deinem Cywgin? Also das du die libusb installieren
kannst?
Gruss Bene
Also das sollte alles installiert sein. Cygwin hat da libusb-win32, also
im lib-Ordner befinden sich einige Dateien, die darauf schließen lassen,
dass alles korrekt installiert wurde, wie z.B.:
Ja du hast ja jetzt den include zur usb.h entfernt?
Eigentlich brauch man im Linux den include schon, und dazu muss man noch
das libusb-dev paket installieren. Gibts sowas für Cygwin auch?
In dem Paket sind die benötigten Header Dateien drin.
Gruss Bene
Also ich finde bei Cygwin jetz nur ein Paket - libusb-win32 - und das
ist schon installiert, also kein -dev Paket oder sonstiges. Weiß jetzt
leider auch nicht ob die devel-sachen da schon integriert sind, weil ich
sonst bei cygwin auch kaum extra -dev pakete finde.
ok dann muesstest du trotzem die header datei mal wieder einbinden.
du koenntest mal testen eine einfache .c datei
#include <stdio.h>
#include <usb.h>
int main()
{
usb_init();
};
mit gcc main.c -lusb zu uebersetzen oder er die libusb findet.
Ok. Hab das Miniprogramm erfolgreich erstellen können. Also muss ich die
usb.h warscheinlich doch einbinden.
Danke mal für die Hilfe, ich hab nun eine 2 Stündige Zugfahrt vor mir,
wo ich wieder probieren kann. Werde dann am Abend/Nachmittag meine
(Miss-)Erfolge posten ;)
Vielen, vielen Dank auf jedenfall schonmal für die nette Hilfe :)
MfG
Martin Planer
So, Problem gelöst! Hab das Programm nun endlich erfolgreich erstellen
können. Der Fehler ist meiner Meinung nach ziemlich komisch:
Ich hab nur im Makefile im Hauptverzeichnis (/src) die Linkerparameter
vertauschen müssen, also einfach
1
USBPROGLIB=-lusb-lusbprogjtag
in Zeile 199 auf
1
USBPROGLIB=-lusbprogjtag-lusb
ändern müssen. Danach funktioniert das Makefile einwandfrei. Hab nicht
gewusst, dass die Stellung der Parameter irgendeinen Unterschied macht.
Auf jeden Fall bin ich nun glücklich, dass alles funktioniert und ich
kann mich endlich an die ersten Schritte mit OpenOCD wagen. :)
Für alle die es nun selbst unter Cygwin kompilieren wollen nochmal eine
Zusammenfassung:
1
1) Cygwin installieren
2
mit allen benötigten Paketen: gcc, libc, make, automake, autoconf, libusb-win32, etc. (weiß auch nicht mehr genau was alles ;)
3
2) alles irgendwohin extrahieren
4
3) libusbprogjtag erstellen und installieren
5
- cd libusbprogjtag/lib
6
- make
7
- make install
8
5) in der openocd4usbprog/src/jtag/usbprog.c folgende Änderungen durchführen
9
- Zeile 51 auskommentieren (//#include <usb.h>)
10
- Ich hab noch in Zeile 29 <sys/io.h> in <io.h> ändern müssen (kann vielleicht auch weggelassen werden)
Für alle, die sich das nicht antun wollen, hab ich die binary angehängt.
Zum ausführen benötigt ihr noch 2 dll Dateien von Cygwin: cygwin1.dll
(erstellt mit version 1005.24.0.0) und cygusb0.dll (version 0.1.12.1)
Danke nochmal für die freundliche Unterstützung Benedikt Sauter!
Schönen Tag noch.
MfG
Martin Planer
Hallo Martin,
bist du mit JTAG und AVR programmierung etwas vertraut?
Das Modul ist jetzt etwas lahm, aber es gibt ne Möglichkeit das zu
beschleunigen, nur hab ich gerade kaum Zeit da ich an meiner
Diplomarbeit gerade hänge.
Gemeinsam könnte man das vielleicht mal in Angriff nehmen?
Gruss Bene
Also AVR-Programmierung ist kein Problem, nur bei JTAG mach ich gerade
meine ersten Schritte ;)
Werd mich wohl oder übel erst einmal richtig einlesen müssen, bevor ich
dir da helfen kann glaub ich. Sonst wirklich gerne.
Argh! Dass, das auch nie so funktioniert, wie ich das haben will! ^^
Hab shcon wieder ein Problem :(
Wenn ich openocd starte (mit openocd.exe -f usbprog.cfg), dann schaut
auch alles fürn anfang ganz gut aus:
1
C:\Dokumente und Einstellungen\maruchinu\Desktop\openocd>openocd -f usbprog.cfg
2
3
Info: openocd.c:86 main(): Open On-Chip Debugger (2007-04-11 16:20 CEST)
4
Info: usbprog.c:184 usbprog_init(): USB JTAG Interface ready!
Aber danach geht nichts mehr weiter und ich kann mich auch nicht per
telnet auf Port 4444 verbinden :(
Hat wer nen Vorschlag? ^^
thx
Martin
Also das Board ist wie auf dem Bild im Anhang angeschlossen.
Bei dir auf der Homepage steht ja dabei Vref unbedingt auf Vcc vom
USBprog hängen, was ich aber nicht machen kann, da:
1) Vref auf meinem Board nicht zugänglich ist und auf dem Board rumlöten
werd ich sicher nicht ;) - dafür wars mir zu teuer :P
2) Vref auf dem Board von fix mit einer 3.3V Referenzspannung verbunden
ist. (zu sehen auf http://www.olimex.com/dev/images/LPC2378-STK-sch.gif
, am linken Rand bei ca. 2/3 von oben ist der JTAG Stecker)
Ok, das mit den Leitungen probier ich morgen aus (hab heute keine Zeit
mehr dafür).
Hab heute einige Zeit das Programm debuggt und hab den Fehler eingrenzen
können. Er tritt in usbprogjtag.c auf und zwar ziemlich am ende, in der
Zeile 125. Das ist folgende:
Ja, hab auch sicherheitshalber nochmal gemacht... trotzdem nix :(
Ich glaub ich überprüf nochmal die Hardware... vielleicht funktioniert
dort was nicht ganz richtig :-/ (muss aber erst warten bis ich wieder
Zugang zu einem Oszi habe ;)
Ok, also ich kenne jetzt drei Installationen unter Linux mit denen das
so funktioniert.
Ich kann heute abend mal deine Windows Version ausprobieren. Muss da nur
mal meine alte Windowshobel anschmeissen.
Gruss Bene
Tag zusammen,
ich hänge aktuell an exakt der selben Stelle. Gibt es dazu mittlerweile
eine Lösung?
Unter Linux klappt es leider auch nicht :(
Gruß
Mathias
Windows hängt genau, wie hier im Thread beschrieben, unter Linux wurde
kurz das USBPROG gefunden, aber der JTAG Scan scheiterte. Das kann an
einen zu niedrigen ARM Clock liegen, dann habe ich diese hochgedreht,
allerdings ohne Erfolg. Einen Tag später wurde in identischer Konfig
nicht mal mehr der USBPROG gefunden :(
Gruß
Mathias
Hallo Bene ;)
Sollte eigentlich noch alles so daheimliegen, wie ich es damals aus
Verzweiflung in die Ecke geschmissen habe ^^
Nur so auf die schnelle komm ich da jetz nicht hin - komm frühestens am
Wochenende wieder mal nach hause (wohn nämlich wegen Ausbildung etc
weiter weg)
PS: Hab nur jetz irgendwie auch ein Problem mit dem USBprog - er wird
nicht mehr richtig erkannt von Windows (vl. mal die Firmware neu
aufspielen...) - trotzdem komisch, hab doch noch letztes Wochenende
damit AVRs programmiert :(
hallo,
die firmware2 ist noch am enstehen.
Der Logikanalysator sollte gehen aber irgendwas haengt wohl. ich muss
das mal pruefen. Evtl schaff ich es heute noch.