Häufige Fragen und Probleme (frequently asked questions, FAQ)

## Das SPiCboard

Siehe auch die Beschreibung auf SPiCboard v3.

### Ich habe noch kein SPiCboard...

- Ein SPiCBoard ist für den Übungsbetrieb nicht zwingend notwendig. Es kann auch der SPiCboard Simulator (SPiCsim) verwendet werden.

### Ich will ein SPiCboard!

- Sehr gut! Hierfür findet jedes Jahr zu Beginn des Sommersemesters ein Lötabend statt. Dort hast du die Gelegenheit unter Anleitung ein eigenes SPiCboard zu löten. Die Bauteile werden hierbei gestellt (inklusive Mikrocontroller) und müssen nicht selbst erworben werden.

### Ich will mir zu Hause ein SPiCboard bauen...

- Das ist prinzipiell möglich, du findest alle notwendigen Details (Bauteile und Anleitung) unter Bauanleitung
- Du musst dir die Bauteile selbstständig und auf eigene Kosten besorgen. Der Lehrstuhl darf die Bauteile nicht verkaufen/herausgeben.
- Ausnahme: Lediglich die SPiCboard-Platine (also ohne jegliche Bauteile) können wir dir geben. Dazu musst du mit uns (via i4spic-orga@lists.cs.fau.de) einen Termin vereinbaren, um die Platine vom Lehrstuhl abholen zu können.
  - Das Programmieren des SPiCboards funktioniert per VM (Mittels Virtuellen Maschine (VM)) nach der Installation des Extension Packs. Wir können dir aber leider keine Unterstützung anbieten, falls Probleme auftreten.
- Verwende zum initialen Flashen deines SPiCboards das Skript in `pub/boardtest/init.sh` (z.B. via SPiC-IDE in der VM), welches auch die Fuses setzt. Das erstmalige Verbinden kann einige Zeit (bis hin zu Minuten) dauern, insbesondere wenn das Hostbetriebssystem Treiber installieren will.

## Editor für die Übungsaufgaben

In SPiC wird eine eigene IDE verwendet, eine ausführliche Erklärung zum Start und der Bedienung findest du auf der Seite SPiC-IDE.

Warning
  Andere Anwendungen wie z.B. Atmel Studio werden aufgrund vielfältiger Probleme von uns nicht unterstützt, wir können entsprechend keine Hilfe zur Einrichtung oder Verwendung geben.

### Ich kann bestimmte Zeichen in der SPiC-IDE nicht verwenden

- Je nach verwendetem Tastaturlayout kann die Eingabe von gewissen Sonderzeichen (wie dem Zirkumflex) nicht möglich sein. Stelle dazu sicher, dass du das korrekte Tastaturlayout eingestellt hast (gilt sowohl für die VM als auch den Webzugriff via Xpra).
- In der IDE kannst du dir über den Button eine Bildschirmtastatur mit englischem (US) Layout anzeigen lassen und die entsprechenden Zeichen damit eingeben.

### Meine SPiC-IDE wirft einen Fehler

- Ein Arbeiten ist nicht möglich, beim übersetzen, flashen oder starten des SPiCsims kommt

      Uncaught Error: spawn ENOMEM
      internal/child_process.js:323

  Der Fehler sagt aus, dass nicht genug freier Arbeitsspeicher vorhanden ist. Das kann entweder ein Problem des Editors sein, oder dein PC führt gerade eine ressourcenhungrige Operation aus.
- Beim Versuch ein Shellskript auszuführen kommt

      Uncaught Error: spawn EACCES
      internal/child_process.js:323

  Das Skript hat keine Berechtigung für deine Ausführung (siehe Dateirechte in UNIX), du musst sie im Terminal erst mit `chmod o+x Datei` setzen (sofern du die Datei editieren darfst)
- Wenn beim debuggen des SPiCboards ein Fehler

      Error received from GDB
      GDB said:
      -var-create: unable to create variable object

  erscheint, dann debuggst du zu schnell: Die Befehle (z.B. weiter) können nicht schnell genug an das SPiCboard übertragen, und er verschluckt sich. Lösung: Nicht ganz so schnell klicken, ggf. solltest du deine Haltepunkte überdenken.
- Für Fehler die im Zusammenhang mit der VM entstehen können, siehe bitte Meine SPiC-IDE (remote CIP) in der VM wirft einen Fehler

### Meine SPiC-IDE verhält sich komisch (Universallösung)

- Beende die IDE
- Öffne ein Terminal und führe folgenden Befehl aus (damit der Konfigurationsordner der IDE und somit alle Einstellungen in ein Backupverzeichnis verschoben werden).

      mv -b ~/.atom-spic ~/.atom-spic-backup

- Starte die IDE neu.

## Wie starte ich den SPiCboard Simulator "SPiCsim"

- In der SPiC-IDE auf SPiCsim wechseln und mit Simulate starten.
- Über das Terminal `/proj/i4spic/bin/spicsim` starten
- Optional kann als Parameter noch der Pfad zu einem übersetzen Programm (`.elf`-Datei) mit übergeben werden.
- Alternativ kann auch das `make`-Target `%.sim` ausgeführt werden.
- Die frühere Java-Implementierung kann über das Terminal per `/proj/i4spic/bin/spicsim-legacy` gestartet werden

## Informatik CIP

### Ich habe keinen Login für den Informatik CIP

- Registriere dich über account.cip.cs.fau.de.
- Bei Problem nochmals versuchen oder die CIP-Admins konsultieren. Die Sprechstundentermine sind auf der Webseite unter wwwcip.cs.fau.de vermerkt.

### Ich habe mein Passwort für den Informatik CIP vergessen

- Du kannst dein Passwort über account.cip.cs.fau.de ändern.
- Sofern dein Passwort in der SPiC-VM (SPiC-IDE (remote CIP)) nicht funktioniert, stelle bitte sicher, dass du das korrekte Tastaturlayout in der VM eingestellt hast, wie unter Mein Passwort funktioniert nicht in der SPiC VM beschrieben

## Wie kann ich die Übungen zu Hause bearbeiten?

Entscheidungshilfe Programmieren von zu Hause

## Virtuelle Maschine für den Übungsbetrieb

Bitte stelle sicher das du die Details zur Einrichtung der VM gelesen hast.

Warning
  Solltest du die VM durch eigene Einstellungen verkonfiguriert haben und nicht mehr die ursprüngliche Konfiguration wiederherstellen können, kannst du die SPiC-Editor VM einfach löschen und von der Webseite neu laden & installieren. Alle lokalen Daten (innerhalb der VM) gehen dabei verloren, die Daten im CIP bleiben erhalten.

### Mein Passwort funktioniert nicht in der SPiC VM

- Bist du im Waffel und im Informatik CIP seit mindestens 24h angemeldet? Das ist notwendig, damit z.B. die Benutzerverzeichnisse erstellt werden können.
- Sofern dein Passwort in der SPiC-VM (SPiC-IDE (remote CIP)) dennoch nicht funktioniert, stelle bitte sicher, dass du das korrekte Tastaturlayout in der VM eingestellt hast (im Auswahlmenü neben der Uhr, oben rechts in der VM) :
- Innerhalb der VM solltest du für den normalen Betrieb kein Passwort brauchen – aber für den Fall, dass du Pakete installieren willst, verwende `spic` als Passwort für den lokalen Benutzer.

### Ich besitze einen Mac mit Apple M1 Prozessor und VirtualBox bringt einen Fehler

- VirtualBox unterstützt nur die AMD64/x86_64 Prozessorarchitektur (z.B. Intel Core i7/i9/...) und nicht die ARM-Architektur (z.B. Apple M1).
- Nutze bitte entweder einen Rechner mit passendem Prozessor oder nutze den Webzugriff über Xpra.

### Mein VirtualBox lässt sich nicht starten und bringt einen Fehler...

- Bitte stelle sicher, dass du eine aktuelle VirtualBox Version (6.1.x) verwendest (siehe Hilfe / Über VirtualBox...).
- Starte den PC nach der Installation von VirtualBox (bzw. dem Extension Pack) bitte neu.
- Außerdem muss die Virtualisierungsunterstützung (VT-x / AMD-V) installiert sein, siehe Voraussetzung.
  - Sofern diese bereits aktiviert sind, du aber weiter Fehler bekommst, stelle sicher das kein anderer Hypervisor läuft: Hyper-V kann über Systemsteuerung / Programme / Programme und Features / Windows-Features aktivieren oder deaktivieren / Haken bei Hyper-V entfernen / OK deaktiviert werden.
- Bei Darstellungsproblemen gegebenenfalls via Rechtsklick und Ändern auf die Einstellungen der SPiC-Editor VM in VirtualBox wechseln, dort unter Anzeige den Grafik-Controller wechseln und die VM starten
- Sofern ein Start der VM nicht möglich ist, da der USB 2.0 controller nicht gefunden wurde:
  - Das Extension Pack wurde nicht korrekt installiert. Versuche eine (erneute) Installation und starte den PC neu.
  - Sofern die Installation nicht möglich ist / keine Abhilfe schafft, kann auch der USB Controller in der VM deaktiviert werden. Dazu via Rechtsklick und Ändern auf die Einstellungen der SPiC-Editor VM in VirtualBox wechseln, dort unter System das Zeigergerät auf PS/2-Maus stellen
    und anschließend unter USB den USB deaktivieren, indem der Haken bei USB-Controller aktivieren entfernt wird
    Bestätigen mit OK und VM starten. Diese Einstellungen sind für den Übungsbetrieb dieses Semester vollkommen ausreichend, ein Hardware SPiCboard kann jedoch damit nicht mehr programmiert werden.
- Als Notlösung: Entfernter Zugriff auf den CIP mittels Xpra

### Meine VM ist auf meinem Mac sehr langsam

- Vermutlich hast du ein Retina-Display mit HiDPI. Diese hohe Auflösung bereitet VirtualBox Probleme.
- Stelle VirtualBoxVM.app auf niedrigere Auflösung ein, indem du zu VirtualBox.app/Contents/Resources/VirtualBoxVM.app navigierst (Rechtsklick auf VirtualBox.app und Paketinhalt zeigen auswählen) und den Haken bei Open In Low Resolution setzt:
  (Siehe dazu auch Diskussion im VirtualBox Forum)

### Meine SPiC-IDE in der VM ist zu klein

- Normalerweise passt sich die SPiC-VM an die Größe des VirtualBox Fensters an (sofern in der Menüleiste unter Anzeige die Automatische Anpassung der Gastanzeige aktiviert ist.
- Du kannst auch manuell die Gastbildschirmgröße einstellen, wähle dazu in der Menüleiste unter Anzeige / Virtueller Monitor 1 die gewünschte Auflösung aus:

### Meine SPiC-IDE (remote CIP) in der VM wirft einen Fehler

- Für Verbindungsprobleme (Verbdinung zu den CIP Rechnern nicht möglich) siehe Meine SPiC-IDE (remote CIP) kann keine Verbindung zu den CIP Rechnern herstellen
- Stelle bitte sicher, dass du die neuste Version verwendest - führe dazu Update aus.
- Es darf nur eine Instanz der SPiC-IDE gleichzeitig laufen (also entweder SPiC-IDE (local) oder SPiC-IDE (remote CIP), aber nicht beides gleichzeitig)
- Bei Problemen mit der Anmeldung siehe Mein Passwort funktioniert nicht in der SPiC VM
- Sofern eine Warnung bezüglich modification time beim Übersetzen kommt, wie

      make: Warning: File 'foo.c' has modification time 0.42 s in the future
      make: warning:  Clock skew detected. Your build may be incomplete.

  läuft deine Systemuhr vermutlich nicht exakt (wurde ggf. länger nicht synchronisiert) und es gibt einen Zeitunterschied zu der Uhr im CIP. Speichere alle relevanten Dateien für die Aufgabe und starte einfach noch einmal den Übersetzungsvorgang. Diese Warnung ist nach der Abgabe nicht relevant, es gibt keinen Punktabzug.
- Schicke uns (an i4spic-orga@lists.cs.fau.de) den vollständigen, automatisch generierten Fehlerbericht mit einer kurzen Beschreibung was du gemacht hast. Dieser Fehlerbericht liegt nach einer Fehlermeldung im Zwischenspeicher und kann mittels Rechtsklick und Einfügen in deinem Mailprogramm eingefügt werden & sieht wie folgt aus:

      ---SPiC-IDE Fehlernachricht Anfang---
      SPiC IDE 12
      Linux spic-editor 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux / ID: f498c6fc641b4d2589b5a55abd698d2f
      Meldung:
      [...]
      name:           vboxguest
      vermagic:       4.19.0-8-amd64 SMP mod_unload modversions
      ---SPiC-IDE Fehlernachricht Ende---

### Meine SPiC-IDE (remote CIP) kann keine Verbindung zu den CIP Rechnern herstellen

- Stelle bitte sicher, dass dein Hostbetriebssystem eine Internetverbindung hat (in dem du zum Beispiel die FAQ Webseite aktualisierst)
- Prüfe außerdem, ob unter Geräte / Netzwerk der Eintrag Netzwerkadapter verbinden aktiv ist (das Symbol einen Haken hat)
- Starte innerhalb der VM den Webbrowser und versuche eine Webseite anzusurfen.
- Sofern auch ein Neustart des Hostbetriebssystems nicht hilft, installiere eine aktuelle Version von VirtualBox (dadurch werden auch die VirtualBox Netzwerkadapter aktualisiert)

### Meine SPiC-IDE in der VM verhält sich komisch

- Führe unter Applications / System das Skript Remove SPiC-IDE User Directories aus (dabei sollten keine weiteren Programme wie die IDE laufen):
  Dieses Skript beinhaltet das in Meine SPiC-IDE verhält sich komisch (Universallösung) beschriebene Verfahren.
- Wenn alle Stricke reißen und das oben beschriebene Zurücksetzen auch nicht hilft:
  - Alle noch benötigten Dateien in der VM sichern (z.B. in den CIP kopieren, oder per Zwischenablage in eine Datei auf dem Host kopieren)
  - VM herunterfahren und in VirtualBox mit Rechtsklick auf SPiC-Editor, Entfernen... den Button Alle Dateien löschen auswählen
  - SPiC-IDE VM erneut in VirtualBox importieren.

### Meine VM lässt sich mit dem Fehlercode "E_FAIL (0x80004005)" nicht mehr starten!

- Ursache: du hast vermutlich deine VM nicht richtig herunter gefahren (siehe Was ist der beste Weg um die VM zu beenden?) sondern den Zustand der virtuellen Maschine speichern ausgewählt. Dies speichert den Inhalt des Arbeitsspeichers, was allerdings sporadisch inkonsistent werden kann.
- Lösche das Arbeitsspeicherabbild, indem du mit der rechten Maustaste in VirtualBox auf SPiC-Editor klickst und im erscheinenden Kontextmenü Verwerfen... auswählst. Bestätige dies auch im nächsten Fenster mit Verwerfen.
- Bitte fahre zukünftig die VM über Shut Down herunter, anstatt den Zustand zu speichern.

### Das Hardware SPiCboard kann nicht über die VM programmiert werden

- Vielleicht funktioniert die USB Weitergabe nicht – diese benötigt zwingend das VirtualBox 6.1.6 Oracle VM VirtualBox Extension Pack. Sofern du den USB zuvor in der VM deaktiviert hast, muss es wieder aktiviert werden.
- Stelle außerdem sicher, dass das USB Kabel funktionsfähig ist (und zwar die Datenleitungen).
- Abhängig vom Gastbetriebssystem dauert die Erkennung des Boards etwas länger (bis zu 30 Sekunden), da es erst vom Host erkannt, durchgereicht und im Gast wieder erkannt werden muss.
- Besitzt du die benötigten Berechtigungen? Unter debianoiden Systemen (wie Ubuntu) muss der Benutzer evtl. Mitglied in der Gruppe `vboxusers` sein: `sudo usermod -a -G vboxusers $USER` und anschließend neu anmelden.

### Was ist der beste Weg um die VM zu beenden?

- Beim Schließen des VM Fensters bekommt man die Auswahl zwischen Zustand speichern, per ACPI-Event herunterfahren oder die virtuelle Maschine ausschalten. Da sowohl die erste als auch letzte Möglichkeit zu Problemen führen können, soll hier per ACPI-Event dem Gastbetriebssystem der Wunsch das System zu beenden mitgeteilt werden.
- Einfacher geht das aber auch direkt über die VM, in der Leiste oben rechts auf SPiC VM Local User klicken und Shut Down auswählen:

## Webzugriff mittels Xpra

- Sofern du Probleme mit der Virtuellen Maschine hast, kannst du alternativ den Webzugriff über Xpra verwenden, indem du auf remote.cip.cs.fau.de gehst.
- Stelle sicher, dass du einen aktuellen modernen Browser nutzt wie Firefox oder Google Chrome. Sofern ein Browser Probleme beim Zugriff hat, versuche bitte einen anderen Browser.
- Die Fenstergröße von der SPiC-IDE bzw. dem Desktop ist abhängig von der Fenstergröße deines Webbrowsers.
- Stelle bei der Anmeldung sicher, dass du das korrekte Tastaturlayout eingestellt hast. Bei Problemen (z.B. wenn Sonderzeichen nicht gehen) kannst du die Bildschirmtastatur über den Button starten.
- Speichere (sehr) oft. Ein kurzer Verbindungsabbruch kann bereits dazu führen, dass all deine ungespeicherten Änderungen verloren gehen.
- Bei Problemen – z.B. die SPiC IDE wurde minimiert und kann nicht mehr gesehen werden – hilft oftmals ein Aktualisieren (Refresh) der Webseite.

## Abgabe der Übungsaufgaben

Warning
  Die Übungsaufgaben müssen rechtzeitig über das entsprechende Skript abgegeben werden. Abgaben per Mail werden nicht akzeptiert!

### Wie kann ich abgeben?

- In der SPiC-IDE einfach den Button drücken (in der VM geht das natürlich nur beim SPiC IDE (remote CIP))
- Die Abgabe geht neben der SPiC IDE auch im Terminal:
  - Kommando im CIP ausführen: `/proj/i4spic/bin/submit aufgabeX` (du musst `X` natürlich entsprechend der Aufgabennummer ersetzen)
  - Du kannst für die zweite Abgabe die Pfeil-Hoch-Taste verwenden, um durch die vorher getätigten Kommandos zu navigieren, und musst dann den Befehl nicht neu abtippen/kopieren.
  - Sofern du in deiner VM bist, musst du zuerst sicherstellen, dass die Dateien für die Aufgabe bereits in den CIP kopiert wurden und dich anschließend auf einen CIP Rechner verbinden, z.B. mit `ssh LOGIN.nosp@m.@cip.nosp@m.2a5.c.nosp@m.ip.c.nosp@m.s.fau.nosp@m..de` (wobei `LOGIN` entsprechend angepasst werden muss und auch andere Server als `cip2a5` möglich sind – siehe Login von außen - via SSH). Du kannst nun über die SSH-Session das submit Kommando wie oben beschrieben ausführen.
- Falls die Datei (wie im Beispiel) nicht gefunden wurde, prüfe bitte
  - den Namen der Quelltextdatei (`main.c` statt z.B. `blink.c`?)
  - den richtigen Speicherort (`/proj/i4spic/$USER/`)
  - den Verzeichnisnamen (ist er auch wirklich `aufgabe1` und nicht `Aufgabe1`? Groß- und Kleinschreibung macht einen Unterschied, auch sollte kein Leerzeichen zwischen `aufgabe` und der Zahl sein)

### Ich konnte nicht rechtzeitig abgeben...

- Wir nehmen verspätete Abgaben im Regelfall nicht an und bewerten die Abgabe dann mit 0 Punkten. Wenn ihr gute Gründe habt (z.B. nachweislich einen Krankenhausaufenthalt) meldet euch bei uns.
- Sofern du Probleme mit dem Abgabesystem hast, die sich nicht durch diese FAQ lösen lassen, gib uns rechtzeitig Bescheid, damit wir dir innerhalb der Abgabefrist helfen können - nicht erst fünf Minuten vor Abgabeende. Gehe davon aus, dass wir nur werktags zu den üblichen Arbeitszeiten erreichbar sind. Beispiel: Bei Abgaben am Sonntag abend solltest du uns unbedingt vor Freitag, 12 Uhr kontaktieren, damit wir reagieren können!
- Tipp: Du kannst auch mehrmals abgeben. Zum Beispiel das erste Mal, wenn die Aufgabe grob gelöst ist, und ein zweites Mal wenn du alle Fehler bereinigt hast. Oder noch (viel) öfters. Wir bewerten nur die letzte Abgabe vor der Abgabefrist.

### Ich habe Probleme bei der Abgabe...

- Für das Skript ist der korrekte Pfad (`/proj/i4spic/bin/abgabe`) und der korrekte Parameter (Groß-/Kleinschreibung!) nötig.
- Liegen die Dateien im richtigen Ordner? Schema `/proj/i4spic/$USER/aufgabeX/datei.c` (`aufgabeX` mit kleinem "a" und ohne Leerzeichen!)
- Entspricht der c-Dateiname der Vorgaben in der Aufgabe? (also nicht `main.c`)