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

  • Deutsch

Niveau

  • Bachelor

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

  • tba

Zeugnistext

Rechneraufbau und hardwarenahe Programmierung

Kompetenznachweis

Form
sK Regelfall (bei kleiner Prüfungszahl: sMP)

Aufwand [h]
sK 10

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

  • keine

Besondere Literatur

  • keine

Besonderer Kompetenznachweis

  • keiner

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

  • keine

Besondere Literatur

  • keine

Besonderer Kompetenznachweis

  • keiner

Diese Seite läuft auf FoswikiDas Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborations-Plattform sind Eigentum der Autoren.
Ideen, Anfragen oder Probleme bezüglich Foswiki? Feedback senden