Harvard-Architektur und dieser Offset von 0x800000

Gast #1150674
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? :)
#1150893
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
#1150918
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).

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