Frage:
Gibt es eine Möglichkeit, EEPROM-Inhalte in AVR Atmega beizubehalten, wenn eine neue Firmware gebrannt wird, um mit avrdude zu flashen?
Claudio
2014-02-06 19:41:37 UTC
view on stackexchange narkive permalink

Ich beende eine Anwendung, die einige nichtflüchtige Parameter verwendet, die in einem AVR Atmega644P EEPROM gespeichert sind. Die anfänglichen EEPROM-Werte wurden mit dem EEMEM-Attribut (wie in diesem Tutorial beschrieben) generiert und mit avrdude wie folgt in den AVR gebrannt:

avrdude -c usbasp -p atmega644p -u -U eeprom: w: application.eep

Die Anwendung wird ausgeführt und ruft die korrekten EEPROM-Werte ab, aber wenn ich nur die Firmware mit avrdude -c usbasp -p atmega644p -u -U flash: w: application.hex Das EEPROM scheint ebenfalls gelöscht zu werden, da die gelesenen Werte "alle" anstelle der zuvor geladenen sind. Ich frage also, gibt es eine Möglichkeit, die Firmware zum Flashen zu brennen, aber zu vermeiden, dass das EEPROM gelöscht wird (mit avrdude )?

Einer antworten:
x4mer
2014-02-06 19:59:31 UTC
view on stackexchange narkive permalink

Bevor Sie eine Atmel AVR-MCU erneut flashen, müssen Sie sie löschen. Die Löschprozedur löscht standardmäßig FLASH-, EEPROM- und Sperrbits. Es gibt zwei Möglichkeiten, um Ihr Problem zu lösen:

  1. EEPROM lesen, alle löschen, alle einschließlich Ihres gesicherten EEPROM programmieren.
  2. Setzen Sie das EESAVE-Sicherungsbit. In diesem Fall wird das EEPROM während des Löschvorgangs nicht gelöscht. Sie müssen dieses Flag jedoch einige Tage später löschen, wenn Sie das EEPROM löschen und / oder erneut flashen möchten.
  3. ol>
Dieses Problem ist nicht spezifisch für avrdude, sondern für alle Atmel AVR MCU-Programmierer.
Wenn ich also jemals die eeprom-Werte aus der laufenden Anwendung aktualisieren muss, indem ich beispielsweise die Funktion "eeprom_update_byte" verwende, kann ich die EESAVE-Sicherung nicht setzen?
Die EESAVE-Sicherung bezieht sich nur auf die externe MCU-Programmierung. Ihr Code ist in keiner Weise betroffen. Schreiben Sie alles, was Sie möchten, in das EEPROM.
Nur ein nützliches Update: Ich habe es gerade getestet und wenn die EESAVE-Sicherung eingestellt ist, bleibt das EEPROM in einem Flash-Lösch- / Programm erhalten, aber es hindert Sie auch nicht daran, eine neue EEPROM-Datei zu brennen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...