Forum: Mikrocontroller und Digitale Elektronik avrdude löscht / überschreibt eeprom


von Ich B. (ichbin)


Lesenswert?

Wie kann ich verhindern, daß AVRdude (winavr) den eeprom beim Flashen
überschreibt?

von Rahul (Gast)


Lesenswert?

mit irgendeinem Flag, das in der Kommanando-Zeile (nicht) angegeben
wird. Siehe AVRdude-Doku.

von Ich B. (ichbin)


Lesenswert?

Neee, das war's nicht: vor dem Flashen wird immer ein Chip-Erase
durchgeführt, und da löscht's auch den eeprom.
Es gibt aber eine Fuse (EESAVE), die den eeprom davor schützt.
Zumindest beim tiny2313.

von Manuel B. (Gast)


Lesenswert?

(entfernt)

von Ich B. (ichbin)


Lesenswert?

So macht's WinAVR

avrdude -p attiny2313 -P com3 -c avrispv2    -U flash:w:main.hex
.
.
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be
performed
To disable this feature, specify the -D option.

Und das sagt das avrdude manual:

-e
Causes a chip erase to be executed. This will reset the contents of the
flash ROM and EEPROM to the value‘0xff’, and is basically a prerequisite
command before the flash ROM can be reprogrammed again. The only
exception would be if the new contents would exclusively cause bits to
be programmed from the value ‘1’ to ‘0’. Note that in order to
reprogram EERPOM cells, no explicit prior chip erase is required since
the MCU provides an auto-erase cycle in that case before programming
the cell.

von Ludwig W. (lordludwig)


Lesenswert?

also grundsätzlich zur funktion des flash's:

- du kannst nur bits mit dem wert 0 reinschreiben
- darausfolgt du kannst kein 0xff rein schreiben
- alles auf 0xff stellen geht nur mit löschen befehl
- deshalb gibt es auch fehler wenn du nur ne neue datei flasht und
nicht davor löscht

lösung: setze das fuse das das löschen verhindert

von Manfred B. (Gast)


Lesenswert?

Unabhängig vom Programmer und dem Programmertool muss in diesem Falle
das entsprechende Fuse Bit EESAVE im Fuse High Byte gesetzt werden.
Achtung gesetzt bedeutet "0".

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.