Verstaendnisproblem: AVR PAGE SIZE

Gast #1236406
Lesenswert?

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
Gast #1236459
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren