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
oO? Tut mir Leid, .. mit deiner Aussage kann ich leider rein garnichts anfangen! welche *.map File? Sebastian
@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
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
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
@Sebastian: Kann es sein, dass DU vorgeben möchtest, wo welche Variablen im EEPROM liegen? Ralf
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.
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
...und hast damit mit jeder Programmversion andere Adressen. Wenn das nicht stört, ist das natürlich der einfachste Weg.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.