Forum: Mikrocontroller und Digitale Elektronik AT90USB dfu-programmer linux


von Winston Schröder (Gast)


Lesenswert?

Hallo allerseits,

ich versuche derzeit mein mit einem AT90USB1287 bestücktes STK525 
Entwicklungskit ans Laufen zu kriegen. Habe mir auch die (super!) 
Vorlage von Stefan Salewski angeschaut und nach einigem hin und her auch 
kompiliert.

Mein Problem ist aber jetzt die Programmierung des Prozessors. Meine 
Rahmendaten sind:
OS Kubuntu Feisty
avt-toolchain auf dem neusten Stand (vorgestern nochmal neu kompiliert 
etc.

Beim Ausführen des dfu-Programmers meldet dieser, mein Board sei nicht 
angeschlossen. Wenn ich den Reset ausführe (entweder nur Reset Taste 
drücken oder aber HW und RESET drücken, dann erst RESET loslassen, im 
Anschluß HW loslassen) erscheint das Board kurz, wenn ich lsusb aufrufe.
Nach ein paar Sekunden ist es dann wieder weg.

Ich habe auch schon versucht, die Programmierung im Zeitraum in dem das 
Board angezeigt wird zu starten, leider erfolglos.
Hier zur Vervollständigung noch die genaue Fehlermeldung:
1
rwork@WinstonII:~$ dfu-programmer at90usb1287 erase
2
dfu-programmer: no device present.
3
rwork@WinstonII:~$

 Meine Frage ist: Was mache ich falsch?
Muss das Board gemountet werden (wenn ja wie?), oder irgendwelche 
Konfigurationsdaten einstellen?

Für Hilfe wäre ich echt tierisch dankbar,

viele Grüße und Danke schon mal im vorraus

von Stefan Salewski (Gast)


Lesenswert?

Funktionieren denn andere USB-Geräte bei Dir?

Du hast doch nicht (wie jemand, der mir kürzlich schrieb) mal kurz ein 
kleines Testprogramm per ISP auf den Chip aufgespielt? Wird der Chip 
konventionell per ISP (In-System-Programmer) programmiert, überschreibt 
man den USB-Bootlader.

Gruß

Stefan Salewski

von Stefan Salewski (Gast)


Lesenswert?

Noch eine kurze Ergänzung:
Wenn Atmels Bootloader aktiv ist (evtl. während Reset HWB drücken, wie 
im STK525 Manual beschrieben) sollte der Befehl "dmesg" nach dem 
Anstecken des Boards etwas wie

AMD64X2 bus # dmesg

usb 2-7: new full speed USB device using ohci_hcd and address 2
usb 2-7: configuration #1 chosen from 1 choice

ausspucken.

Und
AMD64X2 ~ # cat /proc/bus/usb/devices

sollte einen Eintrag wie

T:  Bus=02 Lev=01 Prnt=01 Port=06 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver=20.00 Cls=fe(app. ) Sub=01 Prot=00 MxPS=32 #Cfgs=  1
P:  Vendor=03eb ProdID=2ffb Rev= 0.00
S:  Manufacturer=ATMEL
S:  Product=AT90USB128 DFU
S:  SerialNumber=1.0.0
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 0 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none)

haben. Soweit hat das mit dfu-programmer noch gar nichts zu tun, das 
bedeutet lediglich, das Atmels Bootloader vom Linux-System erkannt 
wurde.

Teste erstmal das, dann sehen wir weiter.

von Winston Schröder (Gast)


Lesenswert?

vielen lieben Dank für die schnelle Antwort, ich habe die Antwort leider 
gestern nicht mehr gesehen.

Zum Glück habe ich das Problem auch schon gelöst bekommen. Ich hatte den 
HW Knopf zum Programmieren losgelassen, so wie ich es auch aus der 
Anleitung des  STK525 interpretiert habe.
Die Programmierung hat erst funktioniert, als ich beide Knöpfe (RST und 
HW) gedrückt habe und danach nur den RST losgelassen hatte. Mit 
gedrücktem HW Button habe ich dann den dfu-programmer gestartet, und 
siehe da, es hat auf einmal funktioniert.
(Das kann doch so eigentlich nicht vorgesehen sein, man muss doch dann 
einen Spagat zwischen Tastatur und Board machen!)

bzw. ich musste noch etwa eine Sekunde nach dem Loslassen des RST 
warten, bevor ich programmieren konnte.

noch kurz zu den obigen Ausgaben:
Das Gerät war immer nur für ein paar Sekunden zu sehen. (Das 
Vorhandensein des Boards hatte ich ja mit lsusb überprüft.)
... und programmiert hatte ich bis dato auch nichts.

vielen Dank soweit nochmal!

von Stefan Salewski (Gast)


Lesenswert?

>Die Programmierung hat erst funktioniert, als ich beide Knöpfe (RST und
>HW) gedrückt habe und danach nur den RST losgelassen hatte.

Na schön das sich das geklärt hat.

In der Tat, man muss zuerst RESET loslassen, erst danach HWB. Ich hatte 
Dein erstes Posting so verstanden, dass Du es auch so probiert hattest, 
so steht es auch in der Atmel-Dokumentation.

>Mit gedrücktem HW Button habe ich dann den dfu-programmer gestartet

Hm, ist es wirklich nötig HWB gedrückt zu halten, bis man das 
Programming Tool gestartet hat? Bei mir war das nicht nötig -- aber 
evtl. hat Atmel den Bootloader etwas geändert, die letzte Version ist 
wohl von Juni 2007 und man kann sie jetzt scheinbar auch frei 
runterladen.

Übrigens: Streng genommen sollte man zuerst RESET, und erst dann HWB 
betätigen. Es könnte ja ein laufendes Programm den HWB-Pin als Ausgang 
verwenden -- wenn man dann als erstes (oder gleichzeitig) HWB drückt, 
mach man evtl. kurzzeitig einen Kurzschluss. Und wenn beide Knöpfe 
gedrückt sind, dann zunächst Reset und erst danach (evtl. erst einige 
Sekunden später) HWB loslassen.

Ich hoffe mal Du bekommst die Firmware und das Testprogramm zum laufen. 
Ich hatte alles mit avr-gcc 3.4.6 kompiliert, wahrscheinlich musst Du 
ein paar Anpassungen machen. Dies könnte insbesondere eine Warteschleife 
im Hauptprogramm betreffen, die einen Pin periodisch Toggled um 
Betriebsbereitschaft (LED blinkt) anzuzeigen. In die Schleife muss man 
für avr-gcc 4.x wohl ein NOP oder ähnliches einfügen, sonst wird sie 
wegoptimiert. Falls Du es mit avr-gcc 4.x nicht zum laufen bringst, gib 
Bescheid, dann werde ich bei mir auch mal avr-gcc 4.1 installieren und 
die Quelltexte anpassen.

Gruß

Stefan Salewski

von Winston Schröder (Gast)


Lesenswert?

Hallo nochmal,

habe jetzt die Ursache für meine Probleme endlich gefunden. Peinlich 
aber war, ich habe make dfu nicht als Superuser ausgeführt. Nochmals 
danke für die Hilfe!

von Stefan Salewski (Gast)


Lesenswert?

>Hallo nochmal,

>habe jetzt die Ursache für meine Probleme endlich gefunden. Peinlich
>aber war, ich habe make dfu nicht als Superuser ausgeführt. Nochmals
>danke für die Hilfe!

Dein letztes Posting ergibt leider nicht viel Sinn.
Du hattest ja zuvor berichtet, dass es Dein Problem war, dass der 
AT90USB bzw. sein Bootloader nicht als USB-Device erkannt wurde bzw. 
dauerhaft verfügbar war.
Deine Lösung diese Problems hatte ich so verstanden, dass Du während und 
auch längere Zeit nach dem Reset durch Drücken von HWB einen Pin (E2 war 
es wohl) auf Masse legen musstest. Soweit hatte das mit dfu-programmer 
noch gar nichts zu tun!

Ich muss übrigens "make dfu", also den Firmware upload durch 
dfu-programmer, nicht als superuser/root ausführen, sondern kann das als 
ganz normaler Benutzer erledigen. Wenn bei Dir root-Rechte erforderlich 
sind mag das an den Einstellungen Deiner Linux-Distribution liegen -- 
man kann damit leben.

Gruß

Stefan Salewski

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.