Unzap/Bootloader

From Lochraster

Jump to: navigation, search

[edit] Bootloader aktivieren

Um eine neue Firmware per USB aufzuspielen, muss der Bootloader beim Power-On des unzap aktiviert werden. Dies passiert automatisch, wenn noch keine Firmware installiert ist. Bei den Bausaetzen ist die jeweils letzte Firmware installiert, deshalb muss der Bootloader von Hand aktiviert werden. Dies kann man durch Halten von Taster 1 und Taster 4 fuer mehr als eine Sekunde waehrend des Power-On erreichen.

Der Bootloader meldet sich durch einmaliges langes Leuchten der roten LED, anschliessend blinkt diese schnell. Bei USB-Aktivitaet leuchtet auch die gruene LED. Der Bootloader kann durch druecken von Taster 3 oder durch entfernen der Spannungsquelle wieder verlassen werden.

Die Anleitung für Windows (mit Screenshots) findet sich unter /firmware usb unter Windows.

[edit] Firmware aufspielen (Linux)

Ist der Bootloader aktiv, sollte im Kernel-Log etwa folgendes auftauchen:

Feb 14 04:52:18 fnord kernel: usb 1-3.4: new low speed USB device using ehci_hcd and address 88
Feb 14 04:52:18 fnord kernel: usb 1-3.4: configuration #1 chosen from 1 choice

und "lsusb" (als root) sollte ein Device mit Vendor-ID "16c0" und Product-ID "05dc" listen:

# lsusb
[...]
Bus 001 Device 088: ID 16c0:05dc  
[...]

Mit "lsusb -v -d 16c0:05dc" erfaehrt man noch ein wenig mehr ueber dieses Device:

Bus 001 Device 088: ID 16c0:05dc··
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0·
  bDeviceProtocol         0·
  bMaxPacketSize0         8
  idVendor           0x16c0·
  idProduct          0x05dc·
  bcdDevice            1.00
  iManufacturer           1 www.fischl.de
  iProduct                2 USBasp
  iSerial                 0·
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           18
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0·
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0·
      bInterfaceProtocol      0·
      iInterface              0·
Device Status:     0x0000
  (Bus Powered)

Der Bootloader emuliert das Protokoll des USBasp und kann mit avrdude angesprochen werden:

# avrdude -p m168 -c usbasp -P usb -u
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9406
avrdude done.  Thank you.

Um eine neue Firmware, beispielsweise aus der Datei "unzap.hex" aufzuspielen, genuegt der Aufruf:

# avrdude -p m168 -c usbasp -P usb -u -U flash:w:unzap.hex
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9406
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "unzap.hex"
avrdude: input file unzap.hex auto detected as Intel Hex
avrdude: writing flash (7110 bytes):

Writing | ################################################## | 100% 0.65s

avrdude: 7110 bytes of flash written
avrdude: verifying flash memory against unzap.hex:
avrdude: load data flash data from input file unzap.hex:
avrdude: input file unzap.hex auto detected as Intel Hex
avrdude: input file unzap.hex contains 7110 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.46s

avrdude: verifying ...
avrdude: 7110 bytes of flash verified

avrdude done.  Thank you.

Durch anschliessendes Druecken von Taster 3 kann der Bootloader ohne Entfernen der Spannungsquelle verlassen werden.