avrdude: Rückgabewert

Gast #2253999
Lesenswert?

Hallo zusammen,

kann einem avrdude einen Rückgabewert liefern, ob ein Verify erfolgreich 
war?

Bei nagelneuen Controllern müssen die Fuses meist 3 mal geschrieben 
werden, ich möchte in einer Batchdatei abfragen, ob das Verify 
erfolgreich war.
Dann möchte ich automatisch zum nächsten Schritt gehen (Bootloader 
einspielen). Ansonsten möchte ich ein nochmaliges Schreiben anbieten.

Oder muss ich die Textausgabe von avrdude auswerten?

Gruß
Jens
Gast #2264198
Lesenswert?

Noch eine Frage, wenn ich immer zuerst den Bootloader mit Chiperase 
schreibe

AVRDUDE = avrdude -p c128 -c stk500v2 -P com16 -e -V -U 
flash:w:%bootloader%:a

und danach mein Programm ohne Chiperase

AVRDUDE = avrdude -p c128 -c stk500v2 -P com16 -D -V -U flash:w:%file%:a

dann müsste ich ja auf der sicheren Seite sein.

Was passiert aber, wenn ich wie oben meine Erstprogrammierung gemacht 
habe und später ein neues Programm nicht über den Bootloader, sondern 
über avrdude ohne Chiperase einspiele?
Wieder mit:
AVRDUDE = avrdude -p c128 -c stk500v2 -P com16 -D -V -U flash:w:%file%:a

Dann bleibt zwar der Bootloader erhalten, aber kann es nicht dann zu 
Problemen mit altem Code im Flash kommen?

Lasse ich die Oprtion -D weg, dann ist auch der Bootloader futsch.
Kann man evtl. einen Chiperase mit einem Offset durchführen und denn 
Booloader bereich aussparen?

Gruß
Jens
Moderator Persönliche Seite #2288013
Lesenswert?

Jens schrieb:
> Noch eine Frage, wenn ich immer zuerst den Bootloader mit Chiperase
> schreibe
...
> und danach mein Programm ohne Chiperase
...
> dann müsste ich ja auf der sicheren Seite sein.

Ja.

> Was passiert aber, wenn ich wie oben meine Erstprogrammierung gemacht
> habe und später ein neues Programm nicht über den Bootloader, sondern
> über avrdude ohne Chiperase einspiele?

Ein logisches UND zwischen den alten und den neuen Bits.  Flash
(oder EPROM allgemein) lässt sich immer nur von 1-Bits nach 0-Bits
beschreiben.  Die Rückkehr auf den Wert 1 erfolgt durch Löschen.

> Kann man evtl. einen Chiperase mit einem Offset durchführen und denn
> Booloader bereich aussparen?

Nein, das lässt sich so nicht machen, ein Chip Erase löscht (wie der
Name sagt) halt den gesamten Chip.  Was du bräuchtest, wäre ein Page
Erase.  Diese Funktion existiert zwar intern (und wird beispielsweise
vom Bootloader benutzt), aber Atmel hat es irgendwie vergessen, diese
Fähigkeit auf die ISP- (bzw. JTAG-)Schnittstelle selbst herauszu-
führen, und damit können die Programmierwerkzeuge eine solche Funktion
auch nicht anbieten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren