Skip to main content
main-content

Über dieses Buch

Dieses Lehrbuch behandelt den Entwurf und die Programmierung von Mikroprozessorsystemen. Es führt von den Grundlagen der Rechnertechnik und der Maschinenprogrammierung über die Erklärung der komplizierten Zusammenhänge des Systemaufbaus, der Bussysteme und der Interface-Techniken bis zur Beschreibung der Funktionsweise von Ein-/Ausgabegeräten und Hintergrundspeichern. Die Stoffauswahl orientiert sich an gängigen Prozessoren der PC-Welt. Das für Studenten der Elektrotechnik und Informatik bestimmte Werk versetzt auch Anwender in die Lage, die geeignetsten Systemstrukturen zu entwickeln, die passenden Bausteintypen auszusuchen und die zugehörige Software selbst zu entwerfen. Das Buch setzt den Erfolg der Vorgänger fort und berücksichtigt dabei den Wandel der Aufgaben der Praktiker.

Inhaltsverzeichnis

Frontmatter

1. Einführung in den Aufbau und die Programmierung von Mikroprozessorsystemen

Zusammenfassung
Mikroprozessorsysteme sind universell programmierbare Digitalrechner. Ihre Vorteile liegen in der Miniaturisierung des Systemaufbaus, in den geringen Hardwarekosten und in der Möglichkeit, die Rechnerhardware modular an die Problemstellung anzupassen. Diese Vorteile haben den Mikroprozessorsystemen Anwendungsgebiete geschaffen, die den herkömmlichen Digitalrechnern verschlossen waren oder von Spezialhardware mit hohen Entwicklungs- und Herstellungskosten abgedeckt werden mußte.
Thomas Flik, Hans Liebig

2. Der Mikroprozessor

Zusammenfassung
In Kapitel 1 wurde schwerpunktmäßig eine Einführung in den Aufbau, die Arbeitsweise und die Assemblerprogrammierung von Rechnersystemen gegeben und dabei ein vereinfachter CISC-Prozessor mit 16-Bit-Verarbeitungsbreite sowie ein einfacher RISC-Prozessor mit 32-Bit-Verarbeitungsbreite vorgestellt. Heutige CISC- und RISC-Prozessoren hoher Leistungsfähigkeit sind meist als 32-Bit-Prozessoren ausgelegt, jedoch sehr viel komplexer als der RISC aus Kapitel 1. Dies liegt zum einen an einem hohen Grad an Parallelität der Verarbeitung, die sich in Fließbandstrukturen und in der Anzahl und Organisation von parallel arbeitenden Funktionseinheiten ausdrückt. Damit zusammenhängend können diese Prozessoren auch sehr hoch getaktet werden. Zum andern liegt dies an prozessorexternen wie prozessorinternen breiteren Daten- und ggf. Adreßwegen von meist 64 Bits. Erstere ermöglichen eine höhere Übertragungsleistung („Busbandbreite“) für den Transport von Befehlen und Daten unter Nutzung von prozessorinternen Caches. Letztere erlauben es, größere Adressen bereitzustellen und somit den direkt adressierbaren Adreßraum über die sonst vorhandene Begrenzung von 4 G Adressen hinaus ausdehnen zu können.
Thomas Flik, Hans Liebig

3. Assemblerprogrammierung mit Gegenüberstellung von C-Programmen

Zusammenfassung
Die Programmierung von Mikroprozessorsystemen ist, wenn diese Systeme in einem technischen Umfeld eingesetzt werden (Steuerung technischer Systeme und Geräte, embedded control), üblicherweise eine hardwarenahe Programmierung und wird entweder ganz in Assemblersprache oder aber in einer „höheren“ Programmiersprache, meist C, ggf. ergänzt um Assemblersequenzen, durchgeführt. Um dabei effiziente Programme erstellen zu können, ist es unabdingbar, grundlegende Techniken zu kennen, mit denen immer wiederkehrende Verarbeitungsabläufe optimal beschrieben werden können. Solche Programmierungstechniken sind zunächst weitgehend unabhängig vom Befehlssatz des eingesetzten Prozessors. Bei ihrer Umsetzung in Befehlsfolgen ergeben sich jedoch prozessorabhängige Unterschiede bezüglich des Bedarfs an Programmspeicherplatz, an Programmausführungszeit und auch hinsichtlich ihrer Unterstützung durch den Befehlssatz und durch andere Programmierspezifika des Prozessors.
Thomas Flik, Hans Liebig

4. Maschinennahe Programmierung in C

Zusammenfassung
Ein herkömmliches Mikroprozessorsystem, oder allgemeiner eine Rechenmaschine (kurz Maschine genannt), verarbeitet ein Programm, indem es die Befehle als Bitmuster nacheinander liest, decodiert und ausführt. Ein Programm, in dem die Befehle in dieser Weise codiert sind, wird als Maschinenprogramm bezeichnet. Dabei wird nicht zwischen Maschinenprogrammen unterschieden, in denen die Befehle binär, und solchen, in denen die Befehle in einer für den Menschen leichter handhabbaren Form, z.B. als hexadezimale Zahlen codiert sind. Letztere müssen jedoch einen Umsetzungsprozeß durchlaufen, in dem die Zahlen in die durch die Maschine interpretierbare binäre Form überführt werden. Maschinenprogramme sind schlecht lesbar und besitzen eine geringe Änderungsfreundlichkeit. Das Einfügen eines Befehls kann z.B. zur Folge haben, daß die Zieladressen einiger Sprungbefehle ebenfalls geändert werden müssen. Dies ist einer der Gründe, weshalb die Maschinenprogrammierung für die Softwareentwicklung keine Bedeutung hat. Trotzdem wird sie in sehr einfachen Systemen verwendet, wobei die ggf. erforderliche Umsetzung meist Funktionalität eines sog. Monitors ist, also eines elementaren Betriebsprogramms, das einfache Kommandos, wie das Laden, Ausführen und Ändern von Benutzerprogrammen ermöglicht. Solche Monitore dienen z.B. zur Fehlersuche oder zur Wartung kleiner Steuerungssysteme, die mit einem Mikroprozessor oder Mikrocontroller ausgerüstet sind.
M. Menge

5. Busse und Systemstrukturen

Zusammenfassung
Ein Mikroprozessorsystem umfaßt neben dem Mikroprozessor als dem zentralen Systembaustein eine Reihe weiterer Bausteine, insbesondere Speicher- und Interface-Bausteine sowie verschiedene Zusatzbausteine. In den Speicherbausteinen werden die Programme und Daten für ihre Verarbeitung bereitgestellt; über die Interface-Bausteine wird die Verbindung zur Peripherie des Mikroprozessor-systems hergestellt. Zu den Zusatzbausteinen zählen einfache Funktionseinheiten, wie Zeitgeber (timer), aber auch komplexe Funktionseinheiten, wie Speicherverwaltungseinheiten und DMA-Controller. Verbindendes Medium aller Komponenten ist in Einbussystemen der Systembus, dessen Signale bei einfachster Ausführung durch den Prozessor festgelegt sind, aber auch prozessorunabhängig definiert sein können. In Mehrbussystemen gibt es zusätzlich zum Systembus sog. lokale Busse für den Zusammenschluß von z.B . prozessornahen oder peripherienahen Funktionseinheiten. Hier hat der Systembus als globaler Bus eine übergeordnete Verbindungsfunktion, und zwar sowohl zwischen den lokalen Bussen als auch zu Funktionseinheiten, die unmittelbar an den Systembus angeschlossen sind.
Thomas Flik, Hans Liebig

6. Speicherorganisation

Zusammenfassung
Die Forderung nach leistungsfähigen Mikroprozessorsystemen setzt neben Prozessoren mit hohen Verarbeitungsgeschwindigkeiten auch Speicher mit großen Kapazitäten und geringen Zugriffszeiten voraus. Diese Forderungen lassen sich allein durch den Hauptspeicher oft nicht erfüllen. Abhilfe schafft eine hierarchische Anordnung von Speichern mit kurzen Zugriffszeiten auf der einen Seite und großen Kapazitäten auf der anderen Seite. So werden zum einen zwischen den „schnellen“ Registerspeicher des Prozessors und den „langsameren“ Hauptspeicher Pufferspeicher mit kurzen Zugriffszeiten, sog. Caches geschaltet. Zum andern wird die Speicherkapazität des Hauptspeichers durch die Einbeziehung von Hintergrundspeichern, z.B. Magnetplattenspeichern, um Größenordnungen erweitert. — Abschnitt 6.1 beschreibt den Aufbau von Caches und Hauptspeichern mittels statischer und dynamischer RAM-Bausteine sowie strukturelle Maßnahmen zur Erreichung möglichst hoher Datenübertragungsraten zwischen Prozessor, Cache und Hauptspeicher. In Abschnitt 6.2 wird dann auf die prinzipiellen Strukturen von Caches und auf die Verwaltung der in ihnen gespeicherten Daten eingegangen. Dabei geht es insbesondere um die Datenkohärenz, d.h. um das Aktualisieren der Daten in Cache und Hauptspeicher bei Mehrmaster- und Mehrprozessorsystemen. In Abschnitt 6.3 werden schließlich Techniken der Hauptspeicherverwaltung im Zusammenspiel mit dem Hintergrundspeicher beschrieben.
Thomas Flik, Hans Liebig

7. Ein-/Ausgabeorganisation und Rechnerkommunikation

Zusammenfassung
Mit dem Begriff Ein-/Ausgabeorganisation faßt man die Vorgänge zur Übertragung von Daten zwischen dem Hauptspeicher und der Peripherie eines Mikroprozessorsystems zusammen. Zur Peripherie zählen die Ein-/Ausgabegeräte, z.B . Bildschirmterminals, Drucker und Scanner, und die Hintergrundspeicher, z.B . Floppy-Disk-Speicher, Magnetplattenspeicher und Streamer. Hinzu kommen anwendungsbezogene Ein-/Ausgabeeinheiten, z.B. zur Übertragung von Steuer- und Statusinformation bei Systemen mit Steuerungs- und Regelungsaufgaben. Dehnt man den Begriff Ein-/Ausgabeorganisation weiter aus, so sind auch die Datenfernübertragung und die Datenübertragung in Rechnernetzen mit in die Betrachtungen einzubeziehen.
Thomas Flik, Hans Liebig

8. Ein-/Ausgabesteuereinheiten und Peripheriegeräte

Zusammenfassung
In Kapitel 7 wurde davon ausgegangen, daß die Übertragung der Daten zwischen Speicher und Interface und die dazu notwendigen Organisationsaufgaben, z.B. die Adreßfortschaltung und die Bytezählung, vom Mikroprozessor durchgeführt werden. Das kann für den Prozessor sehr zeitraubend sein, insbesondere bei einer Datenübertragung mit Busy-Waiting. Aber auch wenn die Übertragung der einzelnen Daten durch Interrupts synchronisiert wird, beanspruchen das Statusretten, das Ausführen des Interruptprogramms und das abschließende Statusladen immer noch ein Vielfaches der eigentlichen Datenübertragungszeit. Das macht sich vor allem bei hohen Übertragungsgeschwindigkeiten nachteilig bemerkbar, z.B. bei der Datenübertragung mit einem Magnetplattenspeicher. Dieser Engpaß kann durch zusätzliche Hardwareunterstützung in Form von Ein-/Ausgabesteuereinheiten, wie DMA-Controller, Ein-/Ausgabeprozessoren oder Ein-/Ausgabecomputer, behoben werden.
Thomas Flik, Hans Liebig

Backmatter

Weitere Informationen