Wann wird ein Arduino-Bootloader verwendet?

7

Ich muss innerhalb eines Monats einen Roboter für einen Wettbewerb bauen. Ich habe Arduinos für meine Projekte verwendet, bin aber dazu übergegangen, nur Code mit avrdude zu eigenständigen AVR-Mikrocontrollern zu flashen.

Ich dachte, nur weil ich die Arduino-Hardware nicht mehr benutze, gibt es einen Grund, für einige Projekte keinen Arduino-Bootloader auf meine Mikrocontroller zu brennen? Gibt es Szenarien (wie meine aktuelle Aufgabe), in denen dies tatsächlich von Vorteil wäre?

Es ist etwas einfacher, Code für ein Arduino zu schreiben, und es gibt mehrere Open-Source-Bibliotheken. Ich bin sicher, dass es andere wichtige Vor- und Nachteile gibt, die mir nicht bekannt sind, die ich aber gerne kennen würde.

Unter welchen Szenarien wäre es im Wesentlichen eine gute Idee, einen Arduino-Bootloader auf meinen Mikrocontroller zu brennen.

capcom
quelle
2
Sie scheinen den Arduino-Bootloader und die Arduino-Laufzeitbibliotheken zu verwirren oder stellen zwei unterschiedliche Fragen, die zusammen ausgeführt werden. Es handelt sich um zwei völlig separate Softwareteile, und Sie können beide ohne die andere verwenden. Der Bootloader kann sehr hilfreich sein, es sei denn, er passt nicht, Sie können die Startverzögerung nicht tolerieren oder Sie müssen die Dinge sperren.
Chris Stratton
@ ChrisStratton Ich verstehe. Ich mag diese beiden verwechseln, aber das ist nicht der Kern meiner Frage. Grundsätzlich möchte ich wissen, wann / warum ich den Arduino-Bootloader verwenden sollte, im Gegensatz dazu, wie ich derzeit meine Mikrocontroller verwende. Mit anderen Worten, außer den drei Gründen, die Sie angegeben haben, warum sollte niemand den Arduino-Bootloader verwenden wollen? Ich sehe so viele AVR-Projekte, bei denen die Leute sie nicht verwenden und nicht an diese drei Einschränkungen (Größe, Verzögerung, Dauerhaftigkeit) gebunden sind. Vielen Dank.
Capcom

Antworten:

10

Die grundlegende Antwort ist, dass einige Leute keinen Programmierer kaufen oder machen wollen. Sie benötigen lediglich eine serielle Schnittstelle, um den IC mit einem Bootloader zu programmieren. Es ist billiger.

Oder manchmal möchten Sie in der Lage sein, Ihren Code vor Ort zu aktualisieren, ohne Ihren teuren Programmierer zu verwenden. Dann ist ein Bootloader in Ordnung.

Wenn Sie jedoch über die Verwendung Ihres Systems nachdenken und keinen Bootloader benötigen, gibt es keinen Grund, diesen beizubehalten. Es braucht Flash-Platz für nichts.

Der Arduino-Bootloader ist nur ein Bootloader: Damit kann sich der Chip beim Booten selbst mit neuen Daten programmieren. Nichts anderes. Wenn Sie es haben oder nicht, wirkt sich dies nicht auf Ihre Codeleistung aus (mit Ausnahme des verfügbaren Flash-Speicherplatzes oder der Startverzögerung).

So beantworten Sie Ihre Frage:

  • Wenn Sie keinen Programmierer haben -> behalten Sie den Bootlaoder
  • Wenn Sie einen Programmierer haben -> bis zu Ihnen, hängt es davon ab, ob Sie ein Upgrade ohne den Programmierer durchführen möchten oder nicht.
Blup1980
quelle
Aha. Ich glaube, ich habe nicht wirklich verstanden, was ein Bootloader im Kontext meiner Frage ist. Obwohl ich immer noch nicht verstehe, wie es die MCU über seriell programmieren kann. Ist das nur die Hauptfunktion des Arduino Bootloaders? Es empfängt die Daten über eine serielle Verbindung und blinkt sie intern? Ich kann hier ganz weg sein. Außerdem habe ich einen Programmierer. Ich benutze den USBasp, also nichts Besonderes, aber trotzdem perfekt funktionsfähig.
Capcom
Der Bootloader befindet sich am Einstiegspunkt der Ausführung Ihrer MCU. Es läuft ganz am Anfang. Der Zweck besteht darin, zu erkennen, ob jemand über die serielle Schnittstelle mit ihm kommunizieren möchte. Wenn nicht, ruft es Ihre Software auf. Wenn ja, verwendet es die Selbst-Flash-Programmierfunktion der MCU, um ihren Flash (außer sich selbst !!) mit den Daten neu zu programmieren, die Sie ihm über die serielle Schnittstelle geben.
Blup1980
@capcom: Das ist nicht nur die Hauptfunktion eines Bootloaders, es ist die EINZIGE Funktion! Wie Blup1980 sagt, gibt es keinen Grund, den Bootloader für diese Funktion weiter zu verwenden, wenn Sie ihn nicht benötigen.
Wouter van Ooijen
Super, danke. Und nur um mein Verständnis zu verbessern, kann ich die Bibliotheken, die Leute für Arduinos schreiben, direkt auf meiner MCU verwenden?
Capcom
@WoutervanOoijen Danke für die sehr klare Antwort.
Capcom
7

Dies mag ein bisschen unangenehm erscheinen, aber wenn Sie den Arduino-Bootloader nicht benötigen (weil Sie Ihren AtmegaXXX nicht über eine serielle Verbindung im Stromkreis neu flashen müssen), benötigen Sie keinen Bootloader. Das ist alles, was ein Bootloader für Sie tut.

Im Allgemeinen habe ich festgestellt, dass der Arduino-Bootloader auf meinen Atmega-Mikrocontrollern im Feld flexibler ist. Aber meine werden nicht für freistehende Roboter verwendet; Sie werden in Geräten und Anlagensteuerungen verwendet, normalerweise am Ende langer RS-232-Verbindungen. Ich kann an meinem Hauptcomputer sitzen und nach Belieben neue Firmware auf sie hochladen, und es fühlt sich ein wenig so an, als würde ich Firmware auf eine Mars-Sonde hochladen. Ich würde es nicht anders wollen.

Gus Mueller
quelle