Hallo zusammen,
ich suche nach einer Möglichkeit eine Konstante bzw. Variable direkt im C-Code (Notfalls auch im Linkerscript) an eine bestimmte Flashadresse zu speichern. Zum einen soll in alle Codes immer an der selben Flashadresse eine Seriennummer stehen und zum Anderen eine 32Bit Zahl ganz am Ende des Flashspeichers. Die "Prüfzahl" soll später vom Bootloader ausgelesen werden um sicherzustellen, dass bei einer Stromunterbrechung wären einem Update die Firmware komplett bis zum Ende geschrieben wurde.
Wer hat eine Idee, wie sich dies einfach und schnell im C-Code umsetzen läßt? Ich denke mit (void *) checksum = FLASHEND-32; Lässt sich Adresse der Variable setzen und später auslesen. Aber wie schreibe ich den Inhalt beim Compiling (oder Linking) direkt an diese Adresse? Kann ich dem Compiler irgendwie mitteilen, an welcher Stelle im Flash diese Prüfzahl mit einem bestimmten Wert geschrieben werden soll?
Noch eine Frage am Rande: Wo kann ich die max. Flashgröße in AVR Studio begrenzen? Sprich, dass er eine Fehlermeldung abgibt, wenn die Flashgröße - meinem Limit überschritten wird? Was passiert eigentlich mit den unbeschrieben Pages im mC? Bleiben diese beim AVR ATmega dann einfach auf dem alten Stand?

