Programmieren von zu Hause
Entwicklung auf dem Heimcomputer unter Windows
- Note
- Die SPiC-IDE kann in einer Virtuellen Maschine (VM) sehr einfach unter Windows gestartet werden. Dort wird dann ein Debian Linux mit einer Umgebung ähnlich zum CIP gestartet. Dies ist der empfohlene Weg für die Übungen. Sofern dies nicht gewünscht ist, kann auf eigene Verantwortung (und ohne Unterstützung durch Tutoren) auch direkt eine IDE installiert werden – die Handhabung für den Übungsbetrieb ist allerdings ungleich schwieriger!
Für Windows (ohne die SPiC-IDE VM) empfiehlt sich das Atmel Studio 7.
Installation
Benötigte Dateien
- Die Atmel-Studio-Entwicklungsumgebung.
- Die libspicboard-Bibliothek inklusive der Projektvorlage für Atmel Studio 7
Atmel Studio 7
- Atmel Studio 7 mit allen Abhängigkeiten installieren, inklusive AVR8-Toolchain (Atmel ATmega Series Device Support Pack 1.2.209) und USB-Treiber
- Verbindet nach Abschluss der Installation euer SPiCboard mit dem PC und wartet, bis Windows die Treiber installiert hat (was durchaus einige Minuten dauern kann).
SPiCboard im Atmel Studio einrichten
- Im Explorer ein neues Verzeichnis anlegen
- Die zuvor heruntergeladene libspicboard.zip in dieses Verzeichnis entpacken
- Bei der ersten Verwendung muss die Projektvorlage installiert werden: Atmel Studio starten, über File / Import den Menüpunkt Project Template... auswählen
- Im neuen Fenster bei "Select a project template" auf "..." klicken, in diesen Ordner navigieren und die
AtmelStudio7_Project_Template.zip
auswählen, anschließend auf "OK" - Neue Projekte (Aufgaben) im obigen Verzeichnis erstellen (d.h. das Verzeichnis
libspicboard
aus der ZIP-Datei muss direkt neben euren Projektordnern liegen) - Im Ordner
beispiel
findet sich bereits ein Projekt mit einem (sehr kurzen) Testprogramm, das auf der 7-Segement-Anzeige "ok" ausgibt.
Bei Problemen kontrollieren
- Eigenschaften des Projekts öffnen: z. B. Project / aufgabeX Properties
- Toolchain -> AVR/GNU C Compiler -> Directories ->
..\libspicboard
in den Pfad ändern, in dem dielibspicboard
entpackt wurde - Toolchain -> AVR/GNU Linker -> Libraries ->
..\libspicboard
in den Pfad ändern, in dem dielibspicboard
entpackt wurde - Fragen bitte im Forum stellen, damit alle Studenten von den Antworten profitieren!
Abgabe der Lösungen von Zuhause
- Wenn ihr die Aufgaben auf eurem Rechner programmiert und getestet habt, müsst ihr die entsprechende(n) Quelldatei(en) zuerst in die Uni kopieren, bevor ihr sie abgeben könnt.
- Dazu mit dem Programm WinSCP mit einem CIP-Rechner verbinden (z. B.
faui0sr0.cs.fau.de
), dort Benutzername und Linux-Passwort eingeben. - Dann die Datei in euer Projektverzeichnis
/proj/i4spic/LOGIN/aufgabeX
kopieren bzw. vorher das Verzeichnis aufgabeX anlegen, falls noch nicht vorhanden. Es kann sein, dass das Verzeichnis/proj/i4spic
bzw./proj/i4spic
nicht in der Liste angezeigt wird. In dem Fall: Remote -> Go To -> Open Directory/Bookmark - Schließlich mit dem Programm PuTTY auf einem CIP-Rechner einloggen und dann in der Shell wie sonst auch
/proj/i4spic/bin/submit aufgabeX
eingeben, um abzugeben. - WICHTIG: Abgegeben werden die Dateien, die sich in eurem Projektverzeichnis befinden, und nicht die, die zuhause auf eurem Rechner sind! Es liegt außerdem in eurer Verantwortung, dass ihr die Dateien rechtzeitig einreicht - eine defekte Internetverbindung oder Probleme auf euren PCs sind kein von uns akzeptierter Grund für eine verspätete Abgabe!
Beschreibung der verschiedenen Einstellungen
- Die Header-Dateien (z. B.
led.h
) enthalten die Schnittstellenbeschreibung für dielibspicboard
. Der Übersetzer benötigt den Pfad zu diesen Dateien, um die Funktionsaufrufe an die Bibliothek (z. B.sb_led_on(GREEN0)
) auf deren richtige Verwendung zu überprüfen. - Der Linker bindet euer Programm mit der eigentlichen bereits übersetzten Bibliothek (
libspicboard.a
) zusammen. Dazu braucht er Verzeichnispfad und Namen der Bibliothek. Das Prä- und Suffix des Dateinamens ("lib" und ".a") werden dabei nicht mit angegeben! - Weitere Einstellungen sorgen dafür, dass der Compiler intolerant gegenüber schlampiger Programmierung ist (
-pedantic
,-Wall
,-Wextra
und-Werror
: alle Warnungen ausgeben und als Fehler behandeln), optimiert (-Os
in der Build-Konfiguration) oder nicht (-O0
in der Debug-Konfiguration) und für die richtige Plattform (freestanding
aufatmega32
) übersetzt. - Die Einstellungen kann man in den Projekt-Eigenschaften nachlesen und verändern (nichtsdestotrotz müssen die Abgaben mit der von uns vorgegebenen Einstellung übersetzen).
Fragen und Antworten
Wie erstelle ich ein neues Projekt?
- Atmel Studio 7 starten, über File / New auf den Menüpunkt Project... navigieren
- Im nun erscheinenden Fenster New Project muss unsere
SPiCboard Projekt
Vorlage ausgewählt werden (siehe auch Es gibt im Atmel Studio kein "SPiCboard Projekt"! ). - Der Projektname kann für eigene Hobbyprojekte beliebig gewählt werden, für Abgaben muss es jedoch
aufgabe
und die jeweilige Aufgabennummer sein. - Als Location sollte ein Unterordner in einem SPiC-Verzeichnis gewählt werden, in dem die
libspicboard
liegt (da eure Projekte i.d.R. eben diese lib brauchen, und sie in den benachbarten Verzeichnissen gesucht wird). - Bei Create directory for solution sollte kein Haken sein.
Es gibt im Atmel Studio kein "SPiCboard Projekt"!
- Auf eurem Heimrechner müsst ihr erst das Projekt-Template importieren, siehe SPiCboard im Atmel Studio einrichten
Wie ändere ich den Quelltext-Dateinamen?
- Falls nicht bereits vorhanden, blende den Solution Explorer über den Menüpunkt View ein.
- Rechtsklick auf die zu ändernde Datei (meist
main.c
) und Rename auswählen. Nun kann der Name geändert werden.
Hilfe, ich bekomme eine "Launch Failed" Fehlermeldung
- Erstmal: Keine Panik, hinsetzen und ruhig durchatmen. Diese wenig hilfreiche Fehlermeldung weißt euch meist darauf hin, dass ihr in eurem Projekt kein SPiCboard ausgewählt habt.
- Stellt sicher, dass euer SPiCboard angeschlossen ist (und Windows die Treiber installiert hat). Zudem muss der Solution Explorer aktiviert sein (kann über das Menü View aktiviert werden).
- Klickt im Solution Explorer mit der rechten Maustaste auf euer Projekt (normalerweise aufgabeX) und wählt Properties (letzter Menüpunkt) aus.
- In der neuen Ansicht den Reiter Tool auswählen und in "Selected debugger/programmer" das SPiCboard mit der Bezeichnung "mEDBG ATML252304..." aktivieren (das Ende entspricht der Seriennummer, die auch auf der Rückseite des SPiCboards steht).
- Sollte hier nur Simulator und Custom Programming Tool stehen, so ist euer SPiCboard entweder nicht angeschlossen, oder ihr habt Verbindungs- bzw. Treiberprobleme.
Wie starte ich den SPiCboard Simulator aus Atmel Studio?
- Alternativ zum direkten starten über
spicsim.bat
kannst du auch denSPiCsim
aus Atmel Studio starten, um dadurch schnell testen zu können. - Gehe dazu in den Projekt Einstellungen (Im Atmel Studio Solution Explorer Rechtsklick auf das Projekt und wähle Properties) unter dem Reiter Tool das Custom Programming Tool aus (Nein, nicht "Simulator". Ja, verwirrend).
- Als
Command
muss der Aufruf zu Java mit dem Simulator und der auszuführenden Datei stehen. Letztere kann mittels Makro von Atmel Studio übergeben werden, z.B. durchjava -jar P:\libspicboard\doc\SPiCsim.jar "$(OutputDirectory)\\$(OutputFileName)$(OutputFileExtension)"
für den Windows CIP (auf deinem Heimrechner muss vermutlich ein anderer Pfad eingestellt werden). - Ein hoher
Timeout
verhindert unnötige Warnungen, z.B.6000
ist ein guter Wert. - Du kannst nun direkt euer Programm über den Startbutton im Simulator ausführen (ein Debuggen ist jedoch nicht möglich).
- Bitte denk daran, dass der Simulator nicht über alle Funktionen (insbesondere keine serielle Kommunikation/Konsole oder Display) verfügt und sich auch in Einzelfällen anders als das SPiCboard verhalten kann. Deine Abgaben müssen mit dem echten SPiCboard funktionieren. Nichtsdestotrotz ist der
SPiCsim
eine sehr gute Unterstützung, falls kein SPiCboard verfügbar ist.
Der Compiler meckert "undefined reference to main()", obwohl eine main()-Methode definiert ist.
- Verschiebe die Hauptquelldatei (z. B.
blink.c
) rechts im Solution Explorer direkt unter den Projektknoten (z. B.aufgabe0
). Dann nochmal neu kompilieren.
Atmel Studio meckert, dass die Firmware des Debuggers nicht aktuell ist.
- Die Firmware durch den angebotenen Dialog des Atmel Studio updaten lassen.
Im Project-Menü erscheint kein Punkt "Add File".
- Vorher rechts den Solution Explorer auswählen.