Forum: PC-Programmierung EEPROM Speicherlayout


von Sebastian B. (lufti)


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

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Vielleicht nimmst Du einfach das .map-File?

von Sebastian B. (lufti)


Lesenswert?

oO?

Tut mir Leid, .. mit deiner Aussage kann ich leider rein garnichts
anfangen!
welche *.map File?

Sebastian

von T. Stütz (Gast)


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

von Sebastian B. (lufti)


Lesenswert?

Danke!

Ich brauche aber ein Programm um das EEPROM im Voraus zu planen! Ohne
einen Assembler zu benutzen!

Sozusagen, die Spezifikation schreiben!

Ich hoffe da gibt es etwas!

Sebastian

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

was willst du da vorher planen? Du mußt wissen wieviel EEPROM du
brauchst und einen entsprechenden Controller bzw. ein externes EEPROM
vorsehen. Alles andere (Adressvergabe) läßt du den Linker machen.

Matthias

von Ralf (Gast)


Lesenswert?

@Sebastian:

Kann es sein, dass DU vorgeben möchtest, wo welche Variablen im
EEPROM liegen?

Ralf

von A.K. (Gast)


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.

von Μαtthias W. (matthias) Benutzerseite


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

von A.K. (Gast)


Lesenswert?

...und hast damit mit jeder Programmversion andere Adressen. Wenn das
nicht stört, ist das natürlich der einfachste Weg.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

OK. Punkt für dich :-) Wenn der Inhalt des EEPROMs über ein
Softwareupdate erhalten bleiben muss ist deine Methode natürlich eine
Möglichkeit (neben dem händischen festlegen von Adressen, was aber
weniger toll ist)

Ich hab das bisher immer so lösen können das bei einem Update das
EEPROM neu initialisiert wird.

Matthias

von Hans (Gast)


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

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.