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

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Infos zum Flashen unter Windows hinzugefügt. Infos über andere ISP-Programmer hinzugefügt.)
K (Flashen unter Linux)
 
(8 dazwischenliegende Versionen von 2 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 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-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].
  
== Andere ISP-Programmer ==
+
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.
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!
 
  
 
== 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
  
Zeile 25: Zeile 26:
  
 
   avrdude -v -p m32 -c stk500v2 -P /dev/ttyACM0 -U flash:w:ethersex.hex
 
   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.
 
Nach dem Flashen das ISP-Kabel entfernen und kurz die Stromversorgung unterbrechen um das Board zu rebooten.
Zeile 37: Zeile 42:
  
 
   avrdude -p m32 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xCF:m -U hfuse:w:0xDC:m
 
   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.
 
Um die korrekte Fuse-Einstellung rauszufinden, ist es sinnvoll http://www.engbedded.com/fusecalc/ zu benutzen.
Zeile 46: Zeile 50:
 
== Umbau von einem ATMega32 auf den ATMega644 / ATMega644p ==
 
== Umbau von einem ATMega32 auf den ATMega644 / ATMega644p ==
  
Die Vorteile vom ATMega644(p) ist vor allem der doppelt so große Speicher.
+
Der Vorteil von ATMega644 und ATMega644p ist vor allem der doppelt so große Speicher gegenüber dem serienmäßigen ATMega32.
  
* Den ATMega32 aus der Halterung von dem AVR-IO-Net ziehen
+
=== Mikrocontroller tauschen ===
* Den ATMega644(p) einbauen (ACHTUNG Kerbe im Sockel muss mit Kerbe in der CPU übereinstimmen)
+
* Stromversorgung abschalten und ISP-Stecker abziehen.
* FUSE-Bits setzen
+
* Den ATMega32 aus seinem Sockel auf dem AVR Net-IO ziehen.
* '''Wichtig:''' im Auslieferungszustand ist der ATMega644 programmiert auf 8MHz interner RC Oszillator '''und''' der Takt wird durch 8 geteilt; also 1MHz Takt. Wenn ein externe Quarz verwendet wir, muss das Bit CKDIV8 (Takt geteilt durch 8) auf null gesetzt werden.
+
* 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.
+
* (Ü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
* in der Config von Ethersex (make menuconfig) von ATmega32 auf ATMega644 umstellen
 
* Flashen mit
 
  avrdude -p m644(p) -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
 
  
Fuse-Bitz wie sie "DiDi" einsetzt. Der jTag ist eingeschaltet.
+
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
 
   * -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.
+
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: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
 
   * -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
+
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.
geteilt" Der jTag ist eingeschaltet.
 
  
 
   * -U lfuse:w:0xef:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
 
   * -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 und ATMega644(p) ===
+
=== Unterschiede zwischen ATMega32, ATMega644, ATMega644p und ATMega1284p===
  
 
{| border=1 cellspacing=0 padding=4 class=wikitable "
 
{| border=1 cellspacing=0 padding=4 class=wikitable "
! !! ATMega32       !! ATMega644 !! ATMega644p
+
!         !! ATMega32 !! ATMega644 !! ATMega644p !! ATMega1284p
 
|-
 
|-
| Gehäuse ||     DIL-40     || DIL-40 || DIL-40
+
| Gehäuse || DIL-40   || DIL-40    || DIL-40     || DIL-40
 
|-
 
|-
| MHz || max. 16 || max. 20 || max. 20
+
| MHz   || max. 16 || max. 20   || max. 20    || max. 20
 
|-
 
|-
| Flash || 32 KB || 64 KB || 64 KB
+
| Flash   || 32 KB   || 64 KB     || 64 KB      || 128 KB
 
|-
 
|-
| EEProm || 1 KB || 2 KB || 2 KB  
+
| EEProm   || 1 KB     || 2 KB     || 2 KB      || 4 KB
 
|-
 
|-
| RAM || 2 KB || 4 KB || 4 KB
+
| RAM     || 2 KB     || 4 KB     || 4 KB      || 16 KB
 
|-
 
|-
|I/O || 32 || 32 || 32
+
| I/O     || 32       || 32       || 32        || 32
 
|-
 
|-
|PWM || 4 || 6|| 6
+
| PWM     || 4       || 6         || 6          || 6
 
|-
 
|-
|ext. INT || 3 || 32|| 32
+
| ext. INT || 3       || 32       || 32        || 32
 
|-
 
|-
|Ser-Port || 1 || 1 || 2
+
| 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 ==
Das Flashen erfolgt prinzipiell genauso wie unter Linux (siehe oben).
+
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.)  
 
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.)  
Zeile 111: Zeile 134:
 
Sofern der Programmer per USB angeschlossen ist, benötigt man  
 
Sofern der Programmer per USB angeschlossen ist, benötigt man  
 
* bei echten USB-Programmern die libusb0.dll (bei WinAVR enthalten),
 
* 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].  
+
* 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.
  
Wer Windows nicht anrühren möchte, kann auch die Live-CD verwenden.
+
=== 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 ==
 
== Live-CD ==

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.