Hardware Bootloader – Printrboard

reprap icon

Bootloader?:
Een bootloader is een computerprogramma dat zorgdraagt voor het starten van het besturingssysteem bij de opstart (bootstrap) van een computer, veel microcontrollers komen zonder bootloader erop gebrand, dat moeten eindgebruikers zelf doen.

De Printrboard is uitgerust met een Atmel AT90USB1286 chip als besturing, het nadeel (of voordeel…het is maar hoe je het ziet) is dat deze chip ook de bootloader in zich heeft die ook als virtuale COMpoort via USB kan dienen om zo programmacode erop te schrijven, bij verkeerd flashen van de firmware kan je de chip “bricken” (een zodanige mis-configuratie dat de chip niet meer goed functioneert)

Let op: Nu heeft vrijwel elke microcontroller een eigen set van bootloaders, deze zijn onderling tussen microcontrollers NIET uitwisselbaar!

Wat heb je nodig?

1) Arduino UNO (Micro of Nano)
2) Arduino IDE
3) AVRdude
3) Jumpwires


Aan de slag

1) Programmeer de Arduino als ISP zoals hier beschreven.

2) Sluit de Arduino als volgt aan op het Printrboard:

Arduino ISP header:Printrboard ISP header:
VCC (5v) van ISPVCC (5v)
GNDGND
MISO (Master Input, Slave Output)MISO (Master Input, Slave Output)
MOSI (Master Output Slave Input)MOSI (Master Output Slave Input)
SCK (seriele klok)SCK (Seriële klok)
Adruino D10RST (Reset)

ISP headers Arduino:

ISP headers Printrboard:

Ps. Als het goed is gegaan, zal er een ledje branden op het printrboard! en de Arduino werkt nog steeds (ledjes branden) (druk voor de zekerheid even op de RESET van de Arduino)

3) Zet het Printrboard in bootmode, begin met de jumper instelling:

  • Printerboard RevA-C: Jumper moet verwijderd worden.
  • Printerboard RevD-F: Jumper moet geplaatst zijn.

Druk op de RESET knop.

4) Download (onder aan deze pagina) de CDC bootloader: AT90USB1286 – BootloaderCDC.7z, pakt het archief uit, en plaats het HEX bestand in de ARVdude folder.

Een kleine samenvatting:
De AruinoISP gebruikt: stk500v1 @ 19200 baud
Printer board gebruikt: at90usb1286
COMpoort: Die van de Arduino (uiteraard)
Bestand: BootloaderCDC.hex

5) Zet de FUSES goed (optioneel) met het commando:

avrdude -c stk500v1 -p at90usb1286 -b 19200 -P COM10 -U lfuse:w:0xDE:m -U hfuse:w:0x9B:m -U efuse:w:0xF0:m

6) Gebruik het volgende commando om de CDCbootloader op de chip te zetten (via de Arduino)

avrdude -v -c stk500v1 -p at90usb1286 -b 19200 -P COM10 -U flash:w:BootloaderCDC.hex:i

Na het uploaden zal er meteen een nieuwe (virtuele) COM poort aanwezig zijn, voorbeeld Windows:

7) Na het uploaden druk op de RESET knop van het Printrboard! en koppel de Arduino UNO met ISP af van het Printrboard.
8) Geef de printrboard op de “normale wijze” stoom (niet via ISP)
9) Druk op de RESET van het Printrboard om in de bootmode te komen (jumper instelling staat nog goed)
10) Upload het programma via ArduinoIDE op de compoort van het Printrboard, en je programma staat weer op de Printrboard!
11) Vergeet niet de Jumper instelling weer aan te passen zodra je klaar bent! en de printrboard weer te resetten!


Informatie bootloaders:

Er zijn momenteel 3 bootloaders beschikbaar voor de AT90USB128x MCU’s.

DFU – USB Device Firmware Upgrade Class

Dit is de officiele bootloader ondersteunt door Atmel, Windows ziet deze bootloader als “Atmel Device”.

  • Voordelen:
    • Werkt met Atmel FLIP tool.
  • Nadelen:
    • Heeft een driver nodig (libusb)
    • Geen commandolijn software aanwezig in Windows
    • Voor Linux is er een open source host loader app aanwezig.
    • Kan niet geintregeerd worden in Arduino IDE

CDC – USB Communication Device Class

Deze bootloader maakt een virtuele COM poort aan om vervolgens programmacode te flashen, Windows ziet deze bootloader als “LUFA CDC Class Boot loader”

  • Voordelen:
    • Werkt met Arduino IDE
    • Werkt met AVRdude (-c avr109)
  • Nadelen:
    • Gebruiker moet (telkens) weten welke virtuele COM poort is aangemaakt
    • Gebruikt een driver, INF nodig om te installeren.
    • Upgrade van AVRdude nodig wanneer ArduinoIDE < v1.0

HID – USB Human Interface Device Class

  • Voordelen:
    • Geen problemen, gewoon “plug ’n play”!
    • Geen driver nodig
  • Nadelen:
    • Werkt niet met ArduinoIDE

Bronnen:
blog.lincomatic.com
helentronica.com


Download AT90USB1286 bootloaders @ blog.lincomatic.com