SPiCboard Simulator (SPiCsim)

Der SPiCsim ist ein Simulator für das SPiCboard. Es unterstützt sowohl den mit dem aktuellen SPiCboard v3 verwendeten Mikrocontroller (ATmega328PB), als auch alle auf dem SPiCboard verwendete Peripherie (LEDs, Potentiometer, usw.). Binärdateien, die auf dem SPiCboard lauffähig sind, können unverändert in den SPiCsim geladen und getestet werden. Dies ist insbesondere praktisch, wenn gerade keine echte Hardware zum Testen zur Hand ist.

# Modern

Seit Wintersemester 2019 gibt es eine neue Version des SPiCsim, welche eine realistischere Simulation der Peripherie (Helligkeit der LEDs/7 Segmentanzeige, Rauschen beim ADC) bietet und auch das OLED Display unterstützt. Zudem vereinfacht er durch die GDB Schnittstelle und einem Logikanalysator-artigen Value Change Dump die Fehlersuche. Die überarbeitete graphische Oberfläche kann auch weitere Skins darstellen, derzeit Kaffeemaschine und Ampel.

## Verwendung

Diese Variante ist derzeit nur im CIP (und der VM) ausführbar, dort kann er wie folgt gestartet werden:

- aus der SPiC-IDE
- von der Kommandozeile: `/proj/i4spic/bin/spicsim [options] [<elf-file>]` (alle verfügbaren Optionen können mittels `/proj/i4spic/bin/spicsim -h` angezeigt werden.)

# Legacy

Die Legacy-Variante ist in Java implementiert und damit plattformunabhängig lauffähig.

## Verwendung

Im CIP kann der SPiCsim auf zwei verschiedene Art und Weisen gestartet werden:

- aus der SPiC-IDE
- von der Kommandozeile: `/proj/i4spic/bin/spicsim-legacy [options] [<elf-file>]`

Um den SPiCsim auf dem eigenen Rechner zu benutzen, sind die folgenden Schritte nötig:

- Download des SPiCsim v3.2 (6 MB) (plattformunabhängig, benötigt Java)
- Starten mit `java -jar SPiCsim.jar [options] [<elf-file>]` (zum Beispiel: `java -jar SPiCsim.jar blink.elf`)
- alternativ kann die Binärdatei auch in der GUI mittels `Load program` geladen werden.

## Optionen

Der SPiCsim beherrscht neben dem, oben gezeigten, Standardskin auch Skins, die spezifisch für bestimmte Übungs- oder Hands-On Aufgaben sind. Die Skins können durch die Option `-s <skin_name>` aktiviert werden. Aktuell sind die folgenden Skins verfügbar:

- `coffee` Hands-On Aufgabe zur Implementierung einer Kaffeemaschine

Beispiel zum Starten:

- `java -jar SPiCsim -s coffee coffeemachine.elf`