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

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Andere ISP-Programmer)
(div. Kleinkram verschönert)
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).  
Zeile 17: Zeile 16:
 
== 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 39: Zeile 38:
  
 
   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 48: Zeile 46:
 
== 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 und ATMega644p ===
  
 
{| border=1 cellspacing=0 padding=4 class=wikitable "
 
{| border=1 cellspacing=0 padding=4 class=wikitable "

Version vom 27. Juli 2010, 07:11 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

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 und ATMega644p

ATMega32 ATMega644 ATMega644p
Gehäuse DIL-40 DIL-40 DIL-40
MHz max. 16 max. 20 max. 20
Flash 32 KB 64 KB 64 KB
EEProm 1 KB 2 KB 2 KB
RAM 2 KB 4 KB 4 KB
I/O 32 32 32
PWM 4 6 6
ext. INT 3 32 32
Ser-Port 1 1 2

Flashen unter Windows

Das Flashen 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 [1].

Wer Windows nicht anrühren möchte, kann auch die Live-CD verwenden.

Live-CD

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