mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Harvard-Architektur und dieser Offset von 0x800000


Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab echt versucht das ganze zu googeln, aber mir ist immer noch 
nicht klar warum ich z.B. zu SRAM Adressen 0x800000 dazu addieren muss. 
Ich weiß nur, dass es an der Harvardarchitektur liegt, aber mehr schon 
auch nicht.
Kann mir das einer erklären, oder einen erklärenden Link spendieren? :)

Autor: Reinhard B. (brainstorm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Offset, den du addieren musst, ist vom Systemaufbau abhängig. 
Genausogut kann das SRAM bei 0x000000 liegen und (z. B.) der Flash bei 
0x100000.

Was hier geschieht, nennt sich Address-Mapping. Intern wird das SRAM und 
der Flash dann auch ganz normal von 0x0000 beginnend adressiert. Die 
zusätzlichen "oberen" Bits bei der Adressierung (z. B. 0x80 in 0x800000) 
erlauben es aber, über einen Dekoder (einfache kombinatorische Logig) 
einen bestimmten Speicherbaustein zu selektieren. So wird z. B. bei 
einer Adresse, die mit 0x00 beginnt der Flash angesprochen und bei einer 
Adresse beginnend mit 0x80 das SRAM.

Übrigens hat das nach meiner Auffassung aber nichts mit Harvard/von 
Neumann zu tun.

mfg
Reinhard

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Harvard hat das insofern zu tun, als die GCC binutils traditionell 
von einer Von-Neumann-Architektur mit einem einzelnen Gesamtadressraum 
ausgehen. Da dies auf AVR nicht zutrifft, werden die 3 Adressräume für 
ROM,RAM,EEPROM willkürlich an 3 verschiedenen Stellen in einem 
erfundenen Gesamtadressraum plaziert.

Zu einem Problem kann es also kommen, wenn die AVRs irgendwann mehr als 
2GB ROM enthalten (ATgiga44 oder so).

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha

Danke!

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

A. K. wrote:

> Zu einem Problem kann es also kommen, wenn die AVRs irgendwann mehr als
> 2GB ROM enthalten (ATgiga44 oder so).

wenn schon dann 4GB, mit 2GB wäre es ein ATgiga24... ;-)

Gruß aus Berlin
Michael

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.