EEPROM Speicherlayout

#295746
Lesenswert?

Hallo Leute,

ich suche einen Editor für Speicherlayouts.
Ein Programm, dass mir eine Variablenliste und das spätere
Speicherlayout anzeigt. Ähnlich der Anzeige vom Defragmentiertool in
Windows.
Es wäre super, wenn ich mit dem Tool auch gleichzeitig noch eine
Dokumentausgabe in Form von HTML oder Exel-Datei machen kann.

Genauer will ich damit mein EEPROM verwalten. Ich möchte sehen, wo ein
Wert/Variable liegt, wieviel Speicher sie einnimmt, und wieviel Platz
ich drumherum im EEPROM noch habe um vielleicht noch eine Variable
dazwischen zu schieben.

Ich suche jetzt shcon seit einigen Tagen danach. Habe aber noch nichts
gefunden.
Vielleicht könnt ihr mir helfen ... wäre echt super!

Vielen Dank!

Sebastian
Gast #295749
Lesenswert?

@Sebastian Barth

in einem MAP - Datei werden in der Regel alle vorhandenen
Symbole (also Variablen genauso wie Funktionen oder const)
als Tabelle geschrieben.

Dort gibt es ziemlich sicher auch eine Kennung wo die Variable/Funktion
liegt (RAM/PROGRAMM/EEPROM) sowie die Anfangsadressen und Längenangabe

Dort steht also alles drin was du haben willst (nur nicht als Grafik
sondern als Tabelle)

Jeder Compiler/Assembler/Linker kann so ein Adress-Mappng erzeugen

Wenn du es dann unbedingt graphisch haben willst dann ist
Eigeninitiative angebracht ((Sprich selbst Programmieren), da
das Format der Map-Datei nicht normiert ist (jeder kocht da sein
eigenes Süppchen).

Als Beispiel mal einen Auschnitt eines MAP-Files (sieht bei dir
ziemlöich sicher anders aus):

03BC78H cDefaultSerparText               VAR   ---  FCONST ?FC?SER
03B05CH cErrorText                       VAR   ---  FCONST ?FC?KBDUTIL
008000H cHILFEText                       VAR   ---  FDATA  ?FD?HILFE
03AC4EH cpDefaultBaudText                VAR   ---  FCONST ?FC?HILFE
03BC7CH cpDefaultSerbaudText             VAR   ---  FCONST ?FC?SER

es gibt hier also 4 Variablen di in einem Konstanten (Flash)
Speicherbereich abgelegt werden (FCONST) und eine Variable die im RAM
liegt (FDATA)

Gruss
Gast #295753
Lesenswert?

Wenn es darum geht, Programmparameter im EEPROM zu speichern, dann gibt
es auch einen anderen Weg, der etwas weniger nach 5-Jahresplänen
riecht:

Den Speicher, ob nun Controller-EEPROM, externes EEPROM oder RAM von
8583 als Datenstrom betrachtet, in dem jeder Parameter ein Record aus
(ID, Wert, CRC) darstellt.

Beim Start wird das Ding von vorne bis hinten durchsucht und die Werte
in die assoziierten RAM-Variablen geholt. Bei Änderungen geht's dieser
eine Wert zurück ins EEPROM, ggf. angehängt wenn noch nicht drin.

Reorganisation ist trivial: Komplett löschen und neu mit den Werten aus
dem RAM schreiben.
Persönliche Seite #295754
Lesenswert?

Hi

wozu den Aufwand? Ich leg meine Variablen (beim GCC) in der
entsprechenden Sektion an und lass den Linker entscheiden was wo
landet. Dann lese ich beim Programmstart einfach den Inhalt mit
eeprom_read_$DATATYPE(&nameOfVariable) aus und schreibe in bei Bedarf
mit eeprom_write_$DATATYPE(&nameOfVariable, value) wieder zurück. Das
wars. Andere Compiler werden ähnliche Möglichkeiten bieten, evtl. sogar
besser abstrahiert.

Matthias
Gast #295757
Lesenswert?

naja wenn ich einen struct mache sollte doch das layout des strukts
gleich bleiben (solang ich den strukt nicht ändere.... )

wenn ich also weis wo meine daten liegen kann ich auch nach dem update
drauf zugreifen.. ich schreib in  das 1. byte im eeprom immer die
struct-version... nach dem reset wird bei mir dann immer geschaut ob
die version mit der aktuellen übereinstimmt und gegebenenfalls wird
convertiert...

ich sehe also kein prob....

und wenn die daten im flash herumgurken sollen müsste man ja eigentlich
eine section einführen können die dann immer ihren platz hat und da wird
reingepinselt.. nur beim update wird dann immer alles überschrieben...
darum nehm ich im falle eines avrs immer den eeprom zum datenablegen
;)

73

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