Forum: Mikrocontroller und Digitale Elektronik USBasp: Firmware flashen


von A. F. (elagil)


Lesenswert?

Hallo,

ich habe mir einen USBasp besorgt, möchte nun aber die AVRISP MKII 
Firmware darauf installieren, damit ich AVR Studio benutzen kann.
Ich nutze Windows 7 64Bit und scheitere an der Treiberinstallation.
Mit dem USB AVR Lab Tool kann man ja die neue Firmware flashen, nun 
zeigt es mir aber an, meine Treiber seien nicht signiert, das Gerät ist 
aber wohl erkannt worden (im Gerätemanager steht auch der USBasp unter 
"Ports"). Ich habe die Treiber im Programmordner vom USB AVR Lab Tool 
mit dem "Digital Signature Enforcement Overrider" bearbeitet, bin in den 
"Testmodus" gewechselt und habe dann die Treiber installiert. Die 
Installation klappt soweit, nur meldet mir, wie gesagt, das USB AVR Lab 
Tool die nicht signierten Treiber und hat keinen Zugriff auf das Gerät.

Was kann ich noch tun?

Danke im Voraus,
Adrian

von Zaunpfahl (Gast)


Lesenswert?

Hallo Adrian!

Du kennst schon diesen Thread?

Beitrag "USBasp unter AVRStudio 5 oder 6 verwenden - Anleitung!"

von A. F. (elagil)


Lesenswert?

Habe ich jetzt mal alles abgearbeitet, bei Klick auf den Menüeintrag 
erscheint nur:

 "avrdude.exe: error: could not find USB device "USBasp" with vid=0x16c0 
pid=0x5dc"

Der Treiber scheint noch nicht zu laufen..

Edit: Der Treiber läuft, ich bekomme jetzt diese Meldung, wenn ich den 
usbasp an einen atmega8 anschließe:
1
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
2
avrdude.exe: AVR device initialized and ready to accept instructions
3
4
Reading | ################################################## | 100% 0.00s
5
6
avrdude.exe: Device signature = 0x1e9307
7
avrdude.exe: erasing chip
8
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
9
avrdude.exe: reading input file "Debug\.hex"
10
avrdude.exe: error opening Debug\.hex: No such file or directory
11
avrdude.exe: input file Debug\.hex auto detected as invalid format
12
avrdude.exe: can't open input file Debug\.hex: No such file or directory
13
avrdude.exe: write to file 'Debug\.hex' failed
14
15
avrdude.exe: safemode: Fuses OK
16
17
avrdude.exe done.  Thank you.

Ich nehme mal an, weil ich noch gar kein Programm zu übertragen ist, 
kommen die Meldungen nach dem zweiten "cannot set sck period".

Sollte ich mich daran stören, dass ich ein firmware-update machen soll, 
wenn ja, wie mache ich das? brauche ich dazu einen zweiten programmer? 
ich hätte noch ein arduino uno board hier.

von Zaunpfahl (Gast)


Lesenswert?

Adrian Figueroa schrieb:
> avrdude.exe: warning: cannot set sck period. please check for usbasp
> firmware update.

Das liegt daran, dass die Firmware deines USBasp veraltet ist. Das ist 
normalerweise bei denen der Fall, die aus China per ebay verklopft 
werden.

> Ich nehme mal an, weil ich noch gar kein Programm zu übertragen ist,
> kommen die Meldungen nach dem zweiten "cannot set sck period".

Wie sieht denn die Kommandozeile aus? Vielleicht ist da ein Fehler 
drin...

> Sollte ich mich daran stören, dass ich ein firmware-update machen soll,
> wenn ja, wie mache ich das? brauche ich dazu einen zweiten programmer?
> ich hätte noch ein arduino uno board hier.

Manche AVR kannst du nur dann flashen, wenn die 
Programmiergeschwindigkeit runtergesetzt wurde. Das liegt daran, dass 
die Programmiergeschwindigkeit deutlich kleiner sein muss als der 
jeweils intern eingestellte CPU-Takt des AVR (ich glaub maximal 1/4). 
Manche ältere USBasp haben dazu einen Jumper (nicht alle), neuere machen 
das über die Option "-B".

Ein Update empfiehlt sich aber auf alle Fälle. Und ja, du brauchst dazu 
einen zweiten Programmer. Oder du besorgst dir dann gleich einen mit 
aktueller Firmware.

von Oliver J. (skriptkiddy)


Lesenswert?

Adrian Figueroa schrieb:
> ich habe mir einen USBasp besorgt, möchte nun aber die AVRISP MKII
> Firmware darauf installieren, damit ich AVR Studio benutzen kann.
> Ich nutze Windows 7 64Bit und scheitere an der Treiberinstallation.
Diese Kombination funktioniert definitiv nicht. Die AVRispmkii firmware 
funktioniert nur bis Windows XP[1].


> Ich habe die Treiber im Programmordner vom USB AVR Lab Tool
> mit dem "Digital Signature Enforcement Overrider" bearbeitet, bin in den
> "Testmodus" gewechselt und habe dann die Treiber installiert.
Das ist für aktuelle libusb-treiber nicht mehr notwendig. Erstelle dir 
einfach mit dem inf-wizard[2] ein neues Treiberpaket, welches signiert 
ist.
PS. Den "Digital Signature Enforcement Overrider" nimmt man schon lange 
nicht mehr. Das aktuelle Mittel der Wahl ist Ready-Driver Plus [3].

Gruß Oliver

[1] http://www.ullihome.de/wiki/USBAVRLab/Firmwares/AVRISPmkII
    (ganz unten)

[2] 
http://www.lpclinux.com/Blogs/Installing_DFU-UTIL_package_on_Windows_host
    (Schritte 1,3,4,5 wobei LPC313x-DFU => usbasp)

[3] http://www.citadelindustries.net/rdp.php

von A. F. (elagil)


Lesenswert?

> Das liegt daran, dass die Firmware deines USBasp veraltet ist. Das ist
> normalerweise bei denen der Fall, die aus China per ebay verklopft
> werden.

Es war amazon aber gut, dann ist die firmware wohl zu alt..


> Wie sieht denn die Kommandozeile aus? Vielleicht ist da ein Fehler
> drin...

Ich bin mir nicht sicher, meine sieht so aus, wenn die gemeint ist:

-e -P usb -c USBasp -p ATmega8 -e -U 
flash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":a

Im Debug Ordner liegt keine hex Datei, die er übertragen könnte, Atmel 
Studio erzeugt keine, vielleicht mache ich also einfach etwas falsch 
damit, ich weiß noch nicht, wie es zu bedienen ist und wollte gerade 
erst einsteigen.

> Ein Update empfiehlt sich aber auf alle Fälle. Und ja, du brauchst dazu
> einen zweiten Programmer. Oder du besorgst dir dann gleich einen mit
> aktueller Firmware.

Kann ich den Arduino dafür nehmen? Den kann avrdude ja auch ansprechen..

> Das ist für aktuelle libusb-treiber nicht mehr notwendig. Erstelle dir
> einfach mit dem inf-wizard[2] ein neues Treiberpaket, welches signiert
> ist.
> PS. Den "Digital Signature Enforcement Overrider" nimmt man schon lange
> nicht mehr. Das aktuelle Mittel der Wahl ist Ready-Driver Plus [3].

Ah dann habe ich wohl ziemlich alte Beiträge gelesen ;)

von A. F. (elagil)


Lesenswert?

was gibt es denn für gute bezugsquellen für avr programmer, speziell den 
usbasp? Ich habe da recht wenig gefunden.

von auf der Reise (Gast)


Lesenswert?

Adrian Figueroa schrieb:
> was gibt es denn für gute bezugsquellen für avr programmer, speziell den
> usbasp? Ich habe da recht wenig gefunden.

Normal müsstest du auch mit dem Arduino einen anderen Programmer flashen 
können. Ich habe irgendwo schon mal eine Anleitung gesehen.

USBasp gibt es haufenweise, probiere einfach eine Suchmaschine deiner 
Wahl!

Wenn über den Firmwarestand nichts angegeben ist, am besten vorher den 
Verkäufer fragen. Du brauchst mindestens die Version von Mai 2011.

Von einem Laden weiß ich, dass er damit wirbt, die neueste Firmware 
drauf zu haben: 
https://guloshop.de/shop/Mikrocontroller-Programmierung/guloprog-der-Programmer-von-guloshop-de::70.html
Das ist aber bestimmt nicht der einzige... Wie schon gesagt, am besten 
vorher fragen.

von A. F. (elagil)


Lesenswert?

Ich habe mich mal ein bisschen mit der Arduino ISP geschichte befasst. 
Es scheint wirklich möglich zu sein.

1.) Ich habe die Fuses entsprechend den Vorgaben (lfuse 0xEF und hfuse 
0xC9) gesetzt, nachdem ich auf das Arduino Board "Arduino ISP" 
geschrieben habe, den Jumper auf meinem Stick (J2) gesetzt habe und 
alles verbunden. Das Schreiben hat einwandfrei geklappt, hier habe ich 
mal einen Auszug von avrdude nach dem Auslesen des atmega8 auf dem 
usbasp:
1
C:\Users\Adrian Figueroa>avrdude -c stk500v1 -b 19200 -p atmega8 -P com3 -v
2
3
avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
4
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
         Copyright (c) 2007-2009 Joerg Wunsch
6
7
         System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.conf"
8
9
10
         Using Port                    : com3
11
         Using Programmer              : stk500v1
12
         Overriding Baud Rate          : 19200
13
         AVR Part                      : ATMEGA8
14
         Chip Erase delay              : 10000 us
15
         PAGEL                         : PD7
16
         BS2                           : PC2
17
         RESET disposition             : dedicated
18
         RETRY pulse                   : SCK
19
         serial program mode           : yes
20
         parallel program mode         : yes
21
         Timeout                       : 200
22
         StabDelay                     : 100
23
         CmdexeDelay                   : 25
24
         SyncLoops                     : 32
25
         ByteDelay                     : 0
26
         PollIndex                     : 3
27
         PollValue                     : 0x53
28
         Memory Detail                 :
29
30
                                  Block Poll               Page
31
      Polled
32
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
33
W   ReadBack
34
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
35
-- ---------
36
           eeprom         4    20   128    0 no        512    4      0  9000  90
37
00 0xff 0xff
38
           flash         33    10    64    0 yes      8192   64    128  4500  45
39
00 0xff 0x00
40
           lfuse          0     0     0    0 no          1    0      0  2000  20
41
00 0x00 0x00
42
           hfuse          0     0     0    0 no          1    0      0  2000  20
43
00 0x00 0x00
44
           lock           0     0     0    0 no          1    0      0  2000  20
45
00 0x00 0x00
46
           calibration    0     0     0    0 no          4    0      0     0
47
 0 0x00 0x00
48
           signature      0     0     0    0 no          3    0      0     0
49
 0 0x00 0x00
50
51
         Programmer Type : STK500
52
         Description     : Atmel STK500 Version 1.x firmware
53
         Hardware Version: 2
54
         Firmware Version: 1.18
55
         Topcard         : Unknown
56
         Vtarget         : 0.0 V
57
         Varef           : 0.0 V
58
         Oscillator      : Off
59
         SCK period      : 0.1 us
60
61
avrdude: AVR device initialized and ready to accept instructions
62
63
Reading | ################################################## | 100% 0.12s
64
65
avrdude: Device signature = 0x1e9307
66
avrdude: safemode: lfuse reads as EF
67
avrdude: safemode: hfuse reads as C9
68
69
avrdude: safemode: lfuse reads as EF
70
avrdude: safemode: hfuse reads as C9
71
avrdude: safemode: Fuses OK
72
73
avrdude done.  Thank you.

soweit so gut.. dann habe ich die firmware geflasht:
1
C:\Users\Adrian Figueroa>cd C:/
2
3
C:\>avrdude -c stk500v1 -b 19200 -p atmega8 -P com3 -u -U flash:w:usbasp.atmega8
4
.2011-05-28.hex
5
6
avrdude: AVR device initialized and ready to accept instructions
7
8
Reading | ################################################## | 100% 0.13s
9
10
avrdude: Device signature = 0x1e9307
11
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
12
13
         To disable this feature, specify the -D option.
14
avrdude: erasing chip
15
avrdude: reading input file "usbasp.atmega8.2011-05-28.hex"
16
avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
17
avrdude: writing flash (4700 bytes):
18
19
Writing | ################################################## | 100% 9.36s
20
21
avrdude: 4700 bytes of flash written
22
avrdude: verifying flash memory against usbasp.atmega8.2011-05-28.hex:
23
avrdude: load data flash data from input file usbasp.atmega8.2011-05-28.hex:
24
avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
25
avrdude: input file usbasp.atmega8.2011-05-28.hex contains 4700 bytes
26
avrdude: reading on-chip flash data:
27
28
Reading | ################################################## | 100% 7.16s
29
30
avrdude: verifying ...
31
avrdude: 4700 bytes of flash verified
32
33
avrdude done.  Thank you.

Auch sehr gut. Wenn ich jetzt den Jumper wieder aufmache und den Stick 
an ein Board zum Programmieren anschließe kommt im Atmel Studio nur:
1
avrdude.exe: error: programm enable: target doesn't answer. 1 
2
avrdude.exe: initialization failed, rc=-1
3
             Double check connections and try again, or use -F to override
4
             this check.

Liegt das jetzt am Stick oder am zu programmierenden Board? Braucht das 
Board seine eigene Versorgungsspannung, oder bezieht es die aus dem 
USBasp? Im moment ist die Versorgung nicht angeschlossen.

Adrian

von A. F. (elagil)


Lesenswert?

Was neues:

Mit der Option -B 20 passiert was erfreuliches:
1
avrdude.exe: set SCK frequency to 32000 Hz
2
avrdude.exe: AVR device initialized and ready to accept instructions
3
4
Reading | ################################################## | 100% 0.01s
5
6
avrdude.exe: Device signature = 0x1e9307
7
avrdude.exe: erasing chip
8
avrdude.exe: set SCK frequency to 32000 Hz
9
avrdude.exe: reading input file "Debug\.hex"
10
avrdude.exe: error opening Debug\.hex: No such file or directory
11
avrdude.exe: input file Debug\.hex auto detected as invalid format
12
avrdude.exe: can't open input file Debug\.hex: No such file or directory
13
avrdude.exe: write to file 'Debug\.hex' failed
14
15
avrdude.exe: safemode: Fuses OK
16
17
avrdude.exe done.  Thank you.

Das entspricht wohl einem zwanzigstel der Frequenz, ich glaube vorher 
irgendwo 1us gelesen zu haben...

von Axel S. (a-za-z0-9)


Lesenswert?

Adrian Figueroa schrieb:

> Edit: Der Treiber läuft, ich bekomme jetzt diese Meldung, wenn ich den
> usbasp an einen atmega8 anschließe:

1
> avrdude.exe: warning: cannot set sck period. please check for usbasp
2
> firmware update.

Die Firmware auf den USBASP ist veraltet und erlaubt noch nicht, die 
SPI-Geschwindigkeit per Kommandozeile zu setzen. Das bedeutet, du kannst 
damit keine Targets programmieren, die mit sehr langsamem Takt laufen. 
IIRC ist der Default für diese alte FW-Version 250kHz SPI-Takt, was ein 
Target mit mindestens 1MHz Takt erfordert.

1
> avrdude.exe: AVR device initialized and ready to accept instructions
2
> avrdude.exe: Device signature = 0x1e9307
3
> avrdude.exe: erasing chip

Das sieht doch alles gut aus.

1
> avrdude.exe: reading input file "Debug\.hex"
2
> avrdude.exe: error opening Debug\.hex: No such file or directory
3
> avrdude.exe: input file Debug\.hex auto detected as invalid format
4
> avrdude.exe: can't open input file Debug\.hex: No such file or directory
5
> avrdude.exe: write to file 'Debug\.hex' failed

> Ich nehme mal an, weil ich noch gar kein Programm zu übertragen ist,
> kommen die Meldungen nach dem zweiten "cannot set sck period".

Ja. Die Kannst du ignorieren. Wenn du den USBASP wirklich testen willst, 
kannst du versuchen, ein "Hello World" Programm zu flashen. Oder du 
startest avrdude im interaktiven Modus (Option -t) und versuchst dann, 
Flash, EEPROM und Fuses zu lesen. Wenn Lesen geht, geht Schreiben zu 
99.9% auch.

> Sollte ich mich daran stören, dass ich ein firmware-update machen soll,

IMHO ja.

> wenn ja, wie mache ich das? brauche ich dazu einen zweiten programmer?
> ich hätte noch ein arduino uno board hier.

Dazu reicht ein zweiter ATmega8, eine 28-polige Fassung, ein 8-16MHz 
Quarz oder Resonator und die üblichen Abblock- bzw. Quarz-Kondensatoren. 
Damit baust du die Mindestbeschaltung für einen ATmega8 mit externem 
Quarz auf und verbindest das mit deinem USBASP. Dann besorgst du die 
aktuelle Firmware und flashst sie auf einen zweiten ATmega8. Nicht 
vergessen, die Fuses mit zu setzen! Dann einfach mit dem ATmega8 im 
USBASP tauschen.

So mache ich meine Firmware-Updates für den USBASP und das funktioniert 
ganz problemlos.


XL

von Adrian (Gast)


Lesenswert?

bitte den rest lesen ;) das update ist doch schon drauf..

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.