[AVRStudio]Flash löschen aber nicht EEPROM

Nomis3000

Neues Mitglied
29. Apr. 2008
415
0
0
Sprachen
Hallo Leute.

Ich hab da gerade ein kleines Problem weil ich Einstellungen im EERPOM gespeichert habe aber ich die Software, welche diese Einstellungen benötigt, noch nicht fertig habe. Es ist im Moment so dass ich die Einstellungen über den PC vornehme, aber diese beim Laden eines neuen Programmes in den Flash gelöscht werden.
Also muss ich jedes Mal wenn ich eine kleine Änderung am Programm testen will wieder alles neu einstellen. ->nicht nett

Weiß einer von euch wie man einen AVR flascht ohne den EEPROM zu löschen?
(Ja ich weiß! Ich könnte auch den EEPROM einmal abspeichern und jedes Mal neu reinladen, aber das wär auch umständlich)
 
Hi Nomis,

Weiß einer von euch wie man einen AVR flascht ohne den EEPROM zu löschen?
(Ja ich weiß! Ich könnte auch den EEPROM einmal abspeichern und jedes Mal neu reinladen, aber das wär auch umständlich)
schalt doch einfach das "Erase" vor jedem Prog-Vorgang aus. Ich mach auch
nicht jedes mal einen Erase vom gesamten Chip. Bei mir hab ich nur
Programm und anschließendes Verify aktiviert.

Gruß
Dino
 
Hallo Nomis,

vor dem Programmieren des Flash- und/oder Eeprom-Speichers muss der entsprechende Speicher gelöscht werden. Via SPI oder JTAG wird dafür das Kommando ChipErase gesendet, es werden hierdurch alle Speicherstellen von Flash und Eeprom auf 0xFF gesetzt.

Die einfachste Lösung wäre wirklich, wenn du einmalig den Inhalt des initialisierten Eeprom-Speichers liest und jedesmal programmierst.

Alternativ könntest du dir einen Bootloader schreiben, der die Flash-Pages im Applikationsbereich löscht (SPM Instruction), nur das ist halt mit ein bisschen Arbeit verbunden ;)

Also ich würde Eeprom auslesen und immer nach dem Flash programmieren.

Grüße,
Dirk
 
Hi Dino.

Soweit ich weiß funktioniert das nicht, weil man den Flash zwar schnell beschreiben aber nur sektorweise löschen kann. Also muss man das Ding löschen. Die Frage ist nur wie ich das Teil löschen kann ohne den Inhalt des EEPROMs zu vernichten.

Edit: Oh Dirk war schneller.
 
Leider hab ich im Moment keinen Progger dran. Darum kann ich auch nicht in
den Einstellungen rumsuchen. Aber meiner Meinung nach kann man das Flash
und das EEPROM getrennt programmieren UND auch getrennt löschen. Sollte
also kein Thema sein. Man kann aber einstellen, daß bei einem Programmiervorgang
vorher der GESAMTE Chip gelöscht wird. Also Flash, EEPROM und alles andere
(evtl auch die Fuses). Also ein All-Erase oder Erase All oder wie man das nennen
soll was dann vor jedem Programmiervorgang gemacht wird.

Ich kann ja heute abend mal nachsehen, wenn ich den Progger am Lappi habe.

Gruß
Dino
 
Soweit mir bekannt ist, benötigt man bei der Programmierung des Eeprom über SPI oder JTAG zuvor ChipErase nicht, da beim Eeprom immer automatisch ein Erase (setzen auf 0xFF) der Speicherstelle erfolgt. Beim Flash ist das anders, es können hier nur Bits aktiv gelöscht ("0"=programmiert), nicht aber gesetzt ("1"=nicht programmiert) werden. Wenn der Flash-Inhalt zuvor nicht definiert ist und der Flash-Speicher auch programmierte Bits im Bereich der Applikation enthält, kann es zum Verify-Fehler kommen.

Gruß,
Dirk
 
Hallo zusammen,

soweit ich mich erinner kann gibt es da doch die Fuse EESAVE. Beim Mega128 ist es Bit 3 im Fuse High Byte. Damit kann ich verhindern, dass beim Chip Erase das EEPROM mit gelöscht wird. 1 bedeutet nicht programmiert und damit ist das EEPROM nicht geschützt. Mit 0 sollte das EEPROM gegen löschen geschützt sein.

Grüße,
Markus
 
Hallo Markus.

Danke! Genau das hab ich gesucht.
(Das ich Esel nicht schon früher daran gedacht habe):banghead:
 
Hi Simon,

gerne! :dirol:

Grüßle,
Markus

PS: Wie man an meiner - gemessen an den letzten 3-4 Wochen - überproportionalen Beteiligung sehen kann, bin ich aus dem Urlaub wieder urück und online ;)
 
Und der entgültigge Test ...

Es ist tatsächlich so, das beim Proggen vom Flash das EEPROM mit gelöscht
wird. Schade :eek: Ich habs mit dem AVRISPmk2 mit nem Mega8515 getestet.
Ich hab alles mögliche noch an Einstellungen probiert aber es half nix. Ich
hab auch noch mal das Datenblatt angesehen. Da stand für den seriellen
Programmiermodus, daß die Daten Page-weise in das Flash geschrieben werden.
Hätte ja sein können, das ähnlich wie im Selbstprogrammier-Modus (Bootloader)
vorher die Page gelöscht und dann programmiert wird. Aber wohl leider doch
nicht. Aber beim Bootloader wird doch auch nicht der gesamte Speicherinhalt
über den Haufen geschmissen ... :confused:
Naja , egal . Getestet und es ist so. Da half das ganze rumclicken nix :rolleyes:

Hilft wohl nur Markus sein Tip mit dem EEPROM-Lock oder man sichert vorher
den EEPROM-Inhalt und läßt beim Auto-Prog dann neben dem Flash jedes mal
das EEPROM mit programmieren. Aber Markus seine Methode ist wohl
einfacher ;) :cool:

Ach ja, noch eingefallen ... Im Datenblatt steht, das beim Erase Chip auch
die Lock-Bits mit verschwinden (gelöscht werden) ;) nur die Fuses bleiben
erhalten.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)