Lehrveranstaltungshandbuch Rechneraufbau Hardwarenahe Programmierung
Verantwortlich: Prof. Dr. Thieling
Lehrveranstaltung
Befriedigt Modul (MID)
Organisation
Version |
erstellt |
2011-10-14 |
VID |
1 |
gültig ab |
WS 2012/13 |
gültig bis |
|
|
|
Bezeichnung |
Lang |
Rechneraufbau Hardwarenahe Programmierung |
LVID |
F07_RHP |
LVPID (Prüfungsnummer) |
|
|
Semesterplan (SWS) |
Vorlesung |
2 |
Übung (ganzer Kurs) |
|
Übung (geteilter Kurs) |
1 |
Praktikum |
1 |
Projekt |
|
Seminar |
|
Tutorium (freiwillig) |
|
|
|
Präsenzzeiten |
Vorlesung |
30 |
Übung (ganzer Kurs) |
|
Übung (geteilter Kurs) |
15 |
Praktikum |
15 |
Projekt |
|
Seminar |
|
Tutorium (freiwillig) |
|
|
|
max. Teilnehmerzahl |
Übung (ganzer Kurs) |
|
Übung (geteilter Kurs) |
30 |
Praktikum |
15 |
Projekt |
|
Seminar |
|
|
Gesamtaufwand: 150
Unterrichtssprache
Niveau
Notwendige Voraussetzungen
- grundlegende prozedurale Programmierkenntnisse
- Grundlegende Funktionsweise eines Von-Neumann-Rechners
- Grundlagen der Digitaltechnik
- Automatem u. Zustandsüberführungsdiagramme
Literatur
- Märtin: Rechnerarchitektur, Fachbuchverlag Leipzig (Carl Hanser)
- Oberschelp/Vossen: Rechneraufbau und Rechnerstrukturen, Oldenbourg Verlag
- Vogt, C: C für Java-Programmierer
- Tanenbaum, Goodman: Computerarchitektur, Pearson Studium (Prentice Hall)
Dozenten
- Prof.Dr.Thieling
- Prof.Dr.Hartung
Wissenschaftliche Mitarbeiter
Zeugnistext
Rechneraufbau und hardwarenahe Programmierung
Kompetenznachweis
Form |
sK |
Regelfall (bei kleiner Prüfungszahl: sMP) |
Intervall: 3/Jahr
Lehrveranstaltungselemente
Vorlesung / Übung
Lernziele
Lerninhalte (Kenntnisse)
- Grundlagen der C-Programmierung
- Konstanten, Variablen, Datentypen
- Ausdrücke, Anweisungen, Kontrollstrukturen
- Präprozessoranweisungen
- Zeiger und Zeigerarithmetik
- Strukturierte Datentypen (Felder, Strukturen)
- Funktionen
- Standardbibliotheken
- Aufbau von Mehrdateienprogrammen mit Zugriff auf Bibliotheken
- Software-Entwicklungsumgebung
- Compiler
- Linker
- Debugger
- Simulator
- hardwarenahe I/O-Programmierung in C
- Aufbau digitaler I/O-Ports
- Erreichbarkeit von I/O-Ports
- Memory-Mapped-I/O
- seperater I/O-Adressbereich
- Zugriff auf I/O-Ports mittels Zeiger
- Zugriff auf I/O-Ports mittels Treiberbibliotheken
- Implementierung von Treiberbibliotheken in C
- Bitbasierte Ein-Ausgabe und Auswertung von Daten mittels C
- Programmierung von Aufgaben des Messens, Steuerns und Regelns in C
- Realisierung von Moore- und Mealy-Automaten in C
- Optimierung von zyklischen Zugriffen auf I/O-Daten
- Aufbau und Funktionsweise eines dedizierten Kleinrechnersystems (z.B. Mikrocontroller)
- Architekturübersicht (Register, Rechenwerk, Steuerwerk, Speicher, Busstruktur, I/O-Komponenten)
- Funktionsweise, d.h. Ablauf einer Programmabarbeitung auf Basis von Registertransfers
- elementare Grundlagen zur Programmierung des Kleinrechners in Assembler
- Verwendung von Inline-Assembler in C-Programmen
- I/O-Schnittstellen eines Rechnersystems und deren Nutzung mittels C (am Beispiel des dedizierten Kleinrechnersystems)
- digitale Ports (siehe oben)
- Timer/Counter (inkl. Digital-Analog-Wandlung mittel Pulsweitenmodulation)
- Analog-Digital-Wandler
- serielle Schnittstelle
- Nutzung der I/O-Schnittstellen aus C heraus
- Interrupts
- Interrupt-Quellen und -Arten (extern, intern, hardware, software)
- Interruptsverwaltung
- Interupt-Vektor-Tabelle
- Interrupts-Service-Routine
- zeitlicher Ablauf der Interruptsbearbeitung
- Mechanismen zur Bearbeitung konkurrierender Interrupts
- Priorisierung
- Unterbrechung
- Problenspezifischer Einsatz dieser Mechanismen
- Nutzung von I/O-Schnittstellen mittels Interrupt unter C
- Laufzeitsystem für C-Programme
- Unterprogrammaufruf in Assembler
- Stack und Assemblerbefehle zur Stackmanipulation
- Programmzustandsrettung und -wiederherstellung mittels Stack
- C-Funktions-Parameterübergabe mittels Stack
- Verwaltung lokalen C-Variablen mittels Stack
- dynamischer Stackauf und -abbau bei geschaltelten C-Funktionsaufrufen
- manuelle Interpretation des Stackinhalts mittels Debugger
Fertigkeiten
- Verstehen und erläutern der Arbeitsweise eines Kleinrechnersystems inkl. seiner I/O-Schnittstellen
- Detaillierten technischen Spezifikationen von I/O-Schnittstellen interpretieren, so dass zielgerichtete sinnvolle Konfigurationen erstellt werden können
- Erstellen von Treiberbibliotheken in C für verschiedene I/O-Schnittstellen mit Unterstützung ihrer Interruptfähigkeit
- digitale Ports
- Timer/Counter
- Analog-Digital-Wandler
- serielle Schnittstellen
- Systemverhalten aus spezifizierenden Texten herleiten
- technische Texte erfassen
- implizite Angaben erkennen und verstehen
- fehlende Angaben
- erkennen
- ableiten
- erfragen
- Erarbeitung von Problemlösungen aus dem Bereich Messen-Steuern-Regeln, die sich mit C-Programmen realisieren lassen
- Systemverhalten aus spezifizierenden Text herleiten
- Auswahl und Konfiguration der benötigten I/O-Schnittstellen
- Erarbeitung eines Interruptskonzeptes
- Aufstellen des Zustandsüberführungsdiagramms
- Auswahl der geeigneten Spezifikationsform (Moore versus Mealy)
- Bewertung der Spezifikation
- Vollständigkeit
- Determiniertheit
- Lebendigkeit
- Implementierung mittels C unter Verwendung von Treiberbibliotheken
- Laufzeitsystem für C-Programme analysieren und beschreiben
- dynamischer Stackauf und -abbau bei geschachtelten C-Funktionsaufrufen ermitteln und beschreiben
- dynamischen Stackaufbau mittels Debugger analysieren und bescheiben
Begleitmaterial
- elektronische Vortragsfolien zur Vorlesung
- elektronische Übungsaufgabensammlung
- elektronische Software-Entwicklungsumgebung zum Compilieren, Linken, Debuggen, Simulieren
- elektronische Sammlung von Beispiel-Programmen
- elektronische Tutorials für Selbststudium
- Handhabung der Entwicklungsumgebung
Besondere Voraussetzungen
Besondere Literatur
Besonderer Kompetenznachweis
Praktikum
Lernziele
Fertigkeiten
- siehe Fertigkeiten, die unter "Vorlesung/Übung->Lernziele->Fertigkeiten" aufgeführt sind
- zielgerichtetes Handhaben der Software-Entwicklungsumgebung
Handlungskompetenz demonstrieren
- komplexere Aufgaben in einem Kleinteam bewältigen
- Erarbeitung von komplexeren Problemlösungen aus dem Bereich Messen-Steuern-Regeln, die sich mit C-Programmen realisieren lassen
- komplexere Problemstellungen verstehen und analysieren
- Systemverhalten aus spezifizierenden Texten herleiten
- System strukturiert analysieren
- sinnvolle Teilsysteme erkennen
- Schnittstellen zwischen Teilsystemen erfassen
- Gesamtsystem auf Basis von Teilsystemes modellieren
- Teilsysteme modellieren. Hierbei soweit möglich auf zur Vefürgung stehende Komponenten (I/O-Schnittstellen) abbilden, d.h. Komponentenauswahl und Konfiguration.
- Problemlösung mittels Software-Entwicklungsumgebung in C implementieren, testen und am Zielsystem in Betrieb nehmen
- Spezifiation von Teilsystemen in C
- Treiberfunktion für zur Verfügung stehende Komponenten (I/O-Schnittstellen)
- Interrupt-Service-Funktionen
- Funktionen zur Implementierung von Zustandübergangsdiagrammen
- Funktionen zur Systembedienung
- ...
- Compilieren der Teilsysteme
- Finden syntaktischer Fehler und deren Behebung
- Simulation und Debuggen von Teilsystemen
- Erstellen von Teststimuli
- Finden semantischer Fehler und deren Behebung
- Spezifikation des Gesamtsystems in C
- Simulation und Debuggen des Gesamtsystems
- Erstellen von Teststimuli
- Finden semantischer Fehler und deren Behebung
- Gesamtsystem am Zielsystem in Betrieb nehmen
Begleitmaterial
- elektronische Aufgabenstellung (Problembeschreibung)
- elektronische Software-Entwicklungsumgebung zum Compilieren, Linken, Debuggen, Simulieren
- elektronische Sammlung von Beispiel-Programmen
- elektronische Tutorials für Selbststudium
- Handhabung der Entwicklungsumgebung
Besondere Voraussetzungen
Besondere Literatur
Besonderer Kompetenznachweis
Das Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborations-Plattform sind Eigentum der Autoren.
Ideen, Anfragen oder Probleme bezüglich Foswiki?
Feedback senden