Wie flasht man ein AVR-NET-IO: Unterschied zwischen den Versionen
(→Umbau von einem ATMega32 auf ein ATMega644) |
K (→Flashen unter Linux) |
||
(26 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | = AVR | + | = AVR Net-IO mit dem ATMEL Evaluations-Board von Pollin flashen= |
Als Einsteiger hat man es immer wieder schwer alle Information zu finden. | Als Einsteiger hat man es immer wieder schwer alle Information zu finden. | ||
Ich habe lange gesucht bis ich das mit dem Flashen kapiert habe. | Ich habe lange gesucht bis ich das mit dem Flashen kapiert habe. | ||
− | |||
== Benötigt wird: == | == Benötigt wird: == | ||
− | * AVR | + | * AVR Net-IO |
* ATMEL Evaluations-Board | * ATMEL Evaluations-Board | ||
− | * ein 1:1 Kabel für den ISP Port (10-poliger Pfostenstecker) | + | * ein 1:1 Kabel für den [[ISP]]-Port (10-poliger Pfostenstecker). |
+ | |||
+ | === Andere ISP-Programmer === | ||
+ | Wer über einen ISP-Programmer mit 6-poligem Ausgang verfügt, kann sich ein Adapterkabel bauen. Zu den Pinbelegungen siehe Figure 4-1 auf Seite 5 von [http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf AVR042: AVR Hardware Design Considerations]. | ||
+ | |||
+ | Achtung, Pin 4 des 10-poligen Steckers ist auf dem AVR Net-IO nicht belegt! GND muss daher an einen der anderen Pins (6, 8 oder 10) angeschlossen werden. | ||
== Flashen unter Linux == | == Flashen unter Linux == | ||
Das 10-polige Kabel in die ISP-Buchse stecken. | Das 10-polige Kabel in die ISP-Buchse stecken. | ||
− | Nun das AVR | + | Nun das AVR Net-IO Board mit Strom versorgen. |
Wenn das ISP-Kabel richtig gesteckt ist, leuchtet auf dem Evalutions-Board die (gelbe) LED | Wenn das ISP-Kabel richtig gesteckt ist, leuchtet auf dem Evalutions-Board die (gelbe) LED | ||
− | Nach dem Erzeugen der [[# | + | Nach dem Erzeugen der [[:Kategorie:StepByStep#Firmware_kompilieren|ethersex.hex]] kann man mit avrdude das Ganze flashen. Das nachfolgende Kommando ist bei einigen Parametern vom ISP-Programmer abhängig. Das nachfolgende Beispiel gilt für einen ISP-Programmer der über die serielle Schnittstelle arbeitet: |
avrdude -v -p m32 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex | avrdude -v -p m32 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex | ||
− | Nach dem | + | Für eine USB-ISP-Programmer wäre statt dessen der folgende Befehl zu verwenden: |
+ | |||
+ | avrdude -v -p m32 -c stk500v2 -P /dev/ttyACM0 -U flash:w:ethersex.hex | ||
+ | |||
+ | Für ein paralleles ISP-Kabel: | ||
+ | |||
+ | avrdude -p m32 -e -c stk200 -U flash:w:ethersex.hex | ||
+ | |||
+ | Nach dem Flashen das ISP-Kabel entfernen und kurz die Stromversorgung unterbrechen um das Board zu rebooten. | ||
* -p m32 steht für den ATMega32; -p m644 wäre der ATMega644 | * -p m32 steht für den ATMega32; -p m644 wäre der ATMega644 | ||
Zeile 32: | Zeile 44: | ||
Um die korrekte Fuse-Einstellung rauszufinden, ist es sinnvoll http://www.engbedded.com/fusecalc/ zu benutzen. | Um die korrekte Fuse-Einstellung rauszufinden, ist es sinnvoll http://www.engbedded.com/fusecalc/ zu benutzen. | ||
+ | |||
+ | Die Parameter für MyAVR mySmartusb light (Insbesondere das -e war nötig): | ||
+ | avrdude -p m32 -e -c stk500v2 -P /dev/ttyUSB0 -U flash:w:ethersex.hex | ||
== Umbau von einem ATMega32 auf den ATMega644 / ATMega644p == | == Umbau von einem ATMega32 auf den ATMega644 / ATMega644p == | ||
− | + | Der Vorteil von ATMega644 und ATMega644p ist vor allem der doppelt so große Speicher gegenüber dem serienmäßigen ATMega32. | |
− | * Den ATMega32 aus | + | === Mikrocontroller tauschen === |
− | * Den ATMega644 | + | * Stromversorgung abschalten und ISP-Stecker abziehen. |
− | * | + | * Den ATMega32 aus seinem Sockel auf dem AVR Net-IO ziehen. |
+ | * Den ATMega644 oder ATMega644p einbauen. (ACHTUNG: Kerbe im Sockel muss mit Kerbe in der CPU übereinstimmen) | ||
+ | |||
+ | === Fuse-Bits setzen === | ||
+ | * ISP wieder einstecken und Stromversorgung einschalten. | ||
+ | * Fuse-Bits setzen | ||
+ | * '''Wichtig:''' im Auslieferungszustand ist der ATMega644 programmiert auf 8MHz interner RC-Oszillator '''und''' der Takt wird durch 8 geteilt; also 1MHz Takt. Wenn ein externer Quarz verwendet wir, muss das Bit CKDIV8 (Takt geteilt durch 8) auf null gesetzt werden. | ||
+ | |||
+ | * (Übernommen von dinus) Der ATMega wird dabei mit 1Mhz getaktet, kein JTAG. | ||
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m | avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m | ||
* bzw. | * bzw. | ||
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m | avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m | ||
+ | |||
+ | Fuse-Bits wie sie "DiDi" einsetzt. Der JTAG ist eingeschaltet. | ||
+ | |||
+ | * -U lfuse:w:0xf7:m -U hfuse:w:0x99:m -U efuse:w:0xfc:m | ||
+ | |||
+ | Fuse-Bits wie "loddel" sie einsetzt. Der JTAG ist ausgeschaltet. | ||
+ | |||
+ | * -U lfuse:w:0xf7:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m | ||
+ | * -U lfuse:w:0xe7:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m | ||
+ | |||
+ | Fuse-Bits wie "gregor" sie einsetzt. "Damit läuft der 644 auf 16MHz Quarz und der Takt wird nicht durch 8 geteilt." Der JTAG ist eingeschaltet. | ||
+ | |||
+ | * -U lfuse:w:0xef:m -U hfuse:w:0x99:m -U efuse:w:0xff:m | ||
+ | |||
+ | === Ethersex reinflashen=== | ||
* in der Config von Ethersex (make menuconfig) von ATmega32 auf ATMega644 umstellen | * in der Config von Ethersex (make menuconfig) von ATmega32 auf ATMega644 umstellen | ||
* Flashen mit | * Flashen mit | ||
− | + | avrdude -p m644 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v | |
+ | * bzw. | ||
+ | avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v | ||
− | === Unterschiede zwischen ATMega32 und | + | === Unterschiede zwischen ATMega32, ATMega644, ATMega644p und ATMega1284p=== |
{| border=1 cellspacing=0 padding=4 class=wikitable " | {| border=1 cellspacing=0 padding=4 class=wikitable " | ||
− | ! !! ATMega32 | + | ! !! ATMega32 !! ATMega644 !! ATMega644p !! ATMega1284p |
|- | |- | ||
− | | Gehäuse || | + | | Gehäuse || DIL-40 || DIL-40 || DIL-40 || DIL-40 |
|- | |- | ||
− | | MHz | + | | MHz || max. 16 || max. 20 || max. 20 || max. 20 |
|- | |- | ||
− | | Flash || 32 KB || 64 KB | + | | Flash || 32 KB || 64 KB || 64 KB || 128 KB |
|- | |- | ||
− | | EEProm || 1 KB || 2 KB | + | | EEProm || 1 KB || 2 KB || 2 KB || 4 KB |
|- | |- | ||
− | | RAM || 2 KB || 4 KB | + | | RAM || 2 KB || 4 KB || 4 KB || 16 KB |
|- | |- | ||
− | |I/O || 32 || 32 | + | | I/O || 32 || 32 || 32 || 32 |
|- | |- | ||
− | |PWM || 4 || 6 | + | | PWM || 4 || 6 || 6 || 6 |
|- | |- | ||
− | |ext. INT || 3 || 32 | + | | ext. INT || 3 || 32 || 32 || 32 |
+ | |- | ||
+ | | Ser-Port || 1 || 1 || 2 || 2 | ||
|} | |} | ||
+ | |||
+ | ====Datenblätter==== | ||
+ | * AtMega32 | ||
+ | * ATMega644 | ||
+ | * ATMega644p | ||
+ | * [http://www.atmel.com/dyn/resources/prod_documents/8059S.pdf ATMega1284p] | ||
== Flashen unter Windows == | == Flashen unter Windows == | ||
− | + | Es gibt mindestens zwei Möglichkeiten: | |
+ | #Flashen mit avrdude | ||
+ | #Flashen mit AVR Studio | ||
+ | |||
+ | Wer keines der beiden Programme auf seine Festplatte legen möchte, weil er sein Windows-System nicht ändern möchte, kann auch die [[Live CD]] verwenden. | ||
+ | |||
+ | ===Flashen mit avrdude=== | ||
+ | Das Flashen mit avrdude erfolgt prinzipiell genauso wie unter Linux (siehe oben). | ||
+ | |||
+ | Ein Windows-Binary von avrdude erhält man am einfachsten als Bestandteil von [http://sourceforge.net/projects/winavr/ WinAVR]. (Ansonsten findet man ein Windows-Binary von avrdude auch auf [http://yuki-lab.jp/hw/avrdude-GUI/index.html dieser japanischen Seite], wo man auch eine GUI für avrdude bekommen kann. Google-Translate hilft den japanischen Text zu verstehen.) | ||
+ | |||
+ | In der Kommandozeile muss natürlich die Bezeichnung des seriellen Ports angepasst werden, also "COMx" anstelle von "/dev/ttyS0", z.B. | ||
+ | avrdude -v -p m32 -c ponyser -P com3 -U flash:w:ethersex.hex | ||
+ | |||
+ | Sofern der Programmer per USB angeschlossen ist, benötigt man | ||
+ | * bei echten USB-Programmern die libusb0.dll (bei WinAVR enthalten), | ||
+ | * bei Verwendung eines USB-nach-seriell-Adapters mit FTDI-Chip (dieser kann auch manchmal bereits in den Programmer mit USB-Anschluss eingebaut sein!) einen passenden Treiber, siehe http://www.ftdichip.com/Drivers/VCP.htm. | ||
+ | |||
+ | ===Flashen mit AVR Studio=== | ||
+ | Das [[AVR Studio]] von Atmel bietet eine grafische Oberfläche zur Bedienung von ISPs. | ||
+ | |||
+ | Beim AVR Studio werden USB-Treiber für USB-Programmer mitgeliefert, die optional zusammen mit dem AVR Studio installiert werden können. | ||
+ | |||
+ | Für USB-nach-seriell-Adapter mit FTDI-Chip benötigt man einen passenden Treiber, siehe http://www.ftdichip.com/Drivers/VCP.htm. | ||
+ | |||
+ | === Links zu Erfahrungsberichten === | ||
+ | *http://www.saschakimmel.de/2010/02/ethersex-auf-avr-net-io-installieren-mittels-pollin-atmel-evaluationsboard-2-0-und-windows/ , jedoch nicht mit ISP-Kabel sondern mit Umstecken des Controllers. | ||
− | + | == Live-CD == | |
− | + | Diese hat den Vorteil, dass man sein vorhandenes System nicht ändern muss. | |
− | |||
− | |||
− | |||
+ | * http://www.ethersex.de/index.php?title=Live_CD | ||
+ | * apt-get install libncurses5-dev | ||
+ | * update und installier software fuer ethersex wie beschrieben http://www.ethersex.de/index.php/Download | ||
+ | * wenn help in menuconfig nicht geht: apt-get install dialog | ||
+ | * weiter wie in "Flashen unter Linux" beschrieben. | ||
[[Category:Ethersex]] | [[Category:Ethersex]] | ||
+ | [[Category:StepByStep]] | ||
+ | [[Category:AVR Net-IO]] |
Aktuelle Version vom 25. Juli 2011, 19:41 Uhr
Inhaltsverzeichnis
AVR Net-IO mit dem ATMEL Evaluations-Board von Pollin flashen
Als Einsteiger hat man es immer wieder schwer alle Information zu finden. Ich habe lange gesucht bis ich das mit dem Flashen kapiert habe.
Benötigt wird:
- AVR Net-IO
- ATMEL Evaluations-Board
- ein 1:1 Kabel für den ISP-Port (10-poliger Pfostenstecker).
Andere ISP-Programmer
Wer über einen ISP-Programmer mit 6-poligem Ausgang verfügt, kann sich ein Adapterkabel bauen. Zu den Pinbelegungen siehe Figure 4-1 auf Seite 5 von AVR042: AVR Hardware Design Considerations.
Achtung, Pin 4 des 10-poligen Steckers ist auf dem AVR Net-IO nicht belegt! GND muss daher an einen der anderen Pins (6, 8 oder 10) angeschlossen werden.
Flashen unter Linux
Das 10-polige Kabel in die ISP-Buchse stecken. Nun das AVR Net-IO Board mit Strom versorgen. Wenn das ISP-Kabel richtig gesteckt ist, leuchtet auf dem Evalutions-Board die (gelbe) LED
Nach dem Erzeugen der ethersex.hex kann man mit avrdude das Ganze flashen. Das nachfolgende Kommando ist bei einigen Parametern vom ISP-Programmer abhängig. Das nachfolgende Beispiel gilt für einen ISP-Programmer der über die serielle Schnittstelle arbeitet:
avrdude -v -p m32 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex
Für eine USB-ISP-Programmer wäre statt dessen der folgende Befehl zu verwenden:
avrdude -v -p m32 -c stk500v2 -P /dev/ttyACM0 -U flash:w:ethersex.hex
Für ein paralleles ISP-Kabel:
avrdude -p m32 -e -c stk200 -U flash:w:ethersex.hex
Nach dem Flashen das ISP-Kabel entfernen und kurz die Stromversorgung unterbrechen um das Board zu rebooten.
* -p m32 steht für den ATMega32; -p m644 wäre der ATMega644 * -v erweiterte Ausgaben * -c ponyser ist das Verfahren wie das Evalutions-Board die Daten flasht * -P ist die Serielle Schnittstelle an dem das Evalutions-Board angeschlossen ist (bei USB /dev/ttyUSB0) * -U was man machen möchte. In unserem Fall wollen wir das File ethersex.hex flashen (-U flash:w:ethersex.hex)
Es kann sein das man für den ATMega32 die FUSE Bits setzen muss.
avrdude -p m32 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xCF:m -U hfuse:w:0xDC:m
Um die korrekte Fuse-Einstellung rauszufinden, ist es sinnvoll http://www.engbedded.com/fusecalc/ zu benutzen.
Die Parameter für MyAVR mySmartusb light (Insbesondere das -e war nötig):
avrdude -p m32 -e -c stk500v2 -P /dev/ttyUSB0 -U flash:w:ethersex.hex
Umbau von einem ATMega32 auf den ATMega644 / ATMega644p
Der Vorteil von ATMega644 und ATMega644p ist vor allem der doppelt so große Speicher gegenüber dem serienmäßigen ATMega32.
Mikrocontroller tauschen
- Stromversorgung abschalten und ISP-Stecker abziehen.
- Den ATMega32 aus seinem Sockel auf dem AVR Net-IO ziehen.
- Den ATMega644 oder ATMega644p einbauen. (ACHTUNG: Kerbe im Sockel muss mit Kerbe in der CPU übereinstimmen)
Fuse-Bits setzen
- ISP wieder einstecken und Stromversorgung einschalten.
- Fuse-Bits setzen
- Wichtig: im Auslieferungszustand ist der ATMega644 programmiert auf 8MHz interner RC-Oszillator und der Takt wird durch 8 geteilt; also 1MHz Takt. Wenn ein externer Quarz verwendet wir, muss das Bit CKDIV8 (Takt geteilt durch 8) auf null gesetzt werden.
- (Übernommen von dinus) Der ATMega wird dabei mit 1Mhz getaktet, kein JTAG.
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m
- bzw.
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m
Fuse-Bits wie sie "DiDi" einsetzt. Der JTAG ist eingeschaltet.
* -U lfuse:w:0xf7:m -U hfuse:w:0x99:m -U efuse:w:0xfc:m
Fuse-Bits wie "loddel" sie einsetzt. Der JTAG ist ausgeschaltet.
* -U lfuse:w:0xf7:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m * -U lfuse:w:0xe7:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m
Fuse-Bits wie "gregor" sie einsetzt. "Damit läuft der 644 auf 16MHz Quarz und der Takt wird nicht durch 8 geteilt." Der JTAG ist eingeschaltet.
* -U lfuse:w:0xef:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
Ethersex reinflashen
- in der Config von Ethersex (make menuconfig) von ATmega32 auf ATMega644 umstellen
- Flashen mit
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
- bzw.
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
Unterschiede zwischen ATMega32, ATMega644, ATMega644p und ATMega1284p
ATMega32 | ATMega644 | ATMega644p | ATMega1284p | |
---|---|---|---|---|
Gehäuse | DIL-40 | DIL-40 | DIL-40 | DIL-40 |
MHz | max. 16 | max. 20 | max. 20 | max. 20 |
Flash | 32 KB | 64 KB | 64 KB | 128 KB |
EEProm | 1 KB | 2 KB | 2 KB | 4 KB |
RAM | 2 KB | 4 KB | 4 KB | 16 KB |
I/O | 32 | 32 | 32 | 32 |
PWM | 4 | 6 | 6 | 6 |
ext. INT | 3 | 32 | 32 | 32 |
Ser-Port | 1 | 1 | 2 | 2 |
Datenblätter
- AtMega32
- ATMega644
- ATMega644p
- ATMega1284p
Flashen unter Windows
Es gibt mindestens zwei Möglichkeiten:
- Flashen mit avrdude
- Flashen mit AVR Studio
Wer keines der beiden Programme auf seine Festplatte legen möchte, weil er sein Windows-System nicht ändern möchte, kann auch die Live CD verwenden.
Flashen mit avrdude
Das Flashen mit avrdude erfolgt prinzipiell genauso wie unter Linux (siehe oben).
Ein Windows-Binary von avrdude erhält man am einfachsten als Bestandteil von WinAVR. (Ansonsten findet man ein Windows-Binary von avrdude auch auf dieser japanischen Seite, wo man auch eine GUI für avrdude bekommen kann. Google-Translate hilft den japanischen Text zu verstehen.)
In der Kommandozeile muss natürlich die Bezeichnung des seriellen Ports angepasst werden, also "COMx" anstelle von "/dev/ttyS0", z.B.
avrdude -v -p m32 -c ponyser -P com3 -U flash:w:ethersex.hex
Sofern der Programmer per USB angeschlossen ist, benötigt man
- bei echten USB-Programmern die libusb0.dll (bei WinAVR enthalten),
- bei Verwendung eines USB-nach-seriell-Adapters mit FTDI-Chip (dieser kann auch manchmal bereits in den Programmer mit USB-Anschluss eingebaut sein!) einen passenden Treiber, siehe http://www.ftdichip.com/Drivers/VCP.htm.
Flashen mit AVR Studio
Das AVR Studio von Atmel bietet eine grafische Oberfläche zur Bedienung von ISPs.
Beim AVR Studio werden USB-Treiber für USB-Programmer mitgeliefert, die optional zusammen mit dem AVR Studio installiert werden können.
Für USB-nach-seriell-Adapter mit FTDI-Chip benötigt man einen passenden Treiber, siehe http://www.ftdichip.com/Drivers/VCP.htm.
Links zu Erfahrungsberichten
- http://www.saschakimmel.de/2010/02/ethersex-auf-avr-net-io-installieren-mittels-pollin-atmel-evaluationsboard-2-0-und-windows/ , jedoch nicht mit ISP-Kabel sondern mit Umstecken des Controllers.
Live-CD
Diese hat den Vorteil, dass man sein vorhandenes System nicht ändern muss.
- http://www.ethersex.de/index.php?title=Live_CD
- apt-get install libncurses5-dev
- update und installier software fuer ethersex wie beschrieben http://www.ethersex.de/index.php/Download
- wenn help in menuconfig nicht geht: apt-get install dialog
- weiter wie in "Flashen unter Linux" beschrieben.