Hintergrund: das ganze ist ein updatefähiges Gerät (mit AVRootloader). Beim Brennen des Bootladers möchte ich gern auch gleich die aktuelle Anwendungssoftware mit draufbraten, klappt auch, allerdings gibts dann ein Problem mit der Versionsnummer. In meiner Version (Mega8, Bootlader ab 0x1c00) steht die Versionsnummer auf 0x0dfe und 0x0dff, also 4 Byte. Solange man die Sache mit dem Bootlader macht, ist das auch ganz easy. Also ich brauch sowas: #asm .cseg .org 0x0dfe .db 1,2,3,4 #endasm allerdings in einem C-Programm Ja, man könnte das Hex-File zu Fuss bearbeiten (so ist es im moment auch :-) Schöner und weniger fehleranfällig wäre es, das direkt im C-Programm zu machen. Irgendwelche Ideen?
Das gab es bestimmt schon 100 mal: http://www.mikrocontroller.net/search?query=variable+feste+adresse&forums[]=1&forums[]=19&forums[]=9&forums[]=10&forums[]=2&forums[]=4&forums[]=3&forums[]=6&forums[]=17&forums[]=11&forums[]=8&forums[]=14&forums[]=12&forums[]=7&forums[]=5&forums[]=18&forums[]=15&forums[]=13&forums[]=16&max_age=-&sort_by_date=0
Ganz so einfach geht es nicht, da es sich hier um den Flash-Speicher handelt. Da musst du mit Sections arbeiten.
Genau, der flash ist das Problem, eine einfache Lösung scheint es dafür nicht zu geben. Eh ich mich durch unbekanntes Terrain wühle (und mir womöglich irgendwelche Fallstricke einbaue), werde ich die Versionsverwaltung doch dem Bootlader überlassen bzw. nur dort einstellen. Nach erfolgtem update an meinem Testgerät Chip auslesen und das Hex-file zum Bestücker schicken.
Nicht aufgeben. Schau mal in die avr-libc. Da gibts sogar was dazu: http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_binarydata EDIT: Noch mal nachgedacht: Das geht doch viel einfacher. Einfach eine statische/globale Variable mit PROGMEM anlegen und initialisieren. Aber die Variable muss dann trotzdem per section angeordnet werden.
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.