Bootloader brennen in Code

Hallo Liebe Community,

ich habe schon einige Seiten im Internet durchgeschaut aber ich glaube ich bin einfach zu inkompetent das richtige zu finden. Also mein Anliegen besteht darin, dass ich gerne eine eigene ISP-Burnstation bauen würde, in der ich neu gekaufte "Blanko" µC´s brennen kann. Schaltplan ist im Großen und Ganzen bereits fertig.

Mein jetziges Problem besteht darin einen Code zu schreiben, mit welchem ich per Knopfdruck den Burn Bootloader befehl ausführen kann. Ich weiß, dass man diesen Befehl in der IDE bei "Tools>Burn Bootloader" ausführen kann aber ich würde das gerne im Code drin machen.

Als Beispiel hierzu:

if(Buttonstate==HIGH){ Burn Bootloader; }

Es wäre sehr nett wenn mir jemand bei diesem Problem helfen könnte

Vielen Dank Tyrone

Suche das Beispiel: "Arduino as ISP" Da solltest du das wichtigste finden, das was nach dem Knopfdruck passieren soll...

Vielen Dank für deinen Tipp. Ich habe mir das ISP Programm jetzt öfters durchgeguckt aber ich bin dann doch nicht so fit im programmieren, dass ich es selber herausfinde was du damit gemeint hast. Also im Klartext ich bin so klug wie davor. Kannst du mir vielleicht sagen auf welchen teil im Code du genau aus warst? Ich wäre dankbar für deine Hilfe.

Du willst eine Blackbox bauen, welche AVRs beschreiben können soll. Dazu muss die Box das per ISP erledigen. Den Code dafür hast du jetzt vor dir liegen.

Nutze ihn, oder auch nicht...

aber ich bin dann doch nicht so fit im programmieren,

Eine fertige Lösung habe ich leider nicht für dich.

:o Ein gute Gelegenheit, um an deinen Problemen zu wachsen. :o

Tyrone_Montana: ich habe schon einige Seiten im Internet durchgeschaut aber ich glaube ich bin einfach zu inkompetent das richtige zu finden. Also mein Anliegen besteht darin, dass ich gerne eine eigene ISP-Burnstation bauen würde, in der ich neu gekaufte "Blanko" µC´s brennen kann. Schaltplan ist im Großen und Ganzen bereits fertig.

Mein jetziges Problem besteht darin einen Code zu schreiben, mit welchem ich per Knopfdruck den Burn Bootloader befehl ausführen kann. Ich weiß, dass man diesen Befehl in der IDE bei "Tools>Burn Bootloader" ausführen kann aber ich würde das gerne im Code drin machen

Warum zeigst du uns nicht deine Schaltung ? Dann können wir uns besser vorstellen, was du wie vor hast. Allerdings ist dein Projekt nicht unbedingt etwas für Anfänger. Aber mit deiner Schaltung kannst du uns evtl. davon überzeugen, dass es klappen könnte.

Die Schaltung werde ich noch reinstellen aber ich frage ich den code im isp programm ändern oder dazu schreiben soll, damit ich dieses Programm per Taster ablaufen lassen kann. Ich habe mir jetzt den Code noch einmal durchgeguckt aber ich habe irgendwie ein richtiges Brett vorm Kopf und komme nicht weiter :D

Tyrone_Montana: ich frage mich wo ich den code im isp programm ändern oder dazu schreiben soll

sorry für den schreibfehler

a) Brett entfernen. b) erst mal mit einfacheren Sachen anfangen c) besser werden d) Sketch ertüfteln e) hier einstellen f) Hilfe bekommen.

Ernsthaft. Was erwartest du? :o Also, auch von Dir selbst?

Stefan

Ich hätte erwartet dass mir einfach jemand sagt wo ich den code verändern soll. Damit das Programm auf Knopfdruck startet. Und bis ich den Code verstanden habe das dauert ja auch ne weile.

Aber mal zu ner anderen Sache:

Was ich noch nicht so von der Ausführung vom brennen verstanden habe und zwar: Ich fange ja damit an das Programm auf den µC zu laden. Dann wähle ich Arduino as ISP aus und drücke dann auf Burn Bootloader. Heißt das, dass das Programm nur mit dem Befehl Burn Bootloader gestartet werden kann und nicht anders?(Also sozusagen über die IDE) Und ist es überhaupt nötig Arduino as ISP auszuwählen wenn man sowieso das ISP programm auf dem Board hat? Ich meine lädt die IDE das programm anders hoch wenn ich Arduino as ISP ausgewählt habe

Ähhmmm Sorry, kann es sein dass du noch niemals ein einziges Programm auf einen AVR µC geladen hast? Egal ob Mega, Tiny oder sonst welchen? Dann würdest du nämlich selbst erkennen, dass deine Aussagen im letzten Post total falsch sind. Wie Stefan schon schrieb kann ich für den aktuellen Fall auch nur empfehlen: Fang ganz klein an. Zum Beispiel mit einem "StarterKit" - daraus kann man schon einiges lernen und liefert das dazu notwendige Rüstzeug. Alles andere kommt dann oft von selbst - und wir sind dann auch noch hier.

PS: Dein offensichtlich rein theoretischer Plan wird in dieser Form niemals funktionieren!

Tyrone_Montana: Was ich noch nicht so von der Ausführung vom brennen verstanden habe und zwar: Ich fange ja damit an das Programm auf den µC zu laden. Dann wähle ich Arduino as ISP aus und drücke dann auf Burn Bootloader. Heißt das, dass das Programm nur mit dem Befehl Burn Bootloader gestartet werden kann und nicht anders?(Also sozusagen über die IDE) Und ist es überhaupt nötig Arduino as ISP auszuwählen wenn man sowieso das ISP programm auf dem Board hat? Ich meine lädt die IDE das programm anders hoch wenn ich Arduino as ISP ausgewählt habe

Um es ganz kurz zu machen, der Arduino as ISP ist nur Vermittler zwischen Computer und µC, der geflasht wird. Während des brennens des Bootloaders wird byte für byte langsam der Bootloader vom PC zum Arduino as ISP übertragen und von dem so aufbereitet, dass es der zu brennende µC annimmt.

Für dein Projekt müsstest du die Bootloader irgendwie im Arduino as ISP speichern z.B. auf SD-Karte. Jetzt müsstest du den Bootloader von SD-Karte auf den µC übertragen und noch ein paar andere Sachen machen, die dir bestimmt das Datenblatt des µC verraten.

Mit anderen Worten vergiss das Projekt, so wie du es machen willst, es sei denn du willst echter Profi werden und dich in die Details des Bootloaders brennen einarbeiten. Ein schöner Programmieradapter mit Textool-Sockel, der nicht ohne PC auskommt, ist auch ein nettes Projekt. Vielleicht kann man einen Leonardo as ISP nutzen, dann kann der eine Tastatur simulieren und bei Tastendruck auf dem PC das Brennen des Bootloaders anstoßen.

Du mußt den Code vom "Arduino as ISP" im Prinzip erweitern. Der Bootloader ist schon fertiger Byte-Code der in Form einer HEX-Datei im Dateisystem Deines PC liegt (kommt mit der IDE mit unter hardware\arduino\avr\bootloaders ). Der Code ist nicht groß (2 bis 3kb) und könnte z.B. als PROGMEM mit im ISP-Sketch untergebracht werden. Statt den Code von der seriellen Schnittstelle zu lesen, wie es der Code macht, liest Du ihn einfach aus dem PROGMEM Array aus und schreibst ihn auf den frischen µC. An welcher Stelle im Code das passiert, solltest Du aber selbst herausfinden, denn das gehört zum Lernen dazu. Kleiner Tipp, da wo von der seriellen Schnittstelle gelesen wird ist schon mal ein guter Startpunkt für die Suche.

Mario.

Ich meine auf Hackaday schon ein ähnliches Projekt gesehen zu haben, wo eine HEX-Datei von einer SD-Karte auf den nackten Mikrocontroller geflasht wurde.

Schnell mal gesucht und gefunden: http://baldwisdom.com/bootdrive/
Die nächste Ausbaustufe findet man auch auf der Seite, Mit LC-Display und Menüsteuerung.

Für Anfänger wohl eher ungeeignet…