Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

 

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 Inhalt
    SUBSYSTEM!="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-Anzeige ok 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 werden
    sudo apt install libusb-dev libhidapi-dev gdb-avr
    cd AVaRICE/avarice/
    ./Boostrap
    ./configure
    make
    sudo make install
  • Debuggen einer Anwendung durch
    1. Übersetzen mit Debuginformationen (Parameter -g) und am besten ohne Optimierungen (-O0)
    2. Übertragen auf das SPiCboard
    3. Mit AVaRICE über das mEDBG-Protokoll (Parameter -5 -w eine Verbindung mit dem OnBoard-Debugger auf dem SPiCboard herstellen
    4. GDB über einen Socket mit AVaRICE verbinden.
    5. Steuerung über die GDB Konsole (weiter Infos)
  • Der Ablauf ist in der Makefile mit dem %.debug Target gekapselt: Eine Anwendung blink.c kann mit
    make 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://www4.cs.fau.de/Lehre/current/V_SPIC/editor/repo.gpg.key | sudo apt-key add -
      echo "deb https://www4.cs.fau.de/Lehre/current/V_SPIC/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://www4.cs.fau.de/Lehre/current/V_SPIC/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

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.
  • 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).
  • 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!