Entwicklung auf dem Heimcomputer unter Windows via WSL

Anleitung zur Installation der SPiC Entwicklungsumgebung unter Windows.

Erstellt im SS23 von Maximilian Martin.

Warning
  Das SPiC-Team bietet keine Unterstützung für diese Lösung an und empfiehlt die Verwendung von Remote-Cip. Wir teilen hier lediglich eine von Studierenden erstellte Anleitung.

## Installation

Die Installation nutzt ungeprüfte Quellen und erfolgt daher auf eigene Gefahr. Es werden ungefähr 5 GB Speicherplatz benötigt.

### WSL

Das Windows Subsystem für Linux ist die Basis dieser Anleitung. Die Installation wird in der Kommandozeile ausgeführt. Dazu einfach aus dem Startmenü die `Eingabeaufforderung` öffnen.

    wsl --update
    wsl --install -d Debian

Es ist wichtig sich das Passwort zu merken, welches bei der Installation von WSL angegeben wurde.

Nach der Installation startet WSL automatisch. Der Befehl `exit` beendet es wieder.

Sollte es Probleme bei der Installation geben, gibt es hier eine genauere Anleitung.

### WSL

Um die Programmierung des SPiC Boards zu ermöglichen, muss die USB Schnittstelle an WSL weitergereicht werden.

Am einfachsten ist dies mittels der grafischen Anwendung WSL USB, welche hier heruntergeladen werden kann. Beim Ausführen der `.msi` Datei wird eventuell eine Warnung angezeigt. Diese umgeht man über `Weitere Informationen` und `Trotzdem ausführen`.

Alternativ ist auch die Verwendung eines Kommandozeilen-Tools möglich. Das dafür benötigte Programm wird mittels `winget` installiert.

    winget install --interactive --exact dorssel.usbipd-win

Hinweise zur Nutzung dieses Tools gibt es hier.

### Entwicklungsumgebung

Zuletzt wird die Entwicklungsumgebung in WSL installiert.

Dazu einfach aus dem Startmenü `Debian` öffnen. Die Installation fragt wahrscheinlich das Passwort ab, welches bei der Installation von WSL festgelegt wurde.

Ab diesem Punkt gibt es zwei Varianten der weiteren Installation:

Ein fertiges Skript kann in WSL heruntergeladen und ausgeführt werden. Dieser Weg hat den Vorteil, dass zusätzliche Skripte zur Abgabe heruntergeladen werden.

    sudo apt install -y git
    git clone https://gitlab.cs.fau.de/i4/spic/wsl.git ~/SPiC-WSL
    bash ~/SPiC-WSL/install.sh

Um Abgaben zu ermöglichen, generiert der Skript am Ende einen SSH Key und legt diesen im CIP Benutzeraccount an. Dafür werden Nutzername und Passwort des Informatik CIP abgefragt.

Alternativ können alle Befehle einzeln ausgeführt werden.

    sudo apt update
    sudo apt upgrade -y
    sudo apt install -y wget make udev gnupg apt-transport-https usbip hwdata usbutils
    sudo /lib/systemd/systemd-udevd --daemon
    wget -O - https://i4spic.cs.fau.de//editor/repo.gpg.key | sudo apt-key add -
    echo "deb https://i4spic.cs.fau.de//editor/debian buster main" | sudo tee /etc/apt/sources.list.d/spic.list
    sudo apt update
    sudo apt install -y spic-editor

Die Installation ist abgeschlossen, sobald alle Befehle ohne Fehlermeldungen ausgeführt wurden.

## Benutzung

### der IDE

Die Installation sollte eine Verknüpfung im Startmenü erstellt haben, wo die `SPiC IDE` im Ordner `Debian` zu finden ist.

Der Simulator kann wie gewohnt aus der IDE gestartet werden.

### des SPiC Boards

Um ein SPiCBoard zu flashen muss zuerst die `WSL USB` Anwendung gestartet werden. Es ist sinnvoll sich die angezeigten USB Geräte zu merken.

Nun kann das SPiC Board angesteckt werden. Nach einem `Refresh` sollte das Board als `Serielles USB-Gerät` hinzugekommen sein.

Dieses kann ausgewählt und mittels `Auto-Attach Device`, `Port` automatisch weitergereicht werden. Um diese Weiterreichung zu nutzen ist es wichtig das `WSL USB` Programm vor der `SPiC IDE` zu starten. Für den Simulator ist dieser Schritt nicht notwendig.

### Einschränkungen

Die lokale Installation ist nicht in das Abgabesystem integriert. Daher ist es nicht möglich Funktionen wie die Abgabe oder das Ansehen der Musterlösung in der IDE zu nutzen.

### Abgaben

Wenn die Entwicklungsumgebung mithilfe des Skripts installiert wurde, ist es möglich die Aufgaben auch von Zuhause abzugeben.

Dafür gibt es einige Skripte, welche in WSL (`Debian` im Startmenü) ausführbar sind:

    bash ~/SPiC-WSL/submit.sh

- Gibt die angegebene Aufgabe ab

    bash ~/SPiC-WSL/show-submission.sh

- Zeigt die angegebene Abgabe an

    bash ~/SPiC-WSL/get-deadline.sh

- Zeigt den Abgabetermin der angegebenen Aufgabe an

Falls die Installation manuell erfolgte, muss zuerst der `login.sh` Skript heruntergeladen und ausgeführt werden.

    mkdir ~/SPiC-WSL
    wget https://gitlab.cs.fau.de/i4/spic/wsl/-/raw/spic/login.sh -o ~/SPiC-WSL/login.sh
    bash ~/SPiC-WSL/login.sh

Der folgende Befehl lädt weitere Skripte einzeln herunter. Dabei ist es wichtig `$SKRIPT` durch den Name des Skripts zu ersetzen.

    wget https://gitlab.cs.fau.de/i4/spic/wsl/-/raw/spic/$SKRIPT -o ~/SPiC-WSL/$SKRIPT