boxtec Forum
Microcontroller => Arduino General => : MathiasW February 27, 2013, 09:44:23 AM
-
Salut,
welchen Programmer würdet Ihr empfehlen, um einen Bootloader auf einen Arduino zu brennen und gibt es dazu eine gute Anleitung?
Ciao, Mathias
-
Die einfachste Lösung ist die "ArduinoISP"-Lösung. Hier wird ein Arduino-Board als Programmer genutzt.
Siehe Anleitung von Arduino:
http://arduino.cc/en/Tutorial/ArduinoISP (http://arduino.cc/en/Tutorial/ArduinoISP)
Für die Programmierung meiner Attiny nutze ich einen USBtiny Arduino AVR-ISP Programmer USB von Boxtec
http://shop.boxtec.ch/usbtiny-arduino-programmer-p-40910.html (http://shop.boxtec.ch/usbtiny-arduino-programmer-p-40910.html)
Anleitungen zu diesem Thema gibt es viele im Netz. Diese hier ist noch schön bebildert:
http://elektrotechnik-allerlei.de/bootloader-mit-arduino-uno-und-mysmartusb-brennen/ (http://elektrotechnik-allerlei.de/bootloader-mit-arduino-uno-und-mysmartusb-brennen/)
-
ArduinoISP ist zuverlässig, wird von der Software gut unterstützt, aber “monopolisiert” halt einen bestehenden Arduino.
Im Augenblick verwende ich gerne einen “Bus Pirate”: http://shop.boxtec.ch/pirate-p-40748.html (http://shop.boxtec.ch/pirate-p-40748.html). Unter vielen anderen Protokollen spricht der auch SPI, man kann sowohl 3.3V als auch 5V Projekte problemlos damit programmieren. Leider unterstützt die Version von avrdude, die im Gegenwärtigen Arduino IDE drin steckt, Bus Pirate nur mit einem langsamen Protokoll; wenn man avrdude selbst baut wird ein viel schnelleres Protokoll unterstützt. Man kann auch den Bus Pirate für das stk500 Protokoll modifizieren. Ein paar Details zu Bus Pirate auf meinem Blog: http://samelimmat.blogspot.ch/2013/02/overqualified-flashlight.html (http://samelimmat.blogspot.ch/2013/02/overqualified-flashlight.html).
Letztes Jahr habe ich auch ein Foca Board als Programmer verwendet, aber diese Methode ist eher abenteuerlich: http://samelimmat.blogspot.ch/2012/08/foca-21-as-avr-isp.html (http://samelimmat.blogspot.ch/2012/08/foca-21-as-avr-isp.html)
Alle diese Methoden setzen voraus, dass der RESET Pin auf Deinem Arduino noch funktioniert (man kann ihn ja mit gewissen Fuse-settings disablen, und gerade bei ATtinys ist gelegentlich ein zusätzlicher Pin notwendig). Wenn der RESET Pin disabled ist, braucht man einen 12V Programmierer, z.B.: http://mightyohm.com/blog/products/hv-rescue-shield-2-x/ (http://mightyohm.com/blog/products/hv-rescue-shield-2-x/)
-
Merci für die schnelle Antwort!
anscheinend habe ich mir einen Mega2560 mit dem "!!!" bug zerschossen.. Ich gehe davon aus, dass die beschriebenen Methoden auch für den Mega2560 gelten sofern man die richtigen ISP pins verwendet (50-53). Ich werde mal einen Versuch mit einem Arduino als Programmer machen.
Ciao, Mathias
-
Zum programmieren von Boards nehme ich den von Thomas erwähnten usbtiny (http://shop.boxtec.ch/usbtiny-arduino-programmer-p-40910.html) (verwendet übrigens einen ATtiny2313), wenns nur um (DIP) ICs geht ist man am besten mit einem selbstgefrickelten Shield mit ZIF Sockel beraten finde ich. Dazu brauchts nur den Quarz und seine 2 Kondensatoren und die Verbindung der 4 erwähnten Leitungen MOSI, MISO, SCK und RESET, schon ist das eigene ISP Shield brennbereit.
Grüsse - Christoph
-
Salut,
beim Mega2560 hilft mir der ZIF Sockel leider nur wenig, da SMD. Ich muss den Bootloader meines iBoard Pro neu schreiben. Leider liefert der Schreibversuch folgenden Fehler:
avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Kennt jemand das Problem? Ich zögere, mit -F weiter zu machen
Ciao, Mathias
-
Was ist denn ein “!!!” Bug?
Die Device Signature deutet darauf hin, dass in der Schaltung grundsätzlich was falsch läuft (Falsch verdrahtet, ungenügende Stromversorgung, falsche Taktfrequenz). In der Situation ist -F sicher keine gute Idee.
Leider ist auch bei richtiger Verdrahtung vermutlich ein Mega2560 problematisch, weil viele Programmiermethoden (u.a. ArduinoISP) angeblich nur bis 64K Flash funktionieren. Google hat dazu einiges an Diskussionen.
-
Ich hänge mich auch mal hier an. Bin gerade am selben Problem. Habe ein IBoard. Theoretisch ein Duemilanove? m328p?
Ich wollte per Arduino ISP gerne den Ariadne Bootloader (https://github.com/codebendercc/Ariadne-Bootloader) installieren, da dieser ein TFTP Server enthält um mein IBoard per codebender.cc (http://codebender.cc/) online übers Web zu programmieren. Laut dem Projekt ist das IBoard unterstützt.
Ich benutze den Arduino Uno R3 als ISP. Habe laut der Anleitung ein Kondensator auf dem Uno zwischen Ground und Reset angelegt. Leider hatte ich keinen 10uF, habe ein 22uF genommen. Ist das ein Problem? Minus des Kondensators auf Ground...
(http://i46.tinypic.com/8zkvtk.png)
Wenn ich jetzt den Bootloader brennen will, kommt immer Invalid device signature 0x000000. Habe die Pins vom Arduino wie beschrieben mit dem IBoard verbunden. Auf dem IBoard sind es folgende Pins:
(http://i49.tinypic.com/330zc60.png)
(http://i48.tinypic.com/2zs8fls.png)
Liegt es am Kondensator? Oder wo könnte noch was falsch sein?
Habe natürlich den 3.3V vom Uno mit dem 3.3V vom IBoard verbunden, da das IBoard 3.3 V will. Will eigentlich nicht nur für dieses eine mal Bootloader schreiben extra einen Programmer kaufen :-[ Vor allem weil ich dann nicht weiss ob es überhaupt funktioniert...
Hab aus lauter Verzweiflung noch ein Parallelport ISP nachgebaut, leider hatte ich ebenfalls keinen Erfolg, immer wieder 0x000000 :-[
Wenn noch jemand eine Idee hat...
-
Salut,
der "!!!" bug bezieht sich auf einen Bootloader, der keine Strings mit drei Ausrufezeichen verträgt. http://forums.adafruit.com/viewtopic.php?f=25&t=28633 (http://forums.adafruit.com/viewtopic.php?f=25&t=28633). Mein Mega2560 scheint diesen bug zu haben, so dass ich nun den neuen Bootloader brennen will. Bislang ohne Erfolg. Die Verdrahtung habe ich mehrfach geprüft (auch durch meine Frau) und kann beim besten Willen keinen Fehler erkennen. Ich werde mal den 10 uF Kondensator einbauen.
Ich bin auch mit iTead Support in Kontakt und sie haben mir empfohlen einen dedizierten Programmer zu nehmen
Der Mega2560 zeigt übrigens das Verhalten, dass er sich in keiner Weise über den Foca programmieren lässt (timeout)
Ciao, Mathias
-
mko, der Kondensatorwert sollte kein Problem sein, ich bin ziemlich sicher, dass 10µF nur das Minimum darstellt. Bist Du sicher, dass der Pinout stimmt, d.h.:
• Der “eckig” markierte Pin in der oberen Reihe rechts sollte MISO sein.
• Im Gegensatz zu gewissen anderen Protokollen werden die Datenkabel NICHT gekreuzt, d.h. MISO sollte mit MISO und MOSI mit MOSI verbunden sein, nicht umgekehrt!
Ein Punkt, bei dem ich nicht so sicher bin, ist ob man 3.3V Power mit 5V Logik kombinieren darf. Bei mir hat das auch schon funktioniert, aber ich bin nicht sicher, ob das Probleme geben kann.
-
Wie kommst du darauf das der eckige MI ist? Hätte jetzt aus dem Bauch auf GND getippt... wenn du recht hast, wäre bei mir natürlich alles 180 Grad verkehrt ... :P
Habe ein Elko 22uF genommen, könnte das noch ein Problem sein? Bin gerade daran, einen "richtigen" Kondensator zu suchen...hab dafür mal einen alten LaserDrucker zerlegt...bis jetzt siehts gut aus...
(https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRsQAW_D2Pvre2qOLZShr63yMFcf3sT7LQuejBwEBXfz41dqBRzJQ)
Die grosse Frage bleibt: Muss folgendes Bild 90 Grad nach Links oder nach Rechts gedreht werden, damit es mit dem ISP Platinen Layout passt?
(http://i49.tinypic.com/330zc60.png)
-
Der markierte Pin ist Pin 1 und das wär MISO. Im Zweifelsfall gibts einen einfachen Trick: Mit einem Durchgangsprüfer schauen wo GND anliegt, damit ist die Orientierung des ICSP def. festgelegt.
Apropos: Am Kondensator liegts nicht da geh ich mit Microtherion absolut einig, Elkos sind auch ganz richtige Kondensatoren, einfach durch Ihre Bauweise mit einer Polarisierung, der Laserdrucker hätte also nicht zur Bauteilernte über die Klinge springen müssen ;D
-
Jiiiihaaaa !!!!! Es klappt! Es war wirklich genau umgekehrt... ;D
Jetzt bekomme ich Device Signature 0x010101 .... kann es einfach sein, dass das IBoard eine eigene Signatur sendet? Und ich das mit Force übergehen muss? Wenn ja, wie kann ich innerhalb der Arduino IDE den Signatur Check übergehen?
Edit: Hab noch etwas am Kondensator gewackelt... jetzt erhalte ich beim Aufruf von
./avrdude -p m328p -P /dev/cu.usbmodemfd1421 -c avrisp -b 19200 -t -C ../etc/avrdude.conf
unter OSX jedes mal eine andere Signatur....
Edit2: Ok, egal ob mit oder ohne Kondensator, die Signatur wackelt einfach hin und her... hab noch den Kondensator gegen einen Elko 220uF getauscht. Selbe Symptome.
Der Elko kommt auf das Board das den ISP spielt, NICHT das Ziel-Board, oder?
Könnte es helfen das IBoard an die Spannung anzuschliessen anstatt vom Arduino zu speisen?
-
Ich würde ev. mal versuchen direkt aus der Arduino IDE den Bootloader zu schreiben, dann stimmen die Paramter für avrdude sicher, z.B. müsste es IMHO -c stk500v1 heissen, wenn ein Arduino ISP verwendet wird. Die Angabe der Baudrate müsste auch nicht nötig sein.
Der Elko ist da richtig, wobei ich den selber noch nie gebraucht habe. Ich bin aber auch nach wie vor nicht sicher, ob ein 3.3V Board mit einem 5V Board immer programmiert werden kann - ich hätte das jetzt intuitiv mit einem anderen 3.3V Board probiert, aber wenn die I/Os 5V tolerant sind (was sie offenbar sind) sollte das trotzdem gehen.
Nur als Hinweis bzgl. Deiner Bemerkung:
Habe natürlich den 3.3V vom Uno mit dem 3.3V vom IBoard verbunden
Das Ziel Board sollte ausschliesslich über den ICSP versorgt/angeschlossen werden, ich bezweifle dass eine separate Verbindung von 3.3V auf 3.3V des Iboards hilfreich ist (wenn das der Fall ist).
-
Jiiiihaaaa !!!!! Es klappt! Es war wirklich genau umgekehrt... ;D
Sehr gut, dann hatte Google recht wegen des Layouts.
Jetzt bekomme ich Device Signature 0x010101 .... kann es einfach sein, dass das IBoard eine eigene Signatur sendet?
Ich bin ziemlich sicher dass die device sig NICHT ein reprogrammierbarer Teil des Chips ist. Wenn die falsch ist, ist was schiefgelaufen.
./avrdude -p m328p -P /dev/cu.usbmodemfd1421 -c avrisp -b 19200 -t -C ../etc/avrdude.conf
Aha! Wie der boxtec-mod gesagt hat, ist das Protokoll falsch, muss stk500v1 sein. In der Arduino app hat’s einen Spickzettel:
Arduino.app/Contents/Resources/Java/hardware/arduino/programmers.txt
Im gleichen Directory ist noch “boards.txt”, und laut dem lautet der Chip Name eigentlich “atmega328p”, aber es kann gut sein, dass “m328p” ein korrekter Alternativname ist.
-
Im gleichen Directory ist noch “boards.txt”, und laut dem lautet der Chip Name eigentlich “atmega328p”, aber es kann gut sein, dass “m328p” ein korrekter Alternativname ist.
Die -p Option bezieht sich meines Wissens auf den Wert von 'id' in der avrdude.conf, dort wird der 328P auch u.a. wie folgt definiert:
#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------
part
id = "m328p";
desc = "ATMEGA328P";
...
-
Hallo Zusammen
Hab die CMD nur benutzt, um die Device Signatur zu sehen, wollte nicht so flashen. Habe aber -c arduino benutzt. Heute nochmals alles in Ruhe aufgebaut, ausserdem noch die 3 LEDs die im ISP Sketch sind eingebaut, damit ich sehe was geht.
1. Fehler war sicher: Ich habe 3.3 V und GND an einer anderen Stelle des IBoard eingespeisten, das Board hatte Power, aber der ISP funktioniert nicht. 3.3 und GND muss am ISP angeschlossen sein.
2. Kondensator muss auch wie beschrieben dran sein
3. 3.3 V programmieren mit 5V Arduino geht ebenfalls. Hatte gestern noch einen Forenbeitrag gefunden, wo dies bestätigt wird, aber hab den grad nicht zur Hand
4. Alle Verbindungen müssen SAUBER sitzen....ok das war sicher ein weitere Fehler...etwas "Lotto"...
ES HAT GEKLAPPT....mein IBoard hat jetzt den TFTP Bootloader drauf. Ich versuche jetzt, online per codebender.cc meine Sketches auf mein IBoard zu bringen, welches per WLAN im Keller liegt...harharhar... 8)
Vielen Dank für die Unterstützung...
-
Argh....
Hat soweit alles geklappt...wollte noch eine Status LDE anschliessen und wups...da war das IBoard tot.... >:(
Scheint aber kein Flash Problem zu sein, sonder nein "ich habe einen Kurzschluss gemacht" Problem...
Kann man das selber reparieren, oder hab ich jetzt 30 CHF Schrott? (So kurz vor dem Ziel?)
-
Salut,
ich habe mein Glück nun mit einem Programmer versucht (in Deutschland bestellt, da meine letzte Boxtec Bestellung immer noch bei der Post/Zoll fest hängt (was definitiv nicht am Versand von Boxtec hängt sondern in die Kategorie Behördenspaß fällt, welche nicht in der Lage sind, außen an der Verpackung angebrachte Rechnungen als außen an der Verpackung angebrachte Rechnungen zu erkennen ...). Dabei hilft die Anleitung von Adafruit : http://www.ladyada.net/make/usbtinyisp/avrdude.html (http://www.ladyada.net/make/usbtinyisp/avrdude.html)
Mit dem Befehl avrdude -c usbtiny -p t2313
sieht man, ob man Erfolg hat. Bei einem DFrobot Mega2010 (ein Mega 1280) kam
C:\Users\Mathias>avrdude -c usbtiny -p t2313
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.06s
avrdude: Device signature = 0x1e9703
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
Double check chip, or use -F to override this check.
avrdude done. Thank you.
Bei meinem iBoard Pro leider C:\Users\Mathias>avrdude -c usbtiny -p t2313
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Interessanterweise konnte ich einen Sketch auf das suspekte board laden, nachdem ich einen sketch mit dem FOCA auf ein anderes Board geladen hatte. Ein nochmaliges Laden war erfolglos. Diese Verhalten ist reproduzierbar.
Da ich das Board direkt bei iTead erstanden habe, muss ich es wohl als Schrott abschreiben.
Ciao, Mathias
-
Argh....
Hat soweit alles geklappt...wollte noch eine Status LDE anschliessen und wups...da war das IBoard tot.... >:(
[...]
Kann man das selber reparieren, oder hab ich jetzt 30 CHF Schrott? (So kurz vor dem Ziel?)
Es ist nicht ausgeschlossen, dass das Board reparierbar ist... es kommt darauf an, was auf dem Board raucht :o
Wenn es nur ein Kondensator ist, kann man ihn oft recht einfach ersetzen. Der ATmega ist auf dem Board leider nicht die DIP Variante, und deshalb eine schwierige Lötarbeit. Gerade die ATmegas sind aber oft erstaunlich robust. Ich habe es einmal geschafft, einen 12V Power Supply verkehrt herum einzustecken, und der ATmega hat nur seinen Boot Loader dabei vergessen.
-
Salut,
der Grund übrigens, weshalb ich an das iBoard Pro herangegangen bin war eigentlich eine Aufforderung von iTead, bei der RTC den 1 MOhm Widerstand zu entfernen und das Quarz (endlich) mit dem IC555 zu verbinden. Das PCB mit der Version 1.0 ist falsch geroutet, was mit v1.1 behoben sein soll.
Welche PCB Versin haben die boards im Lager von boxtec?
Der Fehler äußert sich übrigens darin, dass die Uhr nicht läuft aber beschreibbar ist, was einem nicht wundern sollte, wenn das Quarz nicht mit dem IC spricht
Ciao, Mathias
-
Welche PCB Versin haben die boards im Lager von boxtec?
Ich habe eines aus der letzten Serie die wir erhalten haben geprüft und da steht v1.1 auf dem PCB.
Grüsse - Christoph
-
Argh...dachte, wenns eh nix zu verlieren gibt, versuch ich das IBoard nochmals per Arduino ISP zu brennen... wer weiss ...
Kaum schliess ich 3.3 und GND vom Arduino ans IBoard an, merke ich, dass das IBoard wieder ganz normal funktioniert. Das heisst, etwas mit dem Spannungsregler ist defekt... :-\
Naja, Teilerfolg... Kann das IBoard schlecht ständig am Arduino lassen... *g*
-
Ich verstehe sehr wenig von Power Supplies, aber das iBoard Design dafür sieht recht kompliziert aus: ftp://imall.iteadstudio.com/IM120410001_IBoard/Documents/SCH_IM120410001_iBoard.pdf (http://ftp://imall.iteadstudio.com/IM120410001_IBoard/Documents/SCH_IM120410001_iBoard.pdf) (Seite 3) da müsste man doch eigentlich hoffen, dass das Ganze gegen Fehlbedienungen ziemlich robust ist. Mit all den Dioden müsste es zumindest schwierig zu sein, mit falsch gepolter Stromversorgung etwas anzustellen, aber gegen einen Kurzschluss hilft das halt auch nichts.
Einen Arduino als Ersatz brauchst Du natürlich nicht, so was tät’s auch: http://shop.boxtec.ch/5v33v-breadboard-power-supply-p-40719.html (http://shop.boxtec.ch/5v33v-breadboard-power-supply-p-40719.html) oder gerade ein Eigenbau basierend auf dem: http://shop.boxtec.ch/lm317t-voltage-regulator-p-40514.html (http://shop.boxtec.ch/lm317t-voltage-regulator-p-40514.html)
-
Dacht ich mir eben auch schon... hab jetzt aber noch eine Lösung..da das IBoard zusammen mit einem alten DLINK Router in ein neues 19" Gehäuse kommt, hab ich mit dem Multimeter auf der DLink Platine am JTAG Anschluss 3.3 V gesucht und gefunden... jetzt speist der DLINK das IBoard... wenigsten mal einen Anfang... und der alte DLINK macht das IBoard gleich noch WLAN tauglich ... *g*
Ist aber sicher nicht optimal das IBoard direkt mit 3.3V zu speisen, der Spannungsregulator auf dem Board scheint doch mehr zu sein als "nur" 3.3V herzustellen, irgendwelche Schutzfunktionen usw.???
-
Hallo Zusammen
Habe seit dieser Woche auch ein iBoard Pro. Mein iBoard hat trotz mehrfacher Reperatur-Versuche letzte Woche Aufgegeben. Der WIZ5100 hat wohl dem Dauerbetrieb nicht standgehalten. Ich hoffe aber das iBoard Pro machts hier besser. Bin sowieso froh um mehr Speicher ;D
Zum Thema ISP auf Arduino habe ich jetzt seit heute noch einen weiteren Beitrag, könnte dich MathiasW eventuell noch interessieren. Habe zwar den !!! Bug nicht, aber wenn man per Watch-Dog den Mega2560 resettet, startet dieser ständig neu, nicht nur einmal. Erst wenn man ihn stromlos macht, kommt er wieder. Auch ein bekannter Bug im Bootloader. Es gibt hier bereits ein gefixtes HEX:
https://github.com/arduino/Arduino-stk500v2-bootloader (https://github.com/arduino/Arduino-stk500v2-bootloader)
Um mit einem "normalen" Arduino Uno oder 328P den Mega 2560 zu flashen, braucht es aber mehr, da der Speicher doch nicht unwesentlich grösser ist. Hier hat aber jemand eine Lösung dafür. Diese funktioniert Genial. Besser als der Original ISP!!! Die Hexfiles, inkl. V2 für den Mega2560 sind gleich im Download drin, inkl. super Anleitung und Schemas.
http://www.gammon.com.au/forum/?id=11635 (http://www.gammon.com.au/forum/?id=11635)
Würde mich über dein (MathiasW) Feedback freuen obs bei Dir was gebracht hat.
Noch eine Frage in die Runde: Wie unterscheidet man beim iBoard Pro PCB 1.0 und 1.1? Wo sollte das stehen?