Gast
#1236406
Hallo, ich glaube ich denke momentan in die flasche Richtung. Im Datenblatt eines AVR ist z.B. angegeben Boot Size:128 words Pages: 2 Application Flash Section: 0x0000 - 0x1F7F Boot Flash Section: 0x1F80 - 0x1FFF Des weiteren ist eine Gesamtzahl an Pages von 128 Pages angegeben. Das Device hat 16k. Wenn ich mir nun die Page-Size ausrechnen will, dann rechne ich 16 kB * 1024 / 128 = 128 Byte Schaue ich mir allerding die Adressen an, dann rechne ich (0x1FFF - 0x1F80 + 1) = 0x80 = 128 (words???) # Habe ich hier einen fehler gemacht? # Laut DB hat die Boot Section 128 words = 256 byte Ich will im Flash ein Array anlegen, das genau eine Page gross ist. Dazu muesste ich meinen Fehler kennen. Ich Versuche gerade folgendes. .bootloader=0x1F80 .config=0x1F40 (.bootloader - 0x40, da Laut DB 0x1F80 - 0x1FFF = 128 words = 2 pages = 0x80 => 1 page = 0x40 ) void test () _attribute_ ((section (".bootloader"))); volatile uint8_t abc[128] _attribute_ ((section (".config"))) = {0x00,} Leider schlaegt der Linker hier Alarm, muss ich die Adressen in AVRGCC verdoppeln oder wo liegt mein Fehler? Danke. mfg Alex