• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Lehrstuhl für Informatik 4 & 16
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
  • English
  • Campo
  • UnivIS
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik

Lehrstuhl für Informatik 4 & 16

Menu Menu schließen
  • Lehrstuhl
    • Leitbild
    • Team
    • Kontakt und Anfahrt
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Echtzeitsysteme
      • Energiebewusste Systeme
      • Verteilte Systeme
    • Projekte
      • BFT2Chain
      • e.LARN
      • NEON
      • PAVE
      • PRIMaTE
      • REFIT
      • ResPECT
      • SURESOFT
      • TRR 89 C1: iRTSS
      • TRR 89 C5
      • Watwa
    • Projektkampagnen
      • DOSS
      • maRE
    • Forschungsgruppen
      • ergoo
    Portal Forschung
  • Publikationen
  • Lehre
    • Wintersemester 2022/23
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemnahe Programmierung in C (für Wiederholer)
      • Systemprogrammierung 1 (für Wiederholer)
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    • Sommersemester 2023
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Lehre
  3. Sommersemester 2023
  4. Systemnahe Programmierung in C
  5. Vorlesung

Vorlesung

Bereichsnavigation: Lehre
  • Systemnahe Programmierung in C
    • Vorlesung
      • Übung
        • Folien
        • Aufgaben
        • SPiCboard
          • Bauanleitung
            • Programmieren im CIP
              • Programmieren von zu Hause
                • libspicboard-Doku
                  • SPiC-IDE
                    • SPiCsim
                      • FAQ
                        • Projekte
                        • Linux libc-Doku
                        • Prüfung
                          • Evaluation
                            • Intern

                            Vorlesung

                            UnivIS Informationen

                            keine passenden Datensätze gefunden

                            Vorlesungsüberblick

                            Die Vorlesung soll aufbauend auf den Informatik-Kenntnissen aus GdI und ersten Programmiererfahrungen mit der Programmiersprache Java grundlegende Kenntnisse der systemnahen Programmierung vermitteln.

                            Während sich moderne Anwendungsprogrammierung primär an den Zusammenhängen und Begriffen des Anwendungsproblems orientiert und von den tatsächlichen Abläufen im Rechner weitgehend abstrahiert wird, sind bei systemnaher Programmierung gerade diese Abläufe im Rechner/Mikrocontroller das zu lösende Problem. Damit stehen die mächtigen Abstraktionen eines Betriebssystems, einer Middleware oder einer virtuellen Maschine nicht oder zumindest nur in geringerem Umfang zur Verfügung.

                            Eine in diesem Umfeld weit verbreitete Programmiersprache ist C, die im Rahmen der Lehrveranstaltung als Grundlage für Vorlesung und praktische Übungen dienen wird.

                            Obwohl C aus softwaretechnischer Sicht nicht mehr aktuell ist und für den Aufbau größerer Anwendungssoftwaresysteme äußerst kritisch gesehen werden muss, ist ein großer Teil der heute in Betrieb befindlichen Software in dieser Sprache geschrieben und man ist dadurch häufig mit der Wartung oder Weiterentwicklung solcher Software konfrontiert.

                            Vor allem im Bereich von eingebetten Systemen und allen anderen Arten von systemnaher Programmierung wird C auch heute noch häufig für Neuentwicklungen eingesetzt. Viele Entwicklungswerkzeuge sind auf diese Sprache ausgerichtet und in den Entwicklergruppen ist die Erfahrung mit der Programmiersprache und der damit verbundenen Art der systemnahen Programmierung nach wie vor sehr weit verbreitet.

                            Der Fokus der Lehrveranstaltung liegt einerseits auf der Architektur systemnaher Software und den Zusammenhängen zwischen den Abstraktionen der Programmiersprache und den tatsächlichen Strukturen und Abläufen in der Hardware (z.B. Zeiger in C, virtueller Speicher, Speicherzellen des Hauptspeichers).
                            Andererseits wird besprochen, wie man bei der gerade im ingenieurwissenschaftlichen Bereich wichtigen systemnahen Programmierung – z.B. für für eingebettete Systeme – vorgeht und diskutiert, wann und wo man eine sinnvolle Grenze zwischen systemnaher Software und der immer umfangreicher und komplexer werdenden Anwendungssoftware ziehen sollte.
                            Im Vergleich zu Java sollen dabei vor allem auch die aus programmiertechnischer Sicht problematischen Seiten von C und die daraus resultierenden Gefahren beleuchtet werden.

                            Übungen

                            Die ersten Übungsaufgaben sind „zum Warmwerden“ mit der Sprache und der Hardware gedacht.
                            Die Entwicklung findet unter Linux und unter Verwendung der SPiC IDE statt und programmiert wird das SPiCboard, das im Rahmen der Lötabende von den Studierenden selbst gelötet werden kann.
                            Ziel der Übungen ist es, dass die typischen Probleme und Lösungen für hardwarenahe Mikrocontrollerprogrammierung erkannt und verstanden werden.
                            Dazu gehört auch der effiziente Umgang mit Ressourcen (z.B. Speicher und Energie) und das Erstellen von korrekter und robuster Software.

                            Im zweiten Teil der Veranstaltung werden die Erfahrungen auf die systemnahe Programmierung unter Verwendung eines Betriebssystems (Linux) angewandt.
                            Es wird der Umgang mit Schnittstellen des Betriebssystemkerns geübt und Parallelen zur Entwicklung ohne Betriebssystem auf dem Mikrocontroller gezogen.

                            Folien der Vorlesung

                            Die Folien bilden den roten Faden durch die Vorlesung. Sie können (und sollen) eine ergänzende Vorlesungsmitschrift und die ausführliche Erläuterung der Themen in der Fachliteratur nicht ersetzen!

                            Für die komfortable Anzeige am Bildschirm und als Referenz stehen sowohl das Handout als auch die Präsentationsfolien (mit Einblendeanimationen) in einer Gesamtversion im PDF-Format zur Verfügung (durchsuchbar, mit klickbaren Querverweisen und Links).

                            Zur Zuordnung der Folien zu den einzelnen Vorlesungen (sowohl Planung im Voraus als auch Protokoll im Nachhinein) siehe „Terminübersicht (Semesterplanung)“ auf der SPiC-Hauptseite.

                            Gesamtes Skriptum

                            Folienvarianten
                            • Handout
                            • Präsentation

                            Letzte Änderung: 31.08.2021

                            Teil A: Konzept und Organisation

                            Kapitel 1: Einführung

                            Kapitel 2: Organisation

                            Teil B: Einführung in C

                            Kapitel 3: Java versus C

                            Kapitel 4: Softwareschichten und Abstraktion

                            Kapitel 5: Sprachüberblick

                            Kapitel 6: Einfache Datentypen

                            Kapitel 7: Operatoren und Ausdrücke

                            Kapitel 8: Kontrollstrukturen

                            Kapitel 9: Funktionen

                            Kapitel 10: Variablen

                            Kapitel 11: Präprozessor

                            Teil C: Systemnahe Softwareentwicklung

                            Kapitel 12: Programmstruktur und Module

                            Kapitel 13: Zeiger und Felder

                            Kapitel 14: Verbundtypen

                            Kapitel 15: Mikrocontroller Vorbemerkungen

                            Kapitel 16: Mikrocontroller Prozessor

                            Kapitel 17: Mikrocontroller Peripherie

                            Kapitel 18: Unterbrechungen

                            Kapitel 19: Unterbrechungen Beispiel

                            Kapitel 20: Unterbrechungen Nebenläufigkeit

                            Teil E: Speicher

                            Hinweis: Vorlesungsteil E ist seit dem SS2021 vorgezogen.

                            Kapitel 33: Dynamische Speicherallokation

                            Kapitel 34: Speicherorganisation

                            Kapitel 35: Speicherorganisation Stack

                            Kapitel 36: Speicherorganisation Zusammenfassung

                            Teil D: Betriebssystemabstraktionen

                            Kapitel 21: Ergänzungen Zeiger

                            Kapitel 22: Ergänzungen Ein-/Ausgabe

                            Kapitel 23: Ergänzungen Fehlerbehandlung

                            Kapitel 24: Betriebssysteme

                            Kapitel 25: Dateisysteme Einleitung

                            Kapitel 26: Dateisysteme Unix

                            Kapitel 27: Programme und Prozesse

                            Kapitel 28: Programme und Prozesse Unix

                            Kapitel 29: Signale

                            Kapitel 30: Multiprozessoren

                            Kapitel 31: Nebenläufige Fäden

                            Kapitel 32: Nebenläufige Fäden Praxis

                            Klausurvorbereitung

                            Beispiele

                            Datum der letzten Änderung

                            Wir behalten uns vor, das Skript regelmäßig zu verbessern und aktualisieren. Änderungen betreffen jedoch in der Regel nicht das gesamte Skript. Auf den Folien ist jeweils aufgeführt, wann sich das entsprechende Kapitel zuletzt geändert hat.

                            All slides are copyrighted © 2006–2023 by Daniel Lohmann, Jürgen Kleinöder, and Volkmar Sieh, University of Erlangen-Nürnberg, Germany. Use without prior written permission of the authors is not permitted!

                            Friedrich-Alexander-Universität
                            Erlangen-Nürnberg

                            Schlossplatz 4
                            91054 Erlangen
                            • Impressum
                            • Datenschutz
                            • Barrierefreiheit
                            Nach oben