SPiC-IDE

# Vorwort

Die SPiC-IDE (Integrated Development Environment) wurde für die Benutzung unter Linux entwickelt und basiert auf dem freien Editor Atom. Ziel ist ein einfacher und intuitiver Einstieg in die systemnahe Programmierung in C: alle notwendigen Werkzeuge sollen schnell zur Hand sein ohne von zu viel Funktionalität erschlagen zu werden. Schließlich sollst du dich komplett auf die Programmierung konzentrieren können, ohne dich mit der Arbeitsumgebung herumärgern zu müssen.

Jedoch hat die SPiC-IDE vermutlich wie alle neuen Projekte noch etwas Verbesserungsbedarf. Wenn dir Fehler auffallen oder du hilfreiche Vorschläge für Änderungen hast, würden wir uns über eine Mail an i4spic@lists.cs.fau.de freuen.

# Starten der IDE

- Im Startmenü unter FAU Courses die SPiC-IDE auswählen
- Alternativ kann die IDE auch durch Ausführen des Skripts `/proj/i4spic/bin/editor` gestartet werden.
- Es kann einige Sekunden dauern, bis die IDE gestartet ist, insbesondere beim ersten Start.

# Die Oberfläche

Die SPiC-IDE hat verschiedene Entwicklungsmodi: Für den Mikrocontroller (erster Veranstaltungsteil von SPiC) kann mit SPiCboard die Hardware programmiert werden, während SPiCsim einen Simulator anbietet. Für den zweite Veranstaltungsteil in SPiC gibt es mit Linux einen Modus für die Systemprogrammierung. Das Beispiel zeigt die Oberfläche im SPiCboard Modus.

- Auf der linken Seite ist unter Project dein SPiC-Projektverzeichnis (statt uj66ojab sollte hier dein Login stehen).
  - Für jede Aufgabe musst du hier einen Unterordner `aufgabeX` anlegen, wobei `X` die entsprechende Aufgabennummer ist
  - Im Unterordner `korrektur` befinden sich deine korrigierten Abgaben als PDF
  - Der Unterordner `pub` ist eine symbolische Verknüpfung auf den öffentlichen Ordner, welcher unter anderem Beispiele, Folien und Aufgabenstellungen beinhaltet. Du kannst nur lesend auf diesen Ordner zugreifen!
- In der obersten Zeile befindet sich die Werkzeugleiste, welche dir einen schnellen Zugriff auf häufige Funktionen bietet.
- Im Zentrum ist die eigentliche Arbeitsfläche, primär wird hier die Texteditoroberfläche angezeigt.
  - Es können mehrere Tabs gleichzeitig geöffnet sein (auch eine side-by-side-Darstellung ist möglich).
  - Neben Quelltextdateien können auch PDFs (z.B. Aufgabe, Folien oder Korrektur) oder HTML-Dokumente (wie diese Hilfe) angezeigt werden
- Darunter werden bei Bedarf weitere Fenster eingeblendet
  - Atom Shell Commands zeigt die Ausgabe von den Befehlen der Werkzeugleiste an - sofern z.B. ein Fehler beim Übersetzen auftritt wird hier die Fehlermeldung und die Stelle (Datei sowie Zeile) angezeigt
  - In dem Terminal wird eine Shell ausgeführt
  - Bei der Fehlersuche lässt sich der Debugger hier über die eingeblendeten Tasten steuern, während rechts der Aufrufstapel sowie die relevanten Variablenwerte angezeigt werden.
- Über die `Alt`-Taste kann die Menüleiste eingeblendet werden - dies ist jedoch im normalen SPiC -Übungsbetrieb nicht notwendig.

## Die Werkzeugleiste

- Auf der linken Seite befinden sich die zur Textbearbeitung üblichen Buttons:
  - Neuen Aufgabenordner erstellen. Als Name sollte `aufgabeX/` gewählt werden, wobei statt `X` die Aufgabennummer steht. Beachte: Kleinschreibung und keine Leerzeichen!
  - Neue (leere) Datei öffnen.
  - Datei speichern. Der Name der Quelltextdatei wird durch die Aufgabenstellung vorgegeben und ist für eine erfolgreiche Abgabe wichtig. Wird eine ungespeicherte Änderung erkannt, so wird das Symbol eingefärbt.
  - Aktuelle Lösung abgeben (der Ordnername muss entsprechend `aufgabeX` lauten und der Dateiname muss mit der Aufgabenstellung übereinstimmen). Mehrfache Abgaben sind möglich (und werden empfohlen). Gewertet wird die letzte Abgabe vor dem Abgabeende. Wird erkannt, dass die lokal gespeicherte Datei sich von der abgegebenen Lösung unterscheidet, so wird das Symbol eingefärbt (diese Anzeige ist unter Umständen bei hoher Serverlast nicht verfügbar und dient nur als zusätzlicher Hinweis - es liegt in eurer Verantwortung Änderungen erneut abzugeben, im Zweifel einfach nochmals abgeben!).
  - Zeige die zuletzt abgegebene Lösung der gerade bearbeiteten Aufgabe an (sofern vorhanden)
  - Frage die verbleibende Zeit für die gerade bearbeitete Aufgabe ab.
  - Letzte Änderung rückgängig machen.
  - Rückgängig gemachte Änderung wiederherstellen.
  - Markierten Quelltext (anhand der geschweiften Klammern) einrücken (formatieren). Sofern kein Quelltext markiert ist, wird die gesamte Datei formatiert.
  - Aktuelles Fenster in eine neue Anzeigefläche rechts von der aktuellen Anzeigefläche verschieben (side-by-side Anzeige). Diese geteilte Ansicht empfiehlt sich z.B. um gleichzeitig die Aufgabenstellung (oder Dokumentation) neben dem Quelltext anzuzeigen.
  - Den Editor für einen entfernten Zugriff freigeben – es wird ein Zugriffscode im Format SPiCxxxxxxx generiert, welcher an Tutoren weitergeben werden kann, damit diese einen Fernzugriff auf deinen Editor erhalten. Mittels kann die Freigabe wieder aufgehoben werden.
  - Zeige eine Bildschirmtastatur mit englischem (US) Layout.
  - Zwischen hellem und dunklem Design umschalten
- SPiCboard Umschalter zwischen den Entwicklungsmodi; Für den Mikrocontroller stehen folgende Buttons zur Auswahl:
  - Compile C-Quelltext in optimierten Maschinencode für den Atmega328pb übersetzen (gut, um Syntaxfehler zu finden)
  - Flash Programm auf das angeschlossene SPiCboard übertragen (übersetzt den C-Quelltext automatisch, wenn nötig)
  - Debug C-Quelltext ohne Optimierungen mit Debuginformationen übersetzen und auf das angeschlossene SPiCboard übertragen, anschließend in den Debugmodus wechseln. Haltepunkte können zuvor durch einen Klick vor der entsprechenden Zeilennummer im C-Quelltext bestimmt werden (roter Punkt vor der Zeilennummer)
  - Solution Überträgt die Musterlösung der jeweiligen Aufgabe auf das angeschlossene SPiCboard
  - Help Zeige die Hilfe zur IDE bzw. die Dokumentation der libspicboard an. Dabei werden zusätzliche Buttons zur Navigation angezeigt ( und um in der Historie zurück respektive vorwärts zu navigieren und um die aktuelle Seite neu zu laden)
- SPiCsim Umschalter zwischen den Entwicklungsmodi. Für den Simulation des Mikrocontrollers stehen folgende Buttons zur Auswahl:
  - Compile C-Quelltext in optimierten Maschinencode für den Atmega328pb übersetzen
  - Simulate Programm im (neuen) SPiCsim ausführen (Übersetzen geschieht ebenfalls automatisch, wenn nötig)
  - Legacy Programm im bewährten (Legacy) SPiCsim ausführen (Übersetzen geschieht auch hier automatisch, wenn nötig)
  - Debug Quelltext ohne Optimierungen mit Debuginformationen übersetzen und im SPiCsim Fehlersuchmodus ausführen. Haltepunkte können zuvor durch einen Klick vor der entsprechenden Zeilennummer im C-Quelltext bestimmt werden (roter Punkt vor der Zeilennummer)
  - Solution Musterlösung der jeweiligen Aufgabe im Simulator starten
  - Help Zeigt die Hilfe zur IDE bzw. die Dokumentation der libspicboard an.
- Linux Umschalter zwischen den Entwicklungsmodi. Für die Systemprogrammierung unter Linux stehen folgende Buttons zur Verfügung:
  - Make Ruft das gleichnamige Build-Management-Tool mit `make Dateiname` zum Übersetzen des C-Quelltextes auf. Der Button ist ausgegraut, wenn im jeweiligen Ordner kein Makefile liegt und wird nach kurzer Zeit aktiv, sobald ein Makefile im Ordner angelegt ist
  - Debug Wechsel in den Debugmodus, zeigt zu Beginn eine Oberfläche für die Konfiguration des GDB an
  - Terminal Integriertes Terminalfenster ein- bzw. ausblenden
  - Help Zeige die Hilfe zur Entwicklung unter Linux an (insbesondere die SPiC-Zettel zur C Standard Library [libc])

Bei einer Shell-Skriptdatei wird ein Button angezeigt, durch die Ausführung erlaubt. Es Skripte aus nicht vertrauenswürdige Quelle sollten nicht ausgeführt werden, denn diese könnten unerwünschte Programme installieren oder zu einem kompletten Datenverlust führen!

Die Vorlesungs- und Übungsfolien (aus dem `pub`-Ordner) können ebenfalls im Editor angezeigt werden, dafür stehen folgende Buttons zur Verfügung:

- Vorherige Seite anzeigen
- Nachfolgende Seite anzeigen
- Die ursprüngliche Standardvergrößerungsstufe wiederherstellen
- Dokumentenansicht vergrößern
- Dokumentenansicht verkleinern
- In das Fenster einpassen (Breite)

Für viele Aktionen (wie Compile) werden weiterführende Informationen und Fehler auf der automatisch eingeblendeten Konsole (mit den Namen Atom Shell Commands) angezeigt, ggf. ist auch eine Benutzerinteraktion notwendig (wie z.B. bei der Abgabe von Gruppenaufgaben)