Forum: Mikrocontroller und Digitale Elektronik ARM Speicherbelegung


von hans (Gast)


Lesenswert?

Hallo und einen guten Tag zusammen,

in einem Datenblatt eines ARM MIkrocontrollers steht folgendes 
geschrieben.
(S.34)

http://www.analog.com/en/analog-microcontrollers/ADUC7021/products/product.html#quicklinks

"The total 64 kB of Flash/EE memory is organized as 32 k × 16 bits"

Das beudeutet meiner Meinung nach, dass ich maximal mit 0x8000 also mit 
einem 32k ADressbereich auskomme. An jeder Adresse ist ja demnach 16 
bit, also 2 Byte hinterlegt.

Warum steht dann auf der gleichen Seite (Abb. 34), dass dieser 
Speicherbereich von 0x00080000 bis 0x0008FFFF geht ? Dies würde ja einem 
Adressbereich von 64k entsprechen. Dann dürfte aber dort nur an jeder 
Adresse 8 bit (1Byte) hinterlegt werden ?
Wieso gibt es dort einen Widerspruch ?

Vielen Dank für die Aufklärung

Mfg hans

von (prx) A. K. (prx)


Lesenswert?

ARM adressiert Bytes.

Mit dem Satz ist die interne Organisation vom Flash-ROM gemeint, d.h. 
pro Zugriff liefert das Flash-ROM 16 Bits. Für in 32 Bits codierten 
nativen ARM Code sind also 2 Zugriffe erforderlich. Mit der Adressierung 
hat das aber nichts zu tun.

von hans (Gast)


Lesenswert?

mhhh.. ich glaube ich meine etwas anderes !

nach Abbildung 34 wäre die Speicherplatzbreite nur 8bit.
(wegen 64k Adresseen von 0x00080000 bis 0x0008FFFF)

Nach dem Text rechts mit der Überschrift FLASH/EE MEMORY, ist der 
Speicher ja irgendwie anders organisiert...

"The total 64 kB of Flash/EE memory is organized as 32 k × 16 bits"

besitzt ja anscheinend eine Breite von 16 bit ????

Wie kann das sein ?

VIelen Dank für die HIlfe

mfg hans

von (prx) A. K. (prx)


Lesenswert?

Habe die Doku nicht parat, kenne aber ARM. Und der adressiert Bytes, 
also bei little endian:

0x00080000 1. Byte, untere Hälfte von 1. 16bit Halbwort
0x00080001 2. Byte,  obere Hälfte von 1. 16bit Halbwort
0x00080002 3. Byte, untere Hälfte von 2. 16bit Halbwort

Und dies ist völlig unabhängig davon, ob das Flash-Array pro Zugriff 16 
Bits liefert (ADuC7000) oder 32 Bits (AT91) oder 128 Bits (LPC2000).

Letztlich heisst es, dass auf den ADuC7000ern Thumb-Code garantiert 
schneller ist als ARM-Code, weil letzterer 2 Flash-Zyklen pro Befehl 
allein für's abholen vom Befehl braucht.

von (prx) A. K. (prx)


Lesenswert?

S.34: Die linke Seite beschreibt die logische Sicht der Dinge, d.h. die 
Adressierung aus Sicht des Programmierers. Die rechte Seite beschreibt 
die physikalische Sicht, d.h. den internen Aufbau des Chips. Das eine 
hat mit dem anderen nichts zu tun, der interne Aufbau hat allerdings 
Einfluss auf die Performance.

von hans (Gast)


Lesenswert?

aha...ok

ich habe es nun verstanden.

Vielen Dank für deine Hilfe

mfg hans

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.