Arduino Bootloader?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich kann mit deiner Beschreibung überhaupt nichts anfangen.

Ein Arduino Uno hat normalerweise alles. Das Board, den Prozessor eine USB Schnittstelle, einen Schnittstellentreiber und einen Bootloader auf dem Prozessor.

Mit deiner Beschreibung, was du alles angeschlossen und ausprobiert hast, kann ich nichts anfangen, das musst du näher, verständlicher erklären.

Verstehst du überhaupt was wie ablaufen soll, wenn du ein Programm aufspielen willst. Ein Programm, nicht einen Bootloader, wohl gemerkt. Oder einen Bootlader auf den Atmega 328P?

Wenn du das USB Kabel am Board anschließt, welche Com Schnittstelle meldet dir dann Windows und welche Baudrate ist dann voreingestellt?

Dein Fehler wird wohl sein, auf deinem UNO ist ein CH340 Chip drauf und dafür hat Windows keinen Treiber. Das ist jetzt nur eine Vermutung, weil ich mangels guter Beschreibung dein Problem nicht nachvollziehen kann.

Du wirst vermutlich einiges verwechseln. Was haben deine 2 Mikrocontroller mit einem UNO Board zu tun? Normal sind solche auf dem Board drauf. Einer.

Woher ich das weiß:Berufserfahrung – über 40 Jahre Instandhaltung, Reparaturen
AntonDriller 
Fragesteller
 28.03.2018, 14:38

Ok, dann noch einmal ganz ausführlich (hast Recht, war vielleicht etwas knapp):

Ein Arduino UNO hat einen auswechselbaren Mikrocontroller (man sagt da schon Mikrocontroller oder sagt man IC?), den ATMega328P-PU. Diesen kann man auch herausnehmen und in eine Schaltung einbauen, worauf er immer noch dieselbe Funktion erfüllt und auch programmiert werden kann, wenn man einen Arduino als Programmer nutzt.

Ich habe also, für ein Projekt in der Schule in Technik, den ATMega328P-PU mit dem Arduino programmiert und anschließend in eine Schaltung integriert.

https://www.arduino.cc/en/Main/Standalone

Natürlich fehlt jetzt der Mikrocontroller auf dem Arduino. Deshalb habe ich mir einen neuen bestellt (und einen weiteren auf Vorrat, tut aber nichts zur Sache). Auf dem ist jetzt selbstverständlich noch kein Bootloader drauf. Deshalb habe ich mir diese Anleitung herausgesucht:

http://www.netzmafia.de/skripten/hardware/Arduino/Bootloader_Flashen/index.html

Ab und zu verwende ich den Arduino zum Programmieren, aber andere Hardware für das fertige Projekt. Oft lohnt sich die Anfertigung einer Platine nicht, weil sich nur einige wenige Bauteile rund um den ATMEGA328P tummeln. Also wird die Schaltung auf einer Lochrasterplatte aufgebaut und der Controller dann aus der DIL-Fassung des Arduino gezogen und in die DIL-Fassung auf der Lochrasterplatte gesteckt. Also wird öfter mal ein ATMEGA328P (genauer ATMEGA328P-PU) mit Bootloader als Ersatz benötigt (manchmal auch, wenn der ATMEGA328P in der Schaltung "gegrillt" wurde). Hier kann man fast genauso verfahren, wie oben - lediglich der zweite Schritt ist unterschiedlich.

Ich habe also alles exakt so nachgebaut, wie in der Anleitung beschrieben, habe das Programm "ArduinoISP" auf meinen Arduino UNO (dort ist noch ein ATMega328P-PU mit Bootloader drauf) geladen, bei Programmer "Arduino as ISP" ausgewählt, das richtige Board und den richtigen Port ausgewählt und dann aus "Bootloader brennen" gedrückt.

Jetzt müsste da eigentlich stehen "Done burning bootloader", stattdessen steht bei mir "Fehler beim Brennen des Bootloaders". Folgende Fehlermeldung wird angezeigt:

Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"
avrdude: Yikes! Invalid device signature.
     Double check connections and try again, or use -F to override
     this check.
Fehler beim Brennen des Bootloaders.

Ich hoffe, ich habe es jetzt ausführlicher erklärt. Hast du eine Idee, woran das liegen könnte? Wie gesagt, ich habe alle Kabel und Bauteile ca. 20-mal überprüft. Es dürfte an der Verkabelung also kein Fehler vorliegen.

0
realistir  28.03.2018, 15:05
@AntonDriller

Aha, danke für deine diesmal besser verständliche Erläuterung.

Ich will mal dazu sagen, deine ursprüngliche Version war zwar gut, aber nur im Zusammenhang mit dem Wissen um diverse Dinge. Mein Uno hat keinen austauschbaren Atmega328. Mein Defizit war, ich wusste nicht dass es auch UNO Boards gibt, auf denen der Prozessor gesockelt ist. Das haben wir jetzt geklärt.

Okay, normalerweise hätte ich gesagt, wenn ein Prozessor keinen Bootloader hat, muss man ihn in der ISP Art mit einem speziell dafür geeigneten Programmer programieren. ich habe dazu den Atmel AVR MKII programmer, oder einen JTAG Programmer.

Du verwendest dafür ein Programm, das sich Arduino ISP nennt. Also soll dieses Programm und der damit programmierte Controller diese Arbeit übernehmen. Angenommen, der Controller ist entsprechend gut programmiert, könnte also diese Aufgabe übernehmen. Wenn dann etwas nicht so funktioniert wie gedacht und beabsichtigt, sollte man die sonstigen Zusammenhänge kennen.

Da wäre zuerst mal der Resetanschluss an dem zu programmierenden Controller. Damit dieser Controller nach ISP Methode programmiert werden kann, muss dessen Reset auf 0 Potential liegen. Nur dann ist er "intern" aufnahmefähig. Du müsstest prüfen, beachten ob der Reset vom zu programmierenden Controller auch auf 0 geschaltet wird. Ist das der Fall, käme Punkt zwei in Frage.

Finde heraus, wie dein Arduino ISP Programmer dafür sorgt, dass der Reset vom zu programmierenden Controller auf 0 gezogen wird. Dazu kann ein Hilfsausgang der RS232 Schnittstelle verwendet werden. Ob aber das Kabel diesen Pin auf der RS232 Schnittstelle mit führt, oder da softwaremäßig getrickst wird, habe ich noch nicht näher untersucht.

Punkt zwei betrifft das eigentliche ISP Brennprogramm. Dafür wird AVRDUDE verwendet. Das ist ein Programm ähnlich dem von früheren DOS Zeiten, also Kommandoorientiert.

Du musstes dir die Beschreibung von AVRDUDE anschauen, erkennen welche Befehle wie anzugeben sind und was in einem Brennbefehl unbedingt hinein gehört. AVRDUDE macht keine Fehlermeldungen, wenn es einen Befehl nicht versteht, oder ein Befehl falsch ist usw. Er führt dann das falsche einfach nicht aus. Somit müsstest du nachforschen, ob das was AVRDUDE als Kommandozeile verarbeitet, richtig ist.

Es gibt also diese zwei genannten Möglichkeiten, warum du einen Atmega 328 nicht mit dem Arduino ISP programmiert bekommst. Versuche raus zu finden, woran es momentan bei deinem Programmer scheitert.

0
realistir  28.03.2018, 15:31
@realistir

Nachtrag: Betreffend Reset am zu programmierenden Controller. Falls das nicht per Hilfsmittel ausgeführt wird, probiere zwei alternative Möglichkeiten. Wenn es eh einen Reset-Taster an dem zu programmierenden Controller gibt. Drücke den, starte AVRDUDE, warte bis AVRDUDE fertig ist, dann Reset-Taster los lassen. Ansonsten, legen den Resetpin per Drahtbrücke oder ähnlichem auf Groundniveau, dann programmiere den Controller und wenn programmieren fertig, Reset wieder über 10 K Widerstand auf high-Potential bringen. Soweit diese Nachhilfe in der Sache.

0
realistir  28.03.2018, 16:08
@realistir

zur gedanklichen Unterstützung des Funktionsprinzips ISP Programmierung hier ein Bild, das die wesentlichsten genannten Dinge schematisch zeigt.

Setze das Bild folgendermaßen gedanklich um. Links siehst du einen Atmega16. Dieser gilt symbolisch und funktionsmäßig für all das, was den ISP Programmer ausmacht, betrifft.

Der rechte Atmega328 steht für den zu programmierenden Controller, sinngemäß.

Wie du nun unschwer per farbliche Darstellung erkennbare Linien erkennen kannst, gibt es 3 Signal-Leitungen die den rechten Controller programmieren. TX, RX und Reset. Ansonsten wird ein Controller mit typischen ISP Programmern über die speziellen ISP Anschlüsse namens SCK, MISO und MOSI programmiert.

https://www.bwrj.org/arduino-uno-r3-pinout-diagram-schematic/arduino-uno-r3-interconnects-schematic-diagram/

0
AntonDriller 
Fragesteller
 10.04.2018, 18:34
@realistir

Tut mir leid, dass ich erst so spät antworten kann.

Erst einmal danke für die ausführliche Anleitung. Ich habe das mit dem Reset-Pin ausprobiert, hat sich leider nichts geändert. Da ich mich bisher nicht wirklich mit der Technik hinter dem Arduino beschäftigt, sondern nur damit programmiert habe, konnte ich mit deinem ersten Kommentar nicht wirklich viel anfangen (nicht deine Schuld :).

Da das Projekt, für den ich den ATMega brauche, bald fertig sein soll, habe ich mir einfach einen Mikrocontroller mit bereits installiertem Bootloader bestellt. Der ist heute angekommen. Daraufhin habe ich mal damit versucht, den Bootloader auf die anderen Mikrocontroller zu brennen und siehe da: Es funktioniert reibungslos!

Sehr seltsam allerdings, dass das Brennen mit meinem alten Mikrochip nicht funktioniert hat. Aber wie dem auch sei. Ich habe jetzt 4 Mikrocontroller mit Bootloader, was mir erst einmal reicht. Totzdem nochmal danke für die Hilfe.

1

Hast du denn auf den arduino den sketch(der ist bei der arduino IDE mitgeliefert) ArduinoISP draufgespielt? Du musst erst das programm auf den UNO laden damit du ihn als programmer nutzen kannst.

AntonDriller 
Fragesteller
 27.03.2018, 23:11

Ja, den hab ich selbstverständlich auf den Arduino draufgespielt.

beim Hochladen des Programms auf den Arduino

Hätte vielleicht noch schreiben sollen, welches Programm ich da meine.

0
jort93  27.03.2018, 23:19
@AntonDriller

Das programm raufspielen funktioniert ohne fehlermeldung oder ähnliches?

Pins hast du keine verwechselt? Manchmal bisschen verwirrend wie der ATmega chip und der arduino unterschiedliche pin layouts haben.

Hast du das schon direkt mit dem Quarz gemacht wie das in der anleitung ist? den brauchst du meines wissens nicht, habe ich zumindest nie gebraucht.(wobei ich eigentlich nur ATtiny's flashe, aber das funktioniert genau so eigentlich) Vielleicht mal ohne versuchen?

0
AntonDriller 
Fragesteller
 28.03.2018, 14:54
@jort93

An der Verkabelung dürfte es nicht liegen, die habe ich eigentlich oft genug überprüft. Auch die Schaltung funktioniert einwandfrei. Ich habe dafür mal eine Platine gefräst und gelötet. Diese funktioniert, wenn ich einen programmierten Mikrocontroller mit Bootloader einbaue, perfekt. Auf der Platine ist allerdings der 16MHz Quarz verbaut. Soll ich den nochmal rauslöten obwohl die Schaltung ganz sicher funktioniert?

Du kannst dich bei der Verkabelung auch nochmal selbst vergewissern:

https://i.imgur.com/ENFmewB.jpg

https://i.imgur.com/HZ3nDwl.jpg

https://i.imgur.com/zheVQFt.jpg

0