SPiCboard
Entwicklung auf dem Heimcomputer unter Linux (insbesondere Debian/Ubuntu)
Installation
Benötigte Dateien und Programme
- Die libspicboard-Bibliothek muss heruntergeladen und entpackt werden (der Pfad sollte keine Leerzeichen beinhalten).
- Für den AVR müssen die C-Standardbibliothek (avr-libc), der Übersetzer (gcc-avr) sowie ein Tool zur Kommunikation/Übertragung der fertig übersetzten Programme (avrdude) installiert werden. Unter Ubuntu oder Debian geht das mittels
sudo apt install avr-libc gcc-avr avrdude
Automatische Berechtigungen mittels udev
- Falls man nun das SPiCboard via USB mit dem PC verbindet, wird man feststellen, das ein normaler Benutzer keine Berechtigung hat, eine neue Anwendung aufzuspielen. Um jedoch den Zugriff auf das zugrunde liegende Xplained Mini auch für Nicht-Superuser erlaubt ist, erstelle eine Datei
/etc/udev/rules.d/60-xplainedmini.rules
mit dem InhaltSUBSYSTEM!="usb", ACTION!="add", GOTO="xplained_end" ATTR{idVendor}=="03eb", ATTR{idProduct}=="2145", GROUP="adm", MODE="666" LABEL="xplained_end"
Ab dem nächsten Neustart ist die neue udev-Regel aktiv, allerdings kannst du sie auch sofort laden:sudo udevadm control --reload-rules sudo udevadm trigger
- Nun noch die libspicboard herunterladen und in ein leeres Verzeichnis entpacken. Nachdem man das SPiCboard verbunden hat und mit einem Terminal in das Unterverzeichnis 'beispiel' gewechselt ist, sollte nach Eingabe von
make
das Beispielprogramm übersetzt und auf das SPiCboard übertragen werden, und nach Abschluss dort auf der 7-Segment-Anzeigeok
ausgeben.
Debugger
- Der Debugger GDB (für AVR) kann derzeit nur über eine von uns modifizierte Variante des AVaRICE (im GitLab unter i4/SPiC/Tools/AVaRICE) mit dem SPiCboard kommunizieren.
- Nach dem Download (
git clone
oder ZIP-Archiv und entpacken) muss dieser zuerst kompiliert und installiert werden werdensudo apt install libusb-dev libhidapi-dev gdb-avr cd AVaRICE/avarice/ ./Boostrap ./configure make sudo make install
- Debuggen einer Anwendung durch
- Übersetzen mit Debuginformationen (Parameter
-g
) und am besten ohne Optimierungen (-O0
) - Übertragen auf das SPiCboard
- Mit AVaRICE über das mEDBG-Protokoll (Parameter
-5 -w
eine Verbindung mit dem OnBoard-Debugger auf dem SPiCboard herstellen - GDB über einen Socket mit AVaRICE verbinden.
- Steuerung über die GDB Konsole (weiter Infos)
- Übersetzen mit Debuginformationen (Parameter
- Der Ablauf ist in der Makefile mit dem
%.debug
Target gekapselt: Eine Anwendungblink.c
kann mitmake blink.debug
ohne Optimierungen mit Debugsymbolen übersetzt und auf das angeschlossene SPiCboard übertragen werden, anschließend wird eine Verbindung mit GDB über AVaRICE zum SPiCboard hergestellt und die GDB Konsole angezeigt.
Entwicklungsumgebung
- Es gibt eine Vielzahl von integrierten Entwicklungsumgebungen, welche für SPiC verwendet werden können: Vom nerdigen vim über die Standardeditoren Kate und Geany bis hin zum mächtigen Eclipse CDT, ihr habt die Qual der Wahl.
- In den Übungen verwenden wir mit der SPiC IDE eine angepasste Variante des Atom-Editors. Die Änderungen sind jedoch auf den CIP-Pool zugeschnitten, ein Einsatz auf den heimischen PC bedarf einige Änderungen und wird daher absolut nicht für Einsteiger empfohlen. Wir werden deshalb auch keine Unterstützung zur Einrichtung geben!
- Für Debian 10 (buster) gibt es ein internes Repository mit dem Editor, der die CIP Umgebung nach baut und obige Installationsschritte durchführt. Eine Installation kann wie folgt geschehen (bitte Warnung unten beachten):
sudo apt install apt-transport-https 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 spic-editor
- Warning
- Fremdquellen sind immer ein Sicherheitsrisiko! Es ist möglich, dass die angebotenen Pakete euer System beschädigen – ein Einsatz darf nur innerhalb einer sicheren Umgebung (z.B. Virtuelle Maschine oder alter PC) stattfinden und ist auf vollständig eigene Gefahr!
- Ein Archiv mit dem Editor ist ebenfalls vorhanden, welches nach dem Durchführen obiger Schritte im Wurzelverzeichnis [hier sollten alle Alarmglocken schrillen] entpackt werden muss:
su # Benutzer i4spic anlegen adduser i4spic mkdir -p /proj/i4spic chown i4spic:i4spic /proj/i4spic # Paket holen und entpacken su i4spic wget https://i4spic.cs.fau.de//editor/spic-editor.tar.gz tar -xavf spic-editor.tar.gz -C / # der Befehl ist gefährlich! exit # Bentzerverzeichnis erstellen - USER mit eurem Benutzernamen ersetzen mkdir -p /proj/i4spic/USER/korrektur ln -s /proj/i4spic/pub /proj/i4spic/USER/pub chown USER /proj/i4spic/USER
- Für Debian 10 (buster) gibt es ein internes Repository mit dem Editor, der die CIP Umgebung nach baut und obige Installationsschritte durchführt. Eine Installation kann wie folgt geschehen (bitte Warnung unten beachten):
Hinweise
- Die von uns herausgegebenen SPiCboards sind mit der DWEN-Fuse auf debugWIRE gestellt. Dadurch kann unter Windows im Atmel Studio mit dem Board direkt der Debugger verwendet werden. Das Linuxtool
avrdude
unterstützt dieses Protokoll nur in aktuellen Versionen. - Bei der Verwendung mit älteren Versionen muss gegebenenfalls das SPiCboard zuerst wieder auf den ISP-Mode umgestellt werden (bitte nur mit dem eigenen/privaten SPiCboard durchführen):
- Starte im Atmel Studio (auf Windows) eine Beispielanwendung (z.B.
blink.c
) in einer Debug-Session - Halte auf einem Breakpoint an
- Im Menü Debug die Aktion Disable debugWIRE and Close ausführen. Siehe dazu auch die Dokumentation von Atmel.
- Starte im Atmel Studio (auf Windows) eine Beispielanwendung (z.B.
- Der ATmega328PB ist außerdem so neu, dass
avrdude
ihn teilweise noch nicht unterstützt.- In den Informatik CIP-Pools wird vom Makefile automatisch eine angepasste Version von
avrdude
aufgerufen, diese liegt in/proj/i4spic/pub/tools/
- Auf dem eigenen Rechner muss eine aktuelle Version von avrdude mit einer zusätzlichen Konfigurationsdatei ausgeführt werden:
avrdude -C +atmega328pb.conf -c xplainedmini -p m328pb -v
- Die Fehlermeldung
avrdude: Can't find programmer id "xplainedmini"
ist ein guter Indikator dafür, dass das verwendete avrdude zu alt ist (Version 6.2 oder älter).
- In den Informatik CIP-Pools wird vom Makefile automatisch eine angepasste Version von
- Um wieder den Debugger im Atmel Studio verwenden zu können, muss wieder vom ISP-Mode zu debugWIRE gewechselt werden.
- Im unter Windows im Atmel Studio im Menü Tools die Aktion Device Programming auswählen
- Im neuen Fenster unter Tool das angeschlossene SPiCboard auswählen (mEDBG ATML252304020...) und auf Apply klicken
- Unter der Sektion Fuses einen Haken bei HIGH.DWEN setzen und mit Program auf das SPiCboard schreiben.
- Achtung: Die Veränderung der anderen Fuses kann das SPiCboard irreparabel beschädigen!