Benutzer-Werkzeuge

Webseiten-Werkzeuge


contiki:upload_with_avrdude_to_avr

Dies ist eine alte Version des Dokuments!


Flashen des AVRs direkt aus Instant Contiki mit avrdude

Das Entwickeln mit Instant Contiki kann weiter vereinfacht werden, wenn auf AVR Studio verzichtet wird. Durch den Einsatz von avrdude kann auch der Upload auf den Mikrocontroller direkt aus Instant Contiki erfolgen. Dazu muss avrdude auf Instant Contiki installiert werden. Mit Datum vom 15.2.2016 wird allerdings immer noch avrdude 6.0.1 aus den Paketquellen installiert. Es empfiehlt sich auf die Version 6.2 zu wechseln (selbst kompilieren, siehe unten).

sudo apt-get install avrdude

Grundsätzlicher Ablauf

Der Aufruf von avrdude geschieht über die Kommandozeile mit

sudo avrdude -c [Programmiergerät] -P [Anschlussport der Programmers] -p [AVR Typbezeichnung] -Uflash:w:[Name der Datei zum Upload]

wobei der letzte Befehlsteil -U wie Upload besagt, dass der flash-Speicher beschrieben (w wie write) werden soll. Wird z.B. als Programmer der JTAG MKII benutzt, als Zielmikrocontroller der Raven USB Stick (AT90USB1287), als Quelldatei die Datei ravenusbstick.hex und als Zielspeichertyp das Flashrom des Mikrocontrollers, dann sieht der Befehl aus wie folgt.

sudo avrdude -c jtagmkII -P usb -p usb1287 -Uflash:w:ravenusbstick.hex

Soll auf den gleichen Mikrocontroller der EEPROM beschrieben werden, so funktioniert folgender Befehl.

sudo avrdude -c jtagmkII -P usb -p usb1287 -Ueeprom:w:ravenusbstick.eeprom

:!: AVR JTAGICE3 InstantContiki installiert aus den Paketquellen immer noch 6.0.1. Der JTAGICE3 mit neuerer Firmware benötigt mindestens avrdude 6.1, da Atmel das Protokoll geändert hat.

Mit den folgenden Befehlen werden benötigte Bibliotheken für die Übersetzung von avrdude installiert:

sudo apt-get install libusb-dev
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libelf-dev

avrdude kann hier heruntergeladen werden: http://download.savannah.gnu.org/releases/avrdude/
Es wird anschließend mit:

./configure
make
sudo make install

übersetzt und installiert.

Herstellen der .hex und .eeprom Files mit avr-objcopy

Prinzipiell sollte das Flashen mit .elf Files in avrdude ebenfalls möglich sein, leider ergaben sich in der Praxis häufig Probleme, weshalb empfohlen wird die .elf Datei in eine .hex Datei für das Flash ROM und eine hex Datei für den EEPROM zu zerlegen.

Das Programm avr-objcopy ermöglicht es aus einer .elf Datei einzelne Sections zu extrahieren bzw. ein Format in ein anders zu konvertieren. Es erfüllt also genau die gewünschte Funktion. Es kann über sudo apt-get install avrdude innerhalb Instant Contiki installiert werden.

Nach dem Kompilierungsvorgang des Contiki Quellcodes, und somit der Erstellung der .elf Datei, kann mit dem Befehl

avr-objcopy -O ihex ravenusbstick.elf ravenusbstick.hex

Die .elf Datei in eine .hex Datei konvertiert werden. Diese Datei dient nachher zum flashen des ROM Speichers. Weiterhin ermöglicht der Befehl

avr-objcopy -O ihex -I elf32-avr -j .eeprom ravenusbstick.elf ravenusbstick.eeprom

Die Daten für den EEPROM in die Datei ravenusbstick.eeprom zu speichern.

Automatisieren aller Vorgänge mit make

Alle zuvor besprochenen Schritte können natürlich gleich im Makefile automatisiert werden. Da dieses für die Kompilierung sowieso verwendet wird genügt es dieses mit den vorher gezeigten Befehlen zu ergänzen. Zum Beispiel das folgende Makfile für den ravenusbstick:

all:
	${MAKE} TARGET=avr-ravenusb MIB_INIT=mib-init-ravenusb.c NOAVRSIZE=1 -f Makefile.ravenusbstick ravenusbstick.elf 
	avr-objcopy -O ihex -R .signature -R .fuse -R .eeprom ravenusbstick.elf ravenusbstick.hex
	avr-objcopy -O ihex -I elf32-avr -j .eeprom ravenusbstick.elf ravenusbstick.eeprom
	avr-size -C --mcu=at90usb1287 ravenusbstick.elf
 
clean:
	${MAKE} -f Makefile.ravenusbstick clean
	rm -rf obj_avr-ravenusb
	rm symbols.c symbols.h ravenusbstick.elf ravenusbstick.hex ravenusbstick.eeprom
 
upload_flash:
	avrdude -c jtagmkII -P usb -p usb1287 -Uflash:w:ravenusbstick.hex
upload_eeprom:
	avrdude -c jtagmkII -P usb -p usb1287 -Ueeprom:w:ravenusbstick.eeprom

Innerhalb des Abschnits all: sind in der zweiten und dritten Zeile die beiden Aufrufe von avr-objcopy, die im vorherigen Abschnitt besprochen wurden. Der eigentlich Upload, besprochen im ersten Abschnitt dieser Seite, befindet sich in den Unterpunkten upload_flash: und upload_eeprom:, somit kann der EEPROM und das ROM einzeln beschrieben werden. Der eigentlich Aufruf geschieht dann mit make [Makefile Abschnitt] also zum z.B. flashen des ROM mit make upload_flash.

Tutorial

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
contiki/upload_with_avrdude_to_avr.1455531525.txt.gz · Zuletzt geändert: 2017/01/24 18:49 (Externe Bearbeitung)