AVR Programmierung

Aus c't-Bot Wiki
Wechseln zu: Navigation, Suche

Installation der AVR Tools unter Linux

Die Informationen auf dieser Seite sind leider nicht mehr aktuell. Um eine für den aktuellen Bot-Code funktionierende Toolchain zu bauen, stattdessen bitte dieser Anleitung folgen.


Übersetzung aus dem englischen Original. Zu finden unter www.nongnu.org/avr-libc

Dies ist ein HowTo zur Erstellung und Installation der kompletten Entwicklungsumgebung für AVR Prozessoren unter Linux.

Die Default-Installation erfolgt im Ordner /usr/local/avr. Dafür sind Root-Zugriffsrechte erforderlich. Wenn keine Root-Zugriffsrechte vorhanden sind kann die Installation auch im Home-Verzeichnis des Benutzers angelegt werden.

Benötigte Tools

Zur Installation werden folgende Dateien benötigt. Dazu ist ein Internet-Zugang erforderlich.

Vorbereitung

Man öffnet eine Konsole bzw. Terminal und gibt folgendes ein:

Installation im /usr/local/avr Verzeichnis (Root-Rechte erforderlich):

$ PREFIX=/usr/local/avr
$ export PREFIX

Installation im Home-Verzeichnis des Benutzers (keine Root-Rechte erforderlich):

$ PREFIX=$HOME/local/avr
$ export PREFIX

GNU Binutils für AVR

Die binutils beinhalten die notwendigen Low-Level Tools. Sie werden benötigt um den C-Compiler GCC zu übersetzen.

Nach dem Download entpackt man die Quell-Dateien:

$ bunzip2 -c binutils-<version>.tar.bz2 | tar xf -
$ cd binutils-<version>

Falls man eine gezippte Datei (.gz) downgeloaded hat, benutzt man einfach gunzip anstelle von bunzip2

$ gunzip -c binutils-<version>.tar.gz | tar xf -
$ cd binutils-<version>

Man erstellt ein neues Verzeichnis obj-var und erstellt die binutils in diesem Unterordner.

$ mkdir obj-avr
$ cd obj-avr

Als nächstes erstellt man die binutils. Dazu übergibt man dem configure Skript die AVR-spezifischen Parameter.

$ ../configure --prefix=$PREFIX --target=avr --disable-nls

Beim konfigurieren werden eine Menge Bildschirmausgaben erzeugt. Zu guter letzt ein große Anzahl von Makefiles. Der nächste Schritt ist dann das Erstellen der binutils mit make:

$ make

Wenn alle Tools ohne Fehler übersetzt wurden, werden diese anschließend installiert.

$ make install

Wichtig für die nächsten Schritte ist es, den Pfad Umgebung anzupassen:

$ PATH=$PATH:$PREFIX/bin
$ export PATH

GCC für den AVR

Die notwendigen Schritte zur Installation sind die selben wie bei den binutils:

$ bunzip2 -c gcc-<version>.tar.bz2 | tar xf -
$ cd gcc-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ \
    --disable-nls --with-dwarf2
$ make
$ make install


Sollte jemand bei make eine Fehlermeldung bekommen, kann er mal den 5. Schritt durch folgenden ersetzen:

$ ../configure --target=avr --disable-nls --prefix=$PREFIX --with-gnu-ld --with-gnu-as \
    --enable-languages=c --disable-libssp --with-dwarf2 

AVR Libc

Achtung: Zuerst die avr-binutils, avr-gcc installieren und die Pfad Einstellung vornehmen. Dann kann man die avr-libc installiert.

Um die avr-libc zu erstellen und zu installieren:

.tar.gz | tar xf -
$ cd avr-libc-<version>
$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
$ make
$ make install

Alternative Installation

Eine Alternative bietet das Installationsscript aus dem Forum von AVRFreaks: [1] . Zum Download des Scripts muss man allerdings angemeldet sein.

nach etwas Vorarbeit (Pfad und Installationsverzeichnis einstellen) läuft die Installation von (fast) alleine.

Optionale Tools

Einige optionale Tools, die nicht unbedingt erforderlich sind:

Avrdude

Avrdude ist eine Konsolenanwendung zum Flashen der Firmware und Setzen der Fusebits. Avrdude unterstützt eine große Anzahl von Programmieradaptern und läuft unter Windows und Linux. Die Windows Version ist Bestandteil des WinAVR Programm Paketes.

Installation

Avrdude wird ebenso mit dem configure Skript konfiguriert und anschließend übersetzt und installiert:

$ gunzip -c avrdude-<version>.tar.gz | tar xf -
$ cd avrdude-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX
$ make
$ make install

Verwendung

So sieht eine Parameterzeile von avrdude für das Schreiben der Firmware unter Windows:

C:\winavr\bin\avrdude.exe -p ATmega32 -e -c avr910 -P com4 -Uflash:w:"ct-bot.hex":i

Entsprechend sieht eine Parameterzeile von avrdude für das Schreiben der Firmware unter Linux aus:

$ avrdude -p ATmega32 -e -c avr910 -P /dev/ttyUSB0 -Uflash:w:"ct-bot.hex":i

Die einzelnen Parameter bedeuten:

Parameter Beschreibung
-p MCU-Typ MCU Typ Atmega32
-e Chip erase
-c avr910 Programmer Typ stk200 (BlueMP3 ISP) oder avr910 (mySmartUSB)
-P COMx PC Schnittstelle COMx für serielle Ports, LPTx für Parallelports unter Windows. /dev/parportx bzw. /dev/ttySx bzw /dev/ttyUSBx unter Linux.
-U flash:w:"Dateiname.hex":i Schreiben der Datei

Ponyprog

Ponyprog ist ein Programm zum Programmieren aller möglichen Arten von Speichern und Prozessoren, darunter auch die AVR Reihe von Atmel. Ponyprog unterstützt STK200 kompatible Programmer wie den BlueMP3 ISP. AVR910 kompatible Programmer wie der mySmartUSB Programmer werden nicht unterstützt.

Installation

Windows

Ponyprog läuft unter allen unter Windows Versionen ab Windows95. Man benötigt lediglich die aktuelle zip-Datei von Lancos (Version 2.06F BETA) herunterzuladen, auszupacken und die setup.exe zu starten.

Zum Ausführen von Ponyprog unter Windos werden Administrator Rechte benötigt. Mit folgenden Trick kann man Ponyprog auch mit eingeschränkten Benutzerrechten ausführen:

  Als Administrator, Geräte Manager starten -> Ansicht: Ausgeblendete Geräte anzeigen.
  Nicht-PnP Treiber aufklappen und nach 'DriverLINX Port I/O Driver' suchen.
  Für diesen Treiber -> Eigenschaften -> Treiber starten. Auf 'Start' setzen. System neustarten
Linux

Ponyprog war bis zur Version 1.17 als Open Source Projekt mit Quellcode verfügbar. Ab Version 2.0 gibt es nur noch Binär Versionen für einen Redhat Linux Kernel Versionen (Kernel 2.2.x, 2.4.x). Aktuelle Version ist v2.06c BETA. Ponyprog läuft aber auch unter aktuellen Linux Versionen mit 2.6.x Kernel. Dazu benötigt man das libstdc++2.10-glibc2.2 Package.

Ab Version 3.0 ist das Projekt Qt basiert. Auch war das Fuse/Lock Fenster komplett überarbeitet. Es ist möglich, das Projekt aus einigen Linux-Repositories direkt zu installieren, z.B. Ubuntu 19.04, Debian 10. [2]


Für die Installation sind Rootrechte erforderlich:

 $ tar xvfzP ponyprog-2.06c.tar.gz

Man startet Ponyprog aus einer Konsole (ebenfalls mit Rootrechten):

 $ ponyprog2000

Falls es beim Starten von Ponyprog zu folgender Fehlermeldung kommt,

 $ ponyprog2000: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory

fehlt das besagte libstdc++2.10-glibc2.2 Package. Dieses Package installiert man mit:

 $ aptitude install libstdc++2.10-glibc2.2 

Falls es auch hier zu einer Fehlermeldung kommt, das das Paket nicht gefunden werden konnte, muß man wohl das Paket für die verwendete Linuxversion ergooglen. z.B. für Debian oder Ubuntu.

Einstellungen

Ponyprog Menüleiste
Setup

Zuerst stellt man im Ponyprog Interface unter Setup | Interface Setup bzw. dem Icon Ponyprog setup.jpg die verwendete Schnittstelle ein.

Ponyprog Interface Setup Einstellungen

Mit einem Klick auf den Probe Knopf kann man die Einstellungen überprüfen. Mit OK schließt man den Dialog. Anschließend sollte man unter Setup | Calibrate den Programmer kalibrieren. Zu guter letzt stellt man als Device | AVR micro ATmega32 ein. Alle Einstellungen merkt sich Ponyprog in einer Ini-Datei und brauchen beim nächsten Aufruf des Programms erhalten.

Fuses setzen

Als nächstes werden die Fuses des Prozessors gesetzt. Dies braucht man nur einmal zu tun. Hier bitte keine Experimente, sonst kann es passieren, daß man sich vom Prozessor aussperrt. Man wählt den Menüpunkt Command | Security and Configuration Bits... oder das Icon Ponyprog fuses.jpg an. Mit Clear all löscht man alle eventuell gesetzte Häckchen. Keine Angst, wenn dabei auch der Haken bei SPIEN verschwindet. Damit würde man das ISP Interface abschalten. Dies geht aber mit einem ISP Programmer nicht (deshalb ist dieses Feld auch grau hinterlegt). Auch die Einstellungen der BOOTSZ0 und BOOOTSZ1 Flags, wie von der c't empfohlen, ist unerheblich, da noch kein Bootloader verwendet wird. Ein Klick auf den Write Knopf schreibt die Fuse-Bits. Jetzt kann man das erste Programm auf den c't-Bot flashen.

Ponyprog Fuses Einstellungen
Firmware flashen

Über den Menüpunkt File | Open Programm(FLASH) File, bzw. einem Klick auf das Icon Ponyprog4.jpg, lädt man die gewünschte Firmware (z.B. ct-Bot-test-analog.hex) in Ponyprog. Ein EEPROM File wird nicht benötigt. Mit dem Menüpunkt Command | Write Programm (FLASH), bzw. einem Klick auf das folgende Icon Ponyprog5.jpg wird die Firmware auf den c't-Bot übertragen.

Weblinks


Autoren: Marvin, Eduard-X

GDB für AVR

Gdb wird ebenso mit dem configure Skript konfiguriert und anschließend übersetzt und installiert:

$ bunzip2 -c gdb-<version>.tar.bz2 | tar xf -
$ cd gdb-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr
$ make
$ make install

Um den Gnu Debugger zu benutzen ist der Simulator simulavr notwendig.

Simulavr

Simulavr wird ebenso mit dem configure Skript konfiguriert und anschließend übersetzt und installiert:

$ gunzip -c simulavr-<version>.tar.gz | tar xf -
$ cd simulavr-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX
$ make
$ make install

Derzeit unterstützt der Simulavr den ATmega32 noch nicht. Ein Patch dafür ist aber bereits eingereicht.

Autoren: Marvin

WinAVR

WinAVR (ausgesprochen "whenever") ist eine Sammlung von Open Source Entwicklungstools für Atmel AVR Prozessoren auf Windows Plattformen. Er enthält neben den GNU GCC compiler für C and C++, die AVR Libc (eine AVR spezifische Bibliothek), viele Tools wie avr-dbg (Debugger), avrdude (Programmer) und noch vieles mehr.

Die aktuelle Version von WinAVR findet man bei Sourceforge.

Weblinks

Autoren: Marvin

Weblinks