Arduino Bootloader brennen

Hallo Forum!

Hat jemand von Euch schon mal den Arduino Bootloader auf einen fabrikneuen Chip gebrannt?

Mit der Arduino-Software (0014) schaffe ich es nicht. Dort kann ich ja "nur vier" Programmier-Adapter auswählen ("Parallel Programmer", "USBtiny isp", "AVR ISP" und "AVRISP mkII"). Keinen davon besitze ich :frowning:

Ich besitze einen "mySmartUSB-Programmer" von myAVR.

Nun habe ich einige Stunden im Netz geschaut und bin so weit avrdude in der Konsole zu benutzen. Nach detailierter Suche bin ich so weit, den Programmer anzusprechen:

avrdude -c avr910 -p m168 -P com2

Found programmer: Id = "AVR ISP"; type = S
Software Version = 2.5; Hardware Version = 2.0
Programmer supports auto addr increment.
avrdude: error: selected device is not supported by programmer: m168

Laut dieser Fehlermeldung unterstützt mein Programmer den ATMEGA168 nicht, was ich nicht verstehe.

Ich habe daraufhin den USB-Treiber nach Anleitung von myAVR aktualisiert und die Firmware des Programmes von 2.3 auf 2.5 gebracht.

Mit dem ProgTool V 1.20 von myAVR bekomme ich jedoch folgende Informationen:

USB-Treiber: 5.3.0.0
Geräte-ID: 0001
Port: COM2
Firmware: V2.5
Controller: ATmega168

Damit kann ich sogar erfolgreich brennen!
Habe mal die Datei \arduino-0014\hardware\bootloaders\atmega168\ATmegaBOOT_168_diecimila.hex in den Flashspeicher gebrannt. Kenne mich aber damit nicht aus. Muss die Datei dort hin? Was sind Fuses?

Ich wäre sehr dankbar wenn mir jemand weiterhelfen könnte den Bootloader auf einfach Art zu brennen.

Lieben Gruß
Poldi

fuses sind configurations-bits der cpu, welche geflasht werden.

also z.b. welche takt quelle (intern/extern) verwendet wird, ob die cpu bei unterspannung automatisch einen reset durchfuehrt, ob ein bootloader verwendet wird oder nicht usw.

ist ein kniffliges thema. damit kann man sich auch die cpu unbrauchbar machen. danach hilft nur noch ein 12V brenn vorgang, welcher von normalen writern nicht unterstuetzt wird.

mehr zu den fuse bits:

http://www.mikrocontroller.net/articles/AVR_Fuses

Wenn Du den Chip auch mit externer 16MHz Clock laufen lässt, dann guck mal bei Dir im hardware\boards.txt, da stehen folgende Zeilen:

...
diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0x00
...
diecimila.bootloader.unlock_bits=0x3F
diecimila.bootloader.lock_bits=0x0F

Das sind also die Einstellungen für Fuses und Lock Bits, damit der Bootloader läuft und die 16MHz Clock genommen wird.

Am einfachsten ist es, wenn Du den Bootloader aus der Arduino IDE heraus brennst. Das gibt zwar kaum Feedback, aber mit genügend Geduld wirst Du am Ende angezeigt bekommen, ob es geklappt hat oder ob es gescheitert ist.

Hi,
ich hab mir so einen einfachen LPT adapter gebastelt. Dann den orginal Arduino ausgelesen. um gesteckt und mit Pony drauf gebracht. Dann sind die fuse gesetzt wie beim Arduino. Die Dateien und Schlatung kann ich dir schicken.

Gruß
Lorenz

Ich kenne den mySmartUSB Programmer zwar nicht, aber Du meinst, der ist AVR910 kompatibel?

Dann öffne mal bei Dir die Datei hardware/programmers.txt

und füge folgende Zeilen hinzu:

mySmartUSB.name=mySmartUSB
mySmartUSB.protocol=avr910

dann kannst Du den Programmer aus der Arduino IDE heraus benutzen, wenn das wirklich das richtige Protokoll ist.

Danke für die Infos. Werde mich bald dran machen sie auszuprobieren und wieder berichten.

Gruß
Poldi

Es hat funktioniert!!! :smiley: :smiley: :smiley: Bootloader gebrannt!!!

Vielen Dank nochmal für die hilfreichen Tipps.

Hier eine Kurzanleitung wie ich es gemacht habe:

1.) mySmart-USB-Programmer anschließen
2.) USB- Treiber installieren (cp210x Driver -> Version 5.3)
3.) Arduino Software entpacken (0014)
4.) unter "\arduino-0014\hardware\programmers.txt" folgendes hinzufügen: (Danke "bohne")

mySmartUSB.name=mySmartUSB
mySmartUSB.protocol=avr910

5.) Datei "\arduino-0014\hardware\tools\avr\etc\avrdude.conf" editieren und "avr910_devcode = 0x06;" einfügen:

#------------------------------------------------------------
# ATmega168
#------------------------------------------------------------

part
    id              = "m168";
    desc            = "ATMEGA168";
     has_debugwire = yes;
     flash_instr   = 0xB6, 0x01, 0x11;
     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
                   0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
                   0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode  = 0x86;
    avr910_devcode  = 0x06;
    signature       = 0x1e 0x94 0

Vorher stand dort #avr910_devcode = 0x; Diesen Tipp habe ich über google gefunden. gonium.net » Blog Archive » Using mySmartUSB programmer on Mac OS X

6.) Bootloader über die Arduino Software "Tools", "Burn Bootloader", "w/ mySmartUSB" gebrannt.
7.) Eine Minute warten
8.) FERTIG!

Ein kleiner Hinweis noch:
Die Software hat den Programmer an Com1 gesucht / erwartet. Ich habe dem Programmer über den Gerätemanager Com1 zugewiesen. Falls Ihr noch eine Möglichkeit seht den Port irgendwo angeben zu können, sollte es noch etwas einfacher sein.
Danke auch an "madworm", ich habe mir den Link gespeichert. Für den Fall das ich mal Mist baue habe ich nun eine Anleitung um den Chip zu retten :wink:

Gruß
Poldi

Wie meinst Du das:

Die Software hat den Programmer an Com1 gesucht / erwartet. Ich habe dem Programmer über den Gerätemanager Com1 zugewiesen. Falls Ihr noch eine Möglichkeit seht den Port irgendwo angeben zu können, sollte es noch etwas einfacher sein.

welchen Port nutzt der Programmer denn? Du kannst ja noch andere Sachen in programmers.txt einstellen, beispielsweise
mySmartUSB.communication=usb

Oder meinst Du, dass Du jedesmal COM1 auswählen musst zum programmieren (und dass die IDE sich den Port nicht merkt)?

Hallo!

Ja, da hast Du mal wieder genau gewusst, was mir gefehlt hat bohne :wink:

Nämlich die Möglichkeit der Arduino Software zu sagen an welchem Port mein Programmer hängt. Ich dachte man gibt den Port auch im Menü unter "Tools", "Serial Port" an. Das hatte aber nicht funktioniert. Es kam immer der Hinweis "No Programmer on Com1".

In der "programmers.txt" hatte ich auch kurz geschaut aber keinen Eintrag ".communication=" gefunden.

Wieder etwas gelernt. Vielen Dank :slight_smile:
Poldi

Ist es eigentlich moeglich den offiziellen Bootloader auf einen mit Lady Adas vorgeflashtem Arduino zu brennen?

Tja, meine modifizierte IDE merkt sich den Port für den Programmer und man drückt nur noch STRG+B um den Bootloader zu brennnen. Sehr praktisch, wenn man mehrere Chips hintereinander flashen möchte. Mehr zu der IDE auch in meinem LumiNet Thread.

Nachtwind, Du kannst den original Bootloader auf den Chip flashen. Natürlich nur via ISP programmer. Hast Du einen solchen ISP programmer?

Ich habe zumindest die Moeglichkeit einen audzuleihen - dementsprechend sollte das dann ja mal eine Moeglichkeit sein...

Es gibt ja nen hack, der einen Arduino zu einem ISP macht. Konkret wird der FTDI Chip mißbraucht, der auf dem Arduino ist. Somit kann ein Arduino via USB geflasht werden ohne extra Programmer. Das ganze habe ich getestet und der Nachteil war bisher, dass die IDE das nicht unterstützt und man ein externes Tool aufrufen musste.
Meine modifizierte IDE erlaubt es, den Arduino ISP hack wie jeden anderen ISP programmer aus der List zu benutzen.

Kurz: man lötet einen vierpoligen pin-header auf die Pads, die X3 heißen und dann muss man nur noch die Kabel richtig stecken und hat quasi gratis einen ISP programmer bekommen, der zudem auch den Arduino selbst flashen kann wenn man die Kabel richtig setzt. Mehr dazu findet ihr auch in meinem LumiNet Beitrag hier im Forum.

Hallo!

Entweder:

Mehr dazu findet ihr auch in meinem LumiNet Beitrag hier im Forum.

Oder:
http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

Ich hatte mich dazu auch mal schlau gemacht und im Netz gesucht, bevor ich meinen Programmer einsetzen konnte :wink:

Gruß
Poldi

ja, der original Beitrag sagt aber, dass es nicht möglich ist, den Programmer aus der IDE heraus aufzurufen. Das Problem habe ich gefixt, denn man möchte ja nicht externe Tools benutzen müssen, da könnte man ja direkt weg von der Arduino Idee gehen und wieder nur gcc machen. Dauert noch etwa bis Mitte Mai bis meine IDE public wird, es gibt noch eine Reihe anderer Verbesserungen und Tests.

Moin.

Stimmt, das hatte ich nicht bedacht.

Na dann bin ich mal auf das Ergebnis gespannt :wink:

Sonnige Woche!
Poldi

Sorry to post in English here...

If anyone has built the HVRescue hardware I have a full feature parrellel programing sketch that will be very useful. I need some one to test it before I release it in general.

Hi,

also ich habe einige neue Atmega8-16 nach dieser Anleitung gebrannt:

http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

nur die 4 Stecker auf mein Arduino gelötet, die 4 kabel verbunden und dann den Bootloader drauf - funktioniert super. Und ich brauche keinerlei zusätzliche hardware

Am einfachsten ist es mit der folgenden anleitung

Ich habe schon meherer ATMEGA 168er mit der Art gebrannt.
Es hat perfekt geklappt. Mann kann das halt auch auf einem Breadboard machen oder einem zweiten Board über die ISP schnittstelle

Bei Adafruits eine Programmer zum Selberbauen mit Anleitung (Englisch):
http://www.ladyada.net/make/usbtinyisp/index.html