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


von Sepp (Gast)


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? :)

von Reinhard B. (brainstorm)


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

von (prx) A. K. (prx)


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).

von Sepp (Gast)


Lesenswert?

Aha

Danke!

von Michael U. (amiga)


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

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.