mikrocontroller.net

Forum: PC-Programmierung EEPROM Speicherlayout


Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht nimmst Du einfach das .map-File?

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oO?

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

Sebastian

Autor: T. Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebastian:

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

Ralf

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.