Hallo,
ich programmiere gerade einen Bootloader für einen ATmega128 und 
verwende zusätzlich ein Statusbyte, das im Flash abgespeichert wird. 
Dieses soll wenn möglich an letzter Stelle im Flash - beim mega128 also 
an 0x1FFFF - stehen.
Doch wie kann ich das dem GCC sagen?
Wenn ich
| 1 | uint8_t PROGMEM status = 0x10;
 | 
schreibe, dann weiß ich ja nicht exakt wo das Byte abgelegt wird. Da ich 
dieses Byte wieder verändern muss (nach jedem neuem Flashen der 
Hauptapplikation), weiß ich jetzt nicht welche Page in der 
Bootloadersection selbst ich neu beschreiben muss. Bei der letzten 
Adresse im Flash hab ich das Problem nicht, da lies ich einfach immer 
die letzte Page aus, verändere mein Statusbyte und schreibe die Page 
neu.
In Assembler würde ich das Statusbyte einfach so ablegen:
| 1 | .org FLASHSIZE/2
 | 
| 2 | status: .db 0x10
 | 
Geht das auch irgendwie in C? Was passiert wenn ich das so in Inline 
Assembler hinschreibe?
Was allgemeines: in der pgmspace.h wird empfohlen, Daten im Flash 
generell in unteren 64k abzulegen. Kann mir jemand sagen warum? Ich kann 
es ja nicht beeinflussen, wenn ich
uint8_t PROGMEM status = 0x10;
schreibe, wo der GCC dieses Byte ablegt oder?
mfg Stefan