mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM Speicherbelegung


Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/A...

"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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha...ok

ich habe es nun verstanden.

Vielen Dank für deine Hilfe

mfg hans

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.