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
Oder anders gefragt, gehe ich richtig in der Annahme, dass Atmel sich im Datenblatt auf WORD Adressen bezieht und ich mit Byte Adressen rechne? Falls ja, muesst ich die Adressen aus dem Datenblatt schlicht weg verdoppeln. Danke. mfg Alex
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.