Ralf (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Bar^-5 (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 267: | Zeile 267: | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte:Archiv]] |
Aktuelle Version vom 11. Januar 2020, 13:59 Uhr
Das Atmel-Evaluations-Board von Pollin ist eine recht günstige, universelle und einfache Möglichkeit, um den Zugang zu Atmelspielereien zu finden. Hier sollen die ersten Schritte beschrieben werden, wie man mit Laptop und dem Board spielen kann:
Material
- Atmel-Evaluations-Board V2.0
- ein Prozessor (im Beispiel ein Atmega32)
- Netzteil 9V (Gleich- oder Wechselspannung / Stromversorgung wird über Lüsterklemmen angeschlossen)
- USB-seriell-Adapter mit 9pol-Sub-D-Stecker
- Laptop mit Linux (im Beispiel Debian lenny)
- Pollin-Doku (enthält ein Testprogramm)
Software
Auf dem Laptop sollte folgendes vorhanden sein. Dabei wird nur avrdude zum Aufspielen des Testprogrammes benötigt, der Rest zum Erstellen eigener Programme (gibt es alles im Debian-Repositoty):
- avr-libc
- avra
- avrdude
- binutils-avr
- gcc-avr
Testprogramm aufspielen
Das Testprogramm von Pollin heisst Testtool. Es gibt bei Pollin ein kleines pdf-Dokument dazu, der Source in Bascom (einem speziellen AVR-Basic-Dialekt für den es nur einen kostenpflichtigen Windowscompiler gibt ) sowie das Hexfile TESTTOOL.HEX. Letzteres muss auf den Atmel geflashed werden.
Dazu wird das Evaluations-Board mittels des USB-Seriell-Adapters verbunden, wobei der ISP-Anschluss auf dem Board zu verwenden ist, nicht der RS232. Es ist darauf zu achten, dass der aktuelle User über ausreichende Rechte auf dem USB-Device verfügt. Zum Testen der Kommunikation ist folgendes einzugeben:
prompt > avrdude -p m32 -c ponyser -P /dev/ttyUSB0 -v
Erfolgt als Ausgabe grob sowas wie das folgende, hat
die Verbindung funktioniert:
avrdude: Version 5.5, compiled on Jan 14 2009 at 06:21:50 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ System wide configuration file is "/etc/avrdude.conf" User configuration file is "/home/ralf/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyUSB0 Using Programmer : ponyser AVR Part : ATMEGA32 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 4 10 64 0 no 1024 4 0 9000 9000 0xff 0xff flash 33 6 64 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00
Zum Aufspielen des Testprogramms nun bitte folgendes eingeben:
prompt > cd testtool prompt > avrdude -p m32 -c ponyser -P /dev/ttyUSB0 -v -U flash:w:TESTTOOL.HEX
Die Optionen stehen für:
- -p m32 - Atmega32
- -c ponyser - die sogenannte programmer-id gibt an, wie das Board mit dem Rechner verbunden ist. pony
ser steht hierbei für serielles ponypong-Design.
- -P /dev/ttyUSB0 - die am Laptop verwendete USB-Schnittstelle
- -v - verbose
- -U flash:w:TESTTOOL.HEX - das zu flashende File
Durch Drücken von Taste 1 sollte nun Led 1 aufleuchten, durch erneutes Drücken wieder erlöschen, gleiches für Taste 2 und Led 2.
Bootloader
Einleitung
Obwohl dieses Testprogramm aus dem vorangegangenen Beispiel recht klein ist, dauert das Überspielen auf den Atmel mittels USB-seriell-Adapter über die ISP-Schnittstelle mehrere Sekunden, und wenn die Programme mal etwas größer werden, macht das wirklich keinen Spass mehr so lange zu warten (das geht schnell in die Minuten). Es gibt prinzipiell zwei Möglichkeiten, das zu beschleunigen:
- Programmiergerät
- Hierbei handelt sich meist um ein USB-ISP-Adapter, der an dem 10-poligen Pfostenstecker direkt auf dem Board angeschlossen wird.
- Bootloader
- Reine Softwarelösung, die es nach Installation erlaubt, Programme über den seriell RS232-Port aufzuspielen.
Wenn man etwas im Netz sucht, findet man unterschiedlichste
Bootloader für Atmels. In diesem Beispiel kommt der foodloader
von fd0 und cebewee aus Köln zum Einsatz, zu dem es
hier weitere Infos
und die Möglichkeit zum Herunterladen gibt. Im Beispiel wird
Version 0.21 und das V2.0-Pollinboard mit Atmega32 verwendet.
Nachdem man sich den Sourcecode besorgt und ausgepackt hat,
sind folgende Anpassungen nötig:
Anpassungen
- Makefile
6,7c6,7 < #F_CPU = 16000000UL < #MCU = atmega88 --- > F_CPU = 16000000UL > MCU = atmega32 66c66 < LDFLAGS += -L/usr/local/avr/avr/lib --- > # LDFLAGS += -L/usr/local/avr/avr/lib
- uart.h
42c42 < #error this cpu isn't supported by uart.h yet! --- > #error this cpu is not supported by uart.h yet!
- avr.mk
2c2 < ISP_PROG = dapa --- > ISP_PROG = ponyser 4c4 < ISP_DEV = /dev/parport0 --- > ISP_DEV = /dev/ttyUSB0 8c8 < SERIAL_DEV = /dev/ttyS0 --- > SERIAL_DEV = /dev/ttyUSB0
- config.h
259c259 < //#define BOOTLOADER_CHAR --- > #define BOOTLOADER_CHAR
- launcher/launch-bootloader.c
38c38,39 < if((argc != 3) || (argv[1] == "-h") || (argv[1] == "--help")) { --- > /* if((argc != 3) || (argv[1] == "-h") || (argv[1] == "--help")) { */ > if((argc != 3) || !(strcmp (argv[1], "-h")) || !(strcmp (argv[1], "--help"))) {
Übersetzen
Ein "make" sollte nun fehlerfrei Durchlaufen und den Bootloader erstellen. Wenn alles gut läuft sollten die letzten Zeilen der Makeausgabe wie folgt aussehen:
=============================== compiled for: atmega32 bootloader size is: 992 ===============================
und es gibt eine Datei foodloader.hex die 2837 Bytes groß ist.
Installieren
Nachdem der Bootloader erstellt wurde kann er nicht einfach installiert werden. Es müssen die sogenannten Fuses angepasst werden. Dies ist ein komplexes Thema, in welches sich jeder Nutzer etwas einarbeiten sollte.
Sinnvollerweise verschafft man sich für den Installationsschritt ein Programmiergerät. Damit ist alles in ein paar Sekunden erledigt. Mittels USB-seriell-Adapter und ISP-Schnittstelle geht das Setzen der Fuses zwar auch flott, das Aufspielen des Bootloaders dauert dagegen grob 100 Minuten (ja, echt so lange...).
- Fuses (mit Programmieradapter/ in der Datei fuses.txt dokumentiert)
prompt > avrdude -p m32 -c usbasp -v -u -U hfuse:w:0xdc:m -U lfuse:w:0xef:m
- Bootloader schreiben
prompt > avrdude -p m32 -c usbasp -v -U flash:w:foodloader.hex
- Lockbit setzen (Schutz vor ueberschreiben des Bootloaders)
prompt > avrdude -p m32 -c usbasp -v -U lock:w:0x2f:m
Hat man keinen Programmieradapter ist im Aufruf -c usbasp durch
-c ponyser -P /dev/ttyUSB0 zu ersetzen.
Anwenden
Um den Bootloader mit obiger Beispielkonfiguration zu verwenden ist wie folgt vorzugehen:
- USB-seriell-Adapter an Rechner und Pollinboard (jetzt am RS232-Anschluss) anschliessen, Board nicht einschalten.
- Er wird angenommen, der USB-seriell-Adapter hängt an /dev/ttyUSB0.
- Das Programm launch-bootloader im Verzeichnis launcher starten, z.B.
- ./launch-bootloader /dev/ttyUSB0 115200
- Ausgabe des Bootloaders:
- Opening serial device /dev/ttyUSB0.
- Sending bootloader entry command (p).
- You may now plug in the target device.
- Pollinboard einschalten
- Ausgabe des Bootloaders:
- Bootloader running.
- ...und der Kommandozeilenprompt erscheint wieder. Der Bootloader ist nun bereit, Daten zu empfangen.
- Programm aufspielen
- prompt > avrdude -p m32 -b 115200 -c avr109 -P /dev/ttyUSB0 -U f:w:demo.hex
- Pollinboard resetten.
Und das neu aufgespielte Programm sollte nun laufen.