Forum: Mikrocontroller und Digitale Elektronik Verstaendnisproblem: AVR PAGE SIZE


von Alex (Gast)


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

von Alex (Gast)


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

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
Noch kein Account? Hier anmelden.