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

SPiC - Übungen im SS 2020

Allgemeines

Da Präsenzveranstaltungen dieses Semester nicht möglich sind, ist der übliche Übungsbetrieb bestehend aus Tafel- und Rechnerübungen nicht möglich. Statt der Tafelübungen wird es Aufzeichnungen geben und statt der Rechnerübungen wird es Online-Rechnerübungen geben.

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 finden Sie auf der libspicboard-Doku Seite.

Eine Übersicht über gängige libc Funktionen und Systemaufrufe finden Sie auf der Linux libc-Doku Seite und auf den entsprechenden Manpages.

Zoom Rechnerübungen

Die Rechnerübungen starten in der zweiten Vorlesungswoche (ab 27.04.2020). Es dürfen beliebige (auch mehrere) Online Rechnerübungen besucht werden.

Die Rechnerübungen enden am 07.08.2020.

Zu jedem Übungstermin gibt es ein Zoom Meeting. Die Links sind in diesem StudOn Ordner zu finden. Zum Beitritt in das Zoom Meeting ist eine Anmeldung über die FAU Zoom Anmeldeseite nötig. Ein Beitritt ist erst möglich, wenn der Tutor das Meeting gestartet hat. Bitte achtet darauf geeignete Mikrofone und Kopfhörer zu verwenden. Nicht geeignet sind Laptop Mikrofone und die Nutzung von Lautsprechern. Am besten geeignet sind Hör-Sprech-Kombinationen (Headsets). Die Rechnerübungen starten c.t. (also 15 Minuten später) und dauern 90 Minuten. Gibt es 30 Minuten nach Start der Rechnerübung keine Teilnehmer, kann der Tutor die Rechnerübung frühzeitig beenden.

Je nach Auslastung der Übung kann es sein, dass ihr Stumm geschalten werdet. Um eine Frage zu stellen, nutzt bitte die Hand heben (Zoom Hilfeseite [en]) Funktionalität in Zoom. Der Tutor wählt anschließend einen Studierenden mit Frage aus und entfernt temporär die Stummschaltung. Bitte haltet eure IDM-Kennung bereit (zum Beispiel jy52coty), wenn der Tutor auf euren Code schauen soll. Soll der Tutor auf eure SPiC-IDE zugreifen, haltet bitte den Zugriffscode bereit (zum Beispiel SPiCxxxxxxx).

Um unabsichtliche Plagiate zu verhindern, können euch Tutoren in sogenannte Breakout Räume (Zoom Hilfeseite [en]) einladen. In diesem Raum befinden sich nur der Tutor und der Studierende mit Frage und so können auch Details im Code besprochen werden.

Bei Problemen mit Zoom, bietet das RRZE Hilfeseiten an:

Uhrzeit Mo Di Mi Do Fr
08:00-
10:00
Ü03
(Gohsrich)
Ü10
(Stenzel)
10:00-
12:00
Ü01
(Hofbeck)
Ü04
(Hemp)
Ü06
(Baron)
Ü11
(Faghih-Naini)
Ü14
(Weber)
12:00-
14:00
Ü02
(Benschuh)
Ü07
(Felsheim)
Ü12
(Sächerl)
Ü15
(Schwab)
14:00-
16:00
Ü05
(Brohm)
Ü08
(v.d. Haar)
Ü13
(Gebert)
16:00-
18:00
Ü09
(Traut)

Übungsaufgaben

Studierende, die die Veranstaltung GSPiC (2,5 ECTS) hören (also nicht SPiC oder InfoEEI), müssen nur die mit blauer Farbe hinterlegten Aufgaben abgeben.

Nr. Titel Kurzbeschreibung Ausgabe Bearbeitungszeit
(in Tagen)
Abzugebende
Dateien
Punkte
1 blink Kennenlernen der Umgebung,
Implementierung eines LED-Blink-Programms
27.04.2020 14 blink.c 3
2 snake C-Kontrollflusskonstrukte, Funktionen,
SPiCboard-Elemente, Bitoperationen
11.05.2020 14 snake.c 12
3 led-modul Zeiger, AVR I/O-Ports,
modulare Programmierung
25.05.2020 14 led.c, test-led.c 14
4 spiel Interrupts, Powersave-Modi, Nebenläufigkeit,
Synchronisation, volatile
08.06.2020 7 spiel.c 12
5 ampel Interrupts, Powersave-Modi, Nebenläufigkeit,
Synchronisation, volatile
15.06.2020 14 ampel.c 15
6 concat C unter Linux, Speicherallokation, Strings 29.06.2020 7 concat.c 10
7 printdir POSIX, Strukturen 06.07.2020 14 printdir.c 12
8 mish (optional) POSIX-Prozesse, Signale 20.07.2020 14 mish.c 0

Folien & Aufzeichnungen der Übungen

Studierende, die die Veranstaltung GSPiC (2,5 ECTS) hören (also nicht SPiC oder InfoEEI), müssen nur die mit blauer Farbe hinterlegten Übungen bearbeiten.

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

Kurzbeschreibung Video Folien Annotierte
Folien
Material
Übungswoche 1
20.04.2020
01.1 Organisatorisches
01.2 Übungsumgebung einrichten
01.3 Entwicklungsumgebung (SPiC IDE)
01.4 Hands-On (Licht)
PDF
PDF
PDF
PDF
PDF



Übungswoche 2
27.04.2020
02.1 Compileroptimierungen
02.2 Hands-On (Signallampe)
02.3 Aufgabe (blink)
PDF
PDF
PDF
PDF
PDF
PDF
Übungswoche 3
04.05.2020
Übungswoche 4
11.05.2020
03.1 Variablen
03.2 Bitoperationen
03.3 Aufgabe (snake)
PDF
PDF
PDF
PDF
PDF
PDF
Übungswoche 5
18.05.2020
04.1 Ein-/Ausgabe über Pins
04.2 Hands-On (IO)
PDF
PDF
PDF
PDF
Übungswoche 6
25.05.2020
05.1 Module
05.2 Zeiger und Felder
05.3 Hands-On (Statistikmodul)
05.4 Aufgabe (led)
PDF
PDF
PDF
PDF
PDF
PDF



pointer.c


Übungswoche 7
01.06.2020
Übungswoche 8
08.06.2020
07.1 Interrupts
07.2 Synchronisation
07.3 Schlafmodi
07.4 Hands-On (Einfacher Interruptzähler)
07.5 Aufgabe (spiel)
Zwischenevaluation
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF

PDF

Übungswoche 9
15.06.2020
08.1 Zustandsautomaten
08.2 Zeitgeber
08.3 Hands-On (Kaffeemaschine)
08.4 Aufgabe (ampel)
PDF
PDF
PDF
PDF
PDF
PDF

PDF
Übungswoche 10
22.06.2020
09.1 Strings
09.2 Hands-On (Laufschrift)
PDF
PDF
PDF

Übungswoche 11
29.06.2020
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)
10.8 Hands-On (Buffer Overflow)
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF


PDF
PDF







print_exam.c
Übungswoche 12
06.07.2020
11.1 Dateien und Dateisysteme
11.2 GNU make
11.3 Hands-On (sgrep)
11.4 Aufgabe (printdir)
PDF
PDF
PDF
PDF
PDF
PDF

PDF
Übungswoche 13
13.07.2020
Übungswoche 14
20.07.2020
12.1 Prozesse
12.2 Minimale Shell
12.3 Hands-On (run)
12.4 Aufgabe (mish - Teil A) (optional)
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
mish_vorlage
Übungswoche 15
27.07.2020
13.1 Signale
13.2 Hands-On (Stoppuhr)
13.3 Aufgabe (mish - Teil B & C) (optional)
PDF
PDF
PDF
PDF
PDF
PDF

Abgabe und Bewertung der Übungsaufgaben

Die Abgabe erfolgt durch die SPiC-IDE und muss vor dem Abgabetermin erfolgen. Eine Abgabe nach dem Abgabetermin per eMail ist nicht möglich. Zur Bearbeitung der Aufgaben wird Ihnen automatisch ein Projektverzeichnis 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 das Verzeichnis wie in der ersten Aufgabenstellung beschrieben, da ansonsten das Abgabeprogramm Ihre Lösung nicht finden kann.

Die abgegebenen Aufgaben werden von uns korrigiert. Die korrigierten Abgaben finden Sie in ihrem Projektordner im Unterordner korrektur. 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 und in /proj/i4spic/pub/ (beides 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.