Hallo, Wie sind Eeprom Zugriffe sowohl vom Bootloader als auch vom Hauptprogramm auf eine Variable am Besten zu realisieren? Momentan arbeite ich mit Sections für jede Variable, gleichzusetzen mit direkter Adressierung.
Nur so ne blöde Idee: Speichere deinen Variablennamen und deren Wert als Text im EEPROM. "Var1=1234\n" Danach können Bootloader und Applikation dann suchen und entprechend den Wert extrahieren oder ändern.
Es geht holger schrieb: > Nur so ne blöde Idee: > > Speichere deinen Variablennamen und deren Wert als Text im EEPROM. > > "Var1=1234\n" > > Danach können Bootloader und Applikation dann suchen und > entprechend den Wert extrahieren oder ändern. Es geht um Binärdaten, leider nicht zu gebrauchen.
Ist das dein Ernst? ^^ Irgendwie lassen sich alle Daten, die du irgendwo nutzt, auf "Binärdaten" zurückführen. Wie soll der PC damit auch sonst was anfangen...
jz schrieb: > Ist das dein Ernst? ^^ > Irgendwie lassen sich alle Daten, die du irgendwo nutzt, auf > "Binärdaten" zurückführen. Wie soll der PC damit auch sonst was > anfangen... Trotzdem ist es nicht Sinnvoll Daten als "Klartext" in den Eeprom zu schreiben. Was ich zum Ausdruck bringen wollte ist, dass das Terminierungszeichen wegfällt. Auf die Effizienz gehe ich erst gar nicht ein ^^
Manuel H. schrieb: > Wie sind Eeprom Zugriffe sowohl vom Bootloader als auch vom > Hauptprogramm auf eine Variable am Besten zu realisieren? Array.
>Trotzdem ist es nicht Sinnvoll Daten als "Klartext" in den Eeprom zu >schreiben. Was ich zum Ausdruck bringen wollte ist, dass das >Terminierungszeichen wegfällt. Auf die Effizienz gehe ich erst gar nicht >ein ^^ Nur weil es dir nicht gefällt ist es nicht sinnlos. Es ist ein gangbarer Weg der viel flexibler ist als deine Sections. Von Effizienz war nicht die Rede. Also beschwer dich nicht;)
Manuel H. schrieb: > Wie sind Eeprom Zugriffe sowohl vom Bootloader als auch vom > Hauptprogramm auf eine Variable am Besten zu realisieren? Und wenn du nicht mit Array arbeiten willst... Variablen werden so ins Eeprom geschrieben, wie sie deklariert werden. Wenn Bootloader und Hauptprogramm zusammen kompiliert werden: Eine Deklaration genügt. Wenn Bootloader und Hauptprogramm getrennt kompiliert werden: Deklaration copy & paste.
> Wenn Bootloader und Hauptprogramm getrennt kompiliert werden: > Deklaration copy & paste. Nein, eine C Datei wo der ganze Kram drin steht und diese in beiden Projekten hinzufügen.
holger schrieb: > Nein, eine C Datei wo der ganze Kram drin steht und > diese in beiden Projekten hinzufügen. Oder so.
Vorschlag: TLV: Tag-Length-Value Tag: uint32 bzw 4 Byte Parametername, zB als FOURCC, zB 'Vers' siehe auch http://www.fourcc.org
1 | #define MAKEFOURCC(ch0, ch1, ch2, ch3) \ |
2 | ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \ |
3 | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 )); |
4 | |
5 | ulTag=MAKEFOURCC('V','e','r','s');
|
Length: uint32 Länge des nachfolgenden Datenbereiches in Bytes Value: binäre Daten, auf eine durch 4 teilbare Länge aufgefüllt Danach kommt das nächste TLV-Tupel. Endeerkennung: entweder enthält das erste TLV-Tupel die restlichen TLVs als Value, dann steht in dessen Length-Feld die Datenlänge (so macht es das WAV oder RIFF oder IFF-Dateiformat) oder das letzte TLV-Tupel enthält eine Länge von 0 Bytes Dieses Schema wird öfters verwendet. fchk
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.