Gibt es eine Möglichkeit, in C einen string an eine feste Adresse (flash) zu legen? Geht um den Mega8, Compiler CodeVision. Ein PC-Programm soll den Versionsstand einer Hex-Datei einlesen können, um zu ermitteln, ob ein update des angeschlossenen Controllers nötig ist. Also Controller meldet auf Anfrage seine derzeitige Softwareversion, Vergleich mit einer Datei, dann evtl. update. Würde mir die Sache sehr erleichtern, wenn die Version in der Hex-Datei auf einer festen Adresse steht. Ab 0x0c00 beginnt der bootloader, ideal wäre also als Startadresse 0x0bf8 flash char version[]="V1.02"; geht das irgendwie?
>Gibt es eine Möglichkeit, in C einen string an eine feste Adresse >(flash) zu legen? Mit Krampf geht sowas immer. Ist aber nicht sinnvoll. >Ein PC-Programm soll den Versionsstand einer Hex-Datei einlesen können, >um zu ermitteln, ob ein update des angeschlossenen Controllers nötig >ist. >flash char version[]="V1.02"; Leg den String doch an den Anfang vom EEProm. Dann liest du ihn aus der *.eep Datei aus. Das ist mit Sicherheit einfacher.
Direkt nach den Interrupt-Vektoren kann doch auch ohne Krampf etwas untergebracht werden. Bei gleichem Controller ist das dann auch immer die gleiche Adresse.
Ansonsten versehe doch deinen Versions-String mit einer eindeutigen Präambel und greppe in deinem PC-Programm danach. FWVERSION=1.03
tja, das hilft mir nicht unbedingt weiter. EEprom fällt aus, da nur 1 file im update-Fall verschickt werden soll. Direkt nach den Vektoren gefällt mir auch nicht so richtig, da ich es schon erlebt habe, dass nach Compilerupdates da durchaus Änderungen eintreten können (nicht benötigte Vektoren werden komplett weggelassen, ein reti hingesetzt oder auch ein jmp0), das mag heute kein Problem sein - in einem Jahr denkt da keiner mehr dran :-) Mit Präambel geht es sicher ausreichend sicher, aber wie sähe die "Krampf"Lösung einer festen Adresse aus?
Was spricht denn dagegen einfach die HEX Datei um eine Zeile zu erweitern? Wenn das Programm feststellt, dass ein Update sinnvoll ist, dann kannst du die ergänzte Zeile ja vom PC Programm vor dem Brennen wieder entfernen lassen. Evtl stört sich die "einlesende" SW ja auch nicht dran. wenn du ganz hinten an die Datei was anhängst, dann must du es nichtmal entfernen. Musst'e halt mal ausprobieren. Und dann gibts da noch den guten alten Dateinamen. Also die Version in den Dateinamen der hexdatei verschlüsseln und ab damit. Viel Glück Remo
Tja, Dateiname - das ist auch ne Möglichkeit. Muss aber auch händisch gepflegt werden... Werde es erst mal damit machen.
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.