Bootloader ohne ISP Programmer flashen

c't-Bot Programmierung mit Arduino

Moderator: Moderatoren Team

Antworten
marvin
Wiki Master
Wiki Master
Beiträge: 440
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Bootloader ohne ISP Programmer flashen

Beitrag von marvin » 23 Nov 2012, 21:13

Nach dem Umstieg auf einen neuen Prozessor (ATmega644P) kam mir das Thema Bootloader in den Sinn. Da ich zukünftig auch Arduino Sketche auf den ct-Bot laden möchte wäre ein Arduino Bootloader eine feine Sache.

Direkt unterstützt wird die ATmega32 Reihe von der Arduino Firmware nicht. Nach dem Arduino Uno mit ATmega328P folgt gleich der Arduino Mega mit dem ATmega1280/2560 Prozessor. Dazwischen klafft die Lücke für die ATmega32 Prozessoren. Doch es gibt dafür auch Lösungen.
Zum einen die Sanguino Plattform, die Unterstützung für den ATmega644P anbietet. Leider wird derzeit nur die Arduino Release 0018 unterstützt.
Zum anderen die Arbotix RoboController. Diese unterstützt neben dem ATmega644P auch den ATmega1284P und das auch für die Arduino Releases 0022 und 1.0. Neben ein paar Anpassungen an den Arduino Libraries sind auch Arduino kompatible Bootloader in dem Paket enthalten, download unter Google code. Dazu braucht man noch die aktuelle Arduino Umgebung. Zur Installation der Arbotix Umgebung muß nur der Ordner /hardware/arbotix in den Arduino hardware Ordner kopiert werden.

Den Bootloader kann man auch direkt aus der Arduino Umgebung heraus flashen. Dazu braucht man einen der unterstützten ISP Programmer, oder mit einem Arduino Board und dem ArduinoISP sketch. Die letztere Alternative kam bei mir zum Einsatz und funktionierte tadellos.
IMG_3684.JPG
(123.43 KiB) 8916-mal heruntergeladen
Einen Nachteil des Arduino Bootloaders sollte man nicht verschweigen. Zwar verhält sich dieser wie ein AVR500 kompatibler Programmer. Man kann damit aber nur den FLASH brennen, nicht den EEPROM. Um die Kalibrierdaten auf den ct-Bot zu laden ist damit immer noch ein ISP Programmer notwendig.

Zum Flashen benutze ich den Bot2PC USB Adapter oder ein FTDI Basic USB UART board. Mit dem FTDI Basic board sollte es auch möglich sein per Auto Reset beim Upload eines Sketches den Bootloader automatisch zu starten.
Derzeit funktioniert das leider noch nicht. Ein kleiner Umbau am ct-Bot ist dazu notwendig. Am freien Pin 5 an J4 habe ich das DTR Signal vom USB UART board angeschlossen und Pin5 von J4 mit Pin9 am Prozessor (RESET) über einen 100nF Kondensator verbunden. Leider klappt es damit nicht. Der ct-Bot macht keinen Reset, wenn an DTR gewackelt wird. Meine Vermutung, die 100nF sind zu wenig um einen RESET Impuls auszulösen. Derzeitige Lösung: den Reset Knopf im richtigen Moment loslassen.

Soweit der derzeitige Zwischenstand. Weitere Erkenntnisse werden nachgereicht.

Grüße Peter

tobi
Friends of Gort
Friends of Gort
Beiträge: 50
Registriert: 28 Apr 2011, 16:45
Wohnort: Pforzheim

Re: Arduino Bootloader

Beitrag von tobi » 24 Nov 2012, 23:31

Hi,

cool :)
Aber wo ist denn da der Unterschied zum Bootloader, der beim ct-Bot Code schon dabei ist? Der funzt auch mit allen Controllern.

Gruß
Tobi

marvin
Wiki Master
Wiki Master
Beiträge: 440
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Re: Bootloader ohne ISP Programmer flashen

Beitrag von marvin » 25 Nov 2012, 18:14

Hi Tobi,
ok der Thread Titel war etwas sinnfrei. Eigentlich ging es mehr darum wie man ohne ISP Programmer einen Bootloader flashed. Vor genau diesem Problem stand ich nämlich, nachdem ich den Prozessor getauscht hatte. Da meine beiden ISP Programmer ihren Dienst quittierten, musste ich nach einer anderen schnellen Lösung suchen.

In wieweit sich die Bootloader unterscheiden, weis ich auch nicht. Ist letztendlich auch egal, nur das Ergebnis zählt.

Update: Auto Reset funktioniert nun auch. MIt einem 1µF Kondensator klappt es endlich.

Grüße Peter

tobi
Friends of Gort
Friends of Gort
Beiträge: 50
Registriert: 28 Apr 2011, 16:45
Wohnort: Pforzheim

Re: Bootloader ohne ISP Programmer flashen

Beitrag von tobi » 25 Nov 2012, 20:51

Hi Peter,

aaah verstehen, dann ist das natürlich interessant!
Ein Unterschied ist auf jeden Fall, dass der integrierte Bootloader auch das EEPROM beschreiben und auslesen kann.

Grüße
Tobi

marvin
Wiki Master
Wiki Master
Beiträge: 440
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Re: Bootloader ohne ISP Programmer flashen

Beitrag von marvin » 25 Nov 2012, 23:03

tobi hat geschrieben: Ein Unterschied ist auf jeden Fall, dass der integrierte Bootloader auch das EEPROM beschreiben und auslesen kann
Das spricht dann natürlich eher für den Original Bootloader. Vielen Dank für den Hinweis.
Grüße Peter

Antworten