Wie flasht man ein AVR-NET-IO: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Flashen unter Linux)
K (Flashen unter Linux)
 
(34 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= AVR-NET-IO mit dem ATMEL Evaluations-Board von Pollin flashen=
+
= AVR Net-IO mit dem ATMEL Evaluations-Board von Pollin flashen=
 
 
Als Einsteiger hat man es immer wider schwer alle Information zu finden.
 
Ich hab lange gesucht bis ich das mit dem Flashen kapiert habe.
 
  
 +
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: ==
 
== Benötigt wird: ==
* AVR-NET-IO
+
* 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-NET-IO Board mit Strom versorgen.
+
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 von der [[#Erste_Schritte|ethersex.hex]] kann man mit avrdude das Ganze flashen:
+
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 Flashen einfach den Netzstecker ziehen und stecken um das Board zu rebooten
+
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 ATMega 32 -p m644 währe der ATMega 644
+
   * -p m32 steht für den ATMega32; -p m644 wäre der ATMega644
 
   * -v erweiterte Ausgaben
 
   * -v erweiterte Ausgaben
 
   * -c ponyser ist das Verfahren wie das Evalutions-Board die Daten flasht
 
   * -c ponyser ist das Verfahren wie das Evalutions-Board die Daten flasht
   * -P ist die Serielle Schnittstelle an dem das valutions-Board angeschlossen ist (bei USB /dev/ttyUSB0)
+
   * -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)
 
   * -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 ATMega 32 die FUSE Bits setzen muss.
+
Es kann sein das man für den ATMega32 die FUSE Bits setzen muss.
(Werte von dinus übernommen)
+
 
 +
  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 ==
  
  avrdude -p m32 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m
+
Der Vorteil von ATMega644 und ATMega644p ist vor allem der doppelt so große Speicher gegenüber dem serienmäßigen ATMega32.
  
== Umbau von einem ATMega 32 auf ein ATMega 644 ==
+
=== 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)
  
Die Vorteile vom ATMega 644 ist vor allem der doppelt so große Speicher
+
=== 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.
  
* Den ATMega32 aus der Halterung von dem AVR-IO-Net ziehen
+
* (Übernommen von dinus) Der ATMega wird dabei mit 1Mhz getaktet, kein JTAG.
* Den ATMega644 einbauen (ACHTUNG Kerbe im Sockel muss mit Kerbe in der CPU übereinstimmen)
 
* FUSE-Bits setzen (Übernommen von dinus)  
 
 
   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
* in der Config von Ethersex (make menuconfig) von ATmega 32 auf ATMega 644 umstellen
+
* 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
 
* Flashen mit
  avrdude -p m644 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
+
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 ATMega 32 und ATMega 644 ===
+
=== Unterschiede zwischen ATMega32, ATMega644, ATMega644p und ATMega1284p===
  
{| class="wikitable" style="text-indent:4px"
+
{| border=1 cellspacing=0 padding=4 class=wikitable "
! !! ATMega 32      !! ATMega 644
+
!         !! ATMega32 !! ATMega644 !! ATMega644p !! ATMega1284p
 +
|-
 +
| Gehäuse  || DIL-40  || DIL-40    || DIL-40    || DIL-40
 
|-
 
|-
| Gehäuse ||     DIL-40    || DIL-40
+
| MHz   || max. 16  || max. 20  || max. 20    || max. 20
 
|-
 
|-
| MHz || max. 16 || max. 20
+
| Flash    || 32 KB    || 64 KB    || 64 KB      || 128 KB
 
|-
 
|-
| Flash || 32 KB || 64 KB  
+
| EEProm  || 1 KB     || 2 KB      || 2 KB      || 4 KB
 
|-
 
|-
| EEProm || 1 KB || 2 KB  
+
| RAM      || 2 KB    || 4 KB      || 4 KB       || 16 KB
 
|-
 
|-
| RAM || 2 KB || 4 KB
+
| I/O      || 32      || 32        || 32        || 32
 
|-
 
|-
|I/O || 32 || 32
+
| PWM      || 4        || 6        || 6          || 6
 
|-
 
|-
|PWM || 4 || 6
+
| ext. INT || 3        || 32        || 32        || 32
 
|-
 
|-
|ext. INT || 3 || 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 ==
keine Ahnung
+
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

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

Flashen unter Windows

Es gibt mindestens zwei Möglichkeiten:

  1. Flashen mit avrdude
  2. 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

Live-CD

Diese hat den Vorteil, dass man sein vorhandenes System nicht ändern muss.