Wenn ein Mikrocontroller über einen 16-Bit-Adressraum von 0000H bis FFFFH verfügt, teilen sich RAM, E / A-Register, speicherabgebildete E / A und ROM (Flash / EEPROM) linear denselben Adressraum oder gibt es einen separaten Adressraum für ROM allein (wie ein weiteres 0000H bis 1FFFH), oder ist es herstellerabhängig?
Ich schätze, ich habe viele Dokumente gelesen und mich darin verirrt. Bitte helfen Sie.
Das ist in der Tat der Hauptunterschied zwischen "von Neumann"- und "Harvard"-Architekturen. Der erste verwendet einen einzigen Adressraum für alles, während der letztere separate Adressräume für Anweisungen (normalerweise ROM) und Daten (normalerweise RAM) hat.
Sie können Mikrocontroller mit beiden Architekturen erhalten. Einige implementieren eine Mischung aus beidem.
Dave hat bereits die Unterschiede zwischen Harvard- und von-Neumann- Architekturen erwähnt.
Ein Beispiel für eine von Neumann-Architektur, bei der es nur einen Adressraum für RAM, Flash, I/O und EEPROM gibt, ist die HCS08-Familie von Freescale. Hier ist die Speicherkarte eines seiner Mikrocontroller mit 128 KB Flash und 4 KB RAM:
Beachten Sie, dass sich in dieser Abbildung die Speicheradresse 0 oben befindet. Es ist auch nicht maßstabsgetreu; die Adresse 0x8000 (32K-Grenze) sollte genau in der Mitte liegen.
Dieser Mikrocontroller hat eine direkte Seite (manchmal Seite 0 genannt), dh 256 Adressen, auf die mit nur einer 8-Bit-Adresse zugegriffen werden kann (was die Größe des Befehls um ein Byte reduziert). Die ersten 128 Stellen, 0x0000 bis 0x007F, werden verwendet, um E/A-Register abzubilden. Darauf folgen die 5 KB RAM, von Adresse 0x0080 bis 0x17FF. Dadurch befinden sich auch die ersten 128 Bytes RAM auf Seite 0. Es folgen 256 zusätzliche Adressen, die für zusätzliche I/O-Register bei 0x1800 bis 0x18FF reserviert sind, dann mehr RAM, dann das erste Segment von Flash, dann 2K EEPROM .
Dann zusätzliche Seiten von Flash. Beachten Sie, dass sie auch Seitenzahlen haben (PPAGE). Erinnern Sie sich, dass ich sagte, dass dieser Mikrocontroller 128K Flash hat? Wie passen Sie das in 64 KB Adressraum ein? Durch die Verwendung von Seitenadressierung. Es gibt ein "Paging-Fenster" bei 0x8000 bis 0xBFFF (16K), in dem eine von acht 16K-Seiten von Flash (insgesamt 128K) abgebildet werden kann. Welches wird durch ein Paging-Register gesteuert. Wenn der Compiler Sprünge oder Subroutinenaufrufe generiert, weiß er, dass er das Paging-Register nach Bedarf aktualisieren muss.
Einige der Pages können auch direkt adressiert werden (PPAGES 0, 1 und 3), ohne das Paging-Register zu verwenden. Dies wird für Dinge wie Interrupt-Handler benötigt, die jederzeit auftreten können. Gängige Subroutinen wie die C-Bibliothek sind ebenfalls gute Kandidaten für diese Seiten.
Nicht gezeigt sind die Reset- und Interrupt-Vektoren, die am Anfang des Speichers (0xFFFF) beginnen und nach unten gehen.
Maschinen mit reiner Harvard-Architektur haben viel einfachere Schemata, es gibt einen Adressraum für Flash, der bei 0x0000 beginnt, einen anderen für RAM, der ebenfalls bei 0x0000 beginnt, und noch einen für I/O-Ports, der bei 0x0000 beginnt (manchmal werden RAM und I/O in der denselben Speicherplatz, bekannt als speicherabgebildete E/A). Wenn E/A-Ports verwendet werden, kann auf sie über spezielle Anweisungen wie IN und OUT zugegriffen werden.
Da es sich um separate Räume handelt, können sie unterschiedliche Breiten haben. Der Mikrocontroller PIC16 von Microchip beispielsweise hat eine Befehlsbreite von 14 Bit und 8 Bit RAM und I/O-Busse.
Was ist der Vorteil von jedem? Nun, mit einer Harvard-Architektur können Sie 64 KB Programmspeicherplatz, 64 KB RAM-Speicherplatz und 64 KB E/A-Speicherplatz haben, die alle 16-Bit-Adressen verwenden. Es ist also gut für 8- und 16-Bit-Mikrocontroller geeignet. Da sich das Programm in Flash befindet, kann es nicht geändert werden.
Mit von Neumann-Architekturen können Sie Programme entweder aus Flash (oder ROM) und RAM ausführen. So funktionieren PCs: Wenn sie zum ersten Mal gestartet werden, booten sie mit einem BIOS-ROM (Basic Input/Output System), das das Betriebssystem von einer Festplatte liest und in den Arbeitsspeicher lädt. Von da an werden Programme außerhalb des Arbeitsspeichers ausgeführt.
Es gibt auch Prozessoren mit " modifizierter Harvard-Architektur ", die es ermöglichen, einen Teil des Befehlsraums so zu betrachten, als wäre er "Nur-Lese"-RAM. Dies geschieht normalerweise mit einem Paging-Fenster ähnlich dem im HCS08-Diagramm zuvor. Im PIC24 heißt diese Funktion Program Space Visibility (PSV).
Roger Rowland
Claudio Avi Chami
pjc50
PlasmaHH
Claudio Avi Chami
schwach
Chris Stratton
Harper - Wiedereinsetzung von Monica