Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

SPiC - Übungen im SS 2021

Allgemeines

Da SPiC auch dieses Semester nicht als Präsenzveranstaltung stattfinden kann, werden Tafel- und Rechnerübungen wieder online abgehalten. Für erstere stehen die Videos aus dem Sommersemester 2020 zur Verfügung und es wird eine zusätzliche wöchentliche Tafelübung/Fragestunde stattfinden.

In den Aufgaben wird die Systemprogrammierung auf zwei verschiedenen Ebenen geübt: Zum einen in Form eines Steuerprogrammes direkt auf Hardware eines AVR Mikrocontrollers, zum anderen im (stark vereinfachten) Nachbau einiger gängiger Systemwerkzeuge auf einer Linux Systemschnittstelle.

Dokumentationsbereich

Die Datenblätter für den Mikrocontroller finden Sie auf der SPiCboard Webseite, die Dokumentation für die libspicboard und die avrlibc auf der libspicboard-Doku Seite.

Eine Übersicht über gängige libc Funktionen und Systemaufrufe sind in der Linux libc-Doku hinterlegt, vollständige Informationen finden Sie in den jeweiligen Manpages.

Tafelübung (via BigBlueButton)

Es findet dieses Semester eine wöchentliche Tafelübung via BigBlueButton statt. Die Tafelübung ist auf etwa 60 Minuten angelegt. Nach dem Bearbeitungszeitraum einer Übungsaufgabe erarbeiten wir dort wie eine mögliche Lösung für die Aufgabe aussehen könnte. In Wochen ohne Übungsaufgabe, nutzen wir den Termin als Fragestunde zum Vorlesungs- und Übungsstoff bzw. haben für bestimmte Stoffbereiche interaktive Übungen erarbeitet.

Sie finden den Link zum BBB-Raum in diesem StudOn Ordner (Registrierung im Kurs erforderlich).

Rechnerübungen (via BigBlueButton)

Während der Rechnerübungen können Sie Fragen zu den aktuellen Übungsaufgaben stellen. Sie dürfen gerne mehrere Rechnerübungen pro Woche besuchen. Die Termine starten c.t. (also 15 Minuten später) und dauern 90 Minuten.

Die Rechnerübungen finden auf der BigBlueButton Instanz des Departments Informatik statt. Die Links sind in diesem StudOn Ordner (Registrierung im Kurs erforderlich) zu finden. Ein Beitritt ist u.U. erst möglich, nachdem das Meeting gestartet wurde. Achten Sie für Wortbeiträge bitte darauf, geeignete Mikrofone und Kopfhörer zu verwenden.

Die Rechnerübungen starten in der zweiten Vorlesungswoche (ab 19.04.2021) und enden mit den Übungsaufgaben (13.07.2021).

Übungsaufgaben

Nr. Titel Kurzbeschreibung Ausgabe Bearbeitungszeit
(in Tagen)
2er-Gruppen Abzugebende
Dateien
Punkte
1 blink Kennenlernen der Umgebung,
Implementierung eines LED-Blink-Programms
19.04.2021 7 Nein blink.c 3
2 snake C-Kontrollflusskonstrukte, Funktionen,
SPiCboard-Elemente, Bitoperationen
26.04.2021 7 Ja snake.c 12
3 led-modul Zeiger, AVR I/O-Ports,
modulare Programmierung
03.05.2021 14 Ja led.c, test-led.c 14
4 spiel Interrupts, Powersave-Modi, Nebenläufigkeit,
Synchronisation, volatile
17.05.2021 7 Nein spiel.c 12
5 ampel Interrupts, Powersave-Modi, Nebenläufigkeit,
Synchronisation, volatile
26.05.2021 14 Ja ampel.c 15
6 concat C unter Linux, Speicherallokation, Strings 09.06.2021 7 Nein concat.c 10
7 printdir POSIX, Strukturen 16.06.2021 7 Ja printdir.c 12
8 mish POSIX-Prozesse, Signale 23.06.2021 21 Ja mish.c 22

Folien & Aufzeichnungen der Übungen

Wir behalten uns Änderungen der Folien und Aufzeichnungen während des Semesters vor.

Kurzbeschreibung Video Folien Annotierte
Folien
Material
Übungswoche 1
12.04.2021
01.1 Organisatorisches
01.2 Übungsumgebung einrichten
01.3 Entwicklungsumgebung (SPiC IDE)
01.4 Hands-On (Licht)
Tafelübung: Fragestunde
PDF
PDF
PDF
PDF

PDF




Übungswoche 2
19.04.2021
02.1 Compileroptimierungen
02.2 Hands-On (Signallampe)
02.3 Aufgabe (blink)
Tafelübung: Fragestunde
PDF
PDF
PDF
PDF
PDF
PDF
PDF

Übungswoche 3
26.04.2021
03.1 Variablen
03.2 Bitoperationen
03.3 Aufgabe (snake) (SS21: Gruppenaufgabe)
04.1 Ein-/Ausgabe über Pins
04.2 Hands-On (IO)
Tafelübung: Besprechung blink; Fragestunde
PDF
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF
PDF

Übungswoche 4
03.05.2021
05.1 Module
05.2 Zeiger und Felder
05.3 Hands-On (Statistikmodul)
05.4 Aufgabe (led) (SS21: Gruppenaufgabe)
Tafelübung: Besprechung snake; Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF



Übungswoche 5
10.05.2021
Tafelübung: Interaktive Übung: Zeiger, Felder und Strukturen; Fragestunde
pointer.c,
Anleitung
Übungswoche 6
17.05.2021
07.1 Interrupts
07.2 Synchronisation
07.3 Schlafmodi
07.4 Hands-On (Einfacher Interruptzähler)
07.5 Aufgabe (spiel)
Tafelübung: Besprechung led; Fragestunde
PDF
PDF
PDF
PDF
PDF

PDF
PDF
PDF

PDF

Übungswoche 7
24.05.2021
08.1 Zustandsautomaten
08.2 Zeitgeber
08.3 Hands-On (Kaffeemaschine)
08.4 Aufgabe (ampel) (SS21: Gruppenaufgabe)
Tafelübung: Besprechung spiel; Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF

PDF

Übungswoche 8
31.05.2021
09.1 Strings
09.2 Hands-On (Laufschrift)
Tafelübung: C-Typen, Fragestunde
PDF
PDF

PDF




types.c
Übungswoche 9
07.06.2021
10.1 Linux Einführung
10.2 Stringfunktionen
10.3 Dynamische Speicherverwaltung
10.4 Fehlerbehandlung
10.5 Die Funktion main()
10.6 Hands-On (Linux, GCC & Valgrind)
10.7 Aufgabe (concat)
Tafelübung: Besprechung ampel; Fragestunde
PDF
PDF
PDF
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF


PDF

Übungswoche 10
14.06.2021
11.1 Dateien und Dateisysteme
11.2 GNU make
11.3 Hands-On (sgrep)
11.4 Aufgabe (printdir) (SS21: Gruppenaufgabe)
Tafelübung: Besprechung concat; Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF

PDF

Übungswoche 11
21.06.2021
12.1 Prozesse
12.2 Minimale Shell
12.3 Hands-On (run)
12.4 Aufgabe (mish - Teil A) (SS21: Gruppenaufgabe)
Tafelübung: Besprechung printdir; Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF




mish_vorlage

Übungswoche 12
28.06.2021
13.1 Signale
13.2 Hands-On (Stoppuhr)
13.3 Aufgabe (mish - Teil B & C) (SS21: Gruppenaufgabe)
Tafelübung: Besprechung printdir (2); Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF



Übungswoche 13
05.07.2021
Tafelübung: Interaktive Übung: Buffer Overflow; Fragestunde
PDF
print_exam.c
Übungswoche 14
12.07.2021
Tafelübung: Besprechung mish; Fragestunde

Abgabe und Bewertung der Übungsaufgaben

Die Abgabe erfolgt durch die SPiC-IDE und muss vor dem Abgabetermin erfolgen. Verspätete oder per eMail eingereichte Abgaben bewerten wir im Allgemeinen nicht. Zur Bearbeitung der Aufgaben wird automatisch ein Projektverzeichnis für Sie angelegt nachdem Sie sich zu einer Übung angemeldet haben. Der Pfad zu diesem Verzeichnis lautet /proj/i4spic/<login>, wobei <login> für Ihren Benutzernamen im CIP-Pool steht. Bitte bearbeiten Sie Ihre Aufgaben in diesem Verzeichnis und verwalten Sie es wie in der ersten Aufgabenstellung beschrieben, da ansonsten das Abgabeprogramm Ihre Lösung nicht finden kann.

Die abgegebenen Aufgaben werden von uns korrigiert, die Korrekturen finden Sie in im Unterordner korrektur Ihres Projektverzeichnisses. Die Ergebnisse der Korrektur sind ausserdem nach Login im Waffel einsehbar.

Literaturempfehlungen

Zur Einführung in die Programmiersprache C haben wir in der Vorlesung die folgenden Bücher kurz vorgestellt:

  • C-Einführungsbuch "C als erste Programmiersprache": verfügbar bei Springerlink online (nur aus dem Uni-Netz)
  • Karlheinz Zeiner: Programmieren lernen mit C. Carl Hanser, 4. Auflage, 2000.
  • Steve Oualline: Practical C Programming. O'Reilly, 1991.
  • Peter Darnell, Philip Margolis: C: A Software Engineering Approach. Springer, 1991.
  • Brian Kernighan, Dennis Ritchie: The C Programming Language. Prentice Hall, 1988 (in der deutschen Übersetzung 1990 bei Hanser erschienen)

Zum Thema UNIX-Systemprogrammierung sind die folgenden Bücher empfehlenswert:

  • Helmut Herold: Linux/Unix Systemprogrammierung, Addison-Wesley, München, September 2004.
  • A. S. Tanenbaum, A. S. Woodhull: Operating Systems: Design And Implementation, Prentice Hall, 1997.
  • R. W. Stevens: Advanced Programming in the UNIX Environment. Addison-Wesley, 1992.