Wann sollte man einen Arduino-Bootloader verwenden?

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

Ich dachte, nur weil ich die Arduino-Hardware nicht mehr verwende, 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 einen Arduino zu schreiben, und es gibt mehrere Open-Source-Bibliotheken. Ich bin mir sicher, dass es noch andere wichtige Vor- (und Nachteile) gibt, die ich nicht kenne, aber gerne wissen würde.

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

Sie scheinen den Arduino-Bootloader und die Arduino-Laufzeitbibliotheken zu verwirren oder zwei unterschiedliche Fragen zu stellen, die zusammen laufen. Es handelt sich um zwei völlig separate Softwarekomponenten, und Sie können eine ohne die andere verwenden. Der Bootloader könnte sehr hilfreich sein, es sei denn, er passt nicht, Sie können die Startverzögerung nicht tolerieren oder Sie müssen die Dinge sperren.
@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, abgesehen von den drei Gründen, die Sie angegeben haben, warum sollte jemand den Arduino-Bootloader nicht verwenden wollen? Ich sehe so viele AVR-Projekte, bei denen die Leute es nicht verwenden und nicht an diese drei Einschränkungen (Größe, Verzögerung, Beständigkeit) gebunden sind. Vielen Dank.

Antworten (2)

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

Oder irgendwann möchten Sie Ihren Code vor Ort aktualisieren können, ohne Ihren teuren Programmierer zu verwenden. Dann ist ein Bootloader in Ordnung.

Aber wenn Sie über die Nutzung Ihres Systems nachdenken und keinen Bedarf für einen Bootloader finden, gibt es keinen Grund, ihn zu behalten. Es braucht Flash-Speicherplatz für nichts.

Der Arduino-Bootloader ist nur ein Bootloader: etwas, das es dem Chip ermöglicht, sich beim Booten mit neuen Daten zu programmieren. Nichts anderes. Ob Sie es haben oder nicht, wirkt sich also nicht auf Ihre Codeleistung aus (mit Ausnahme des verfügbaren Flash-Speicherplatzes oder der Startverzögerung).

Damit ist deine Frage beantwortet:

  • Wenn Sie keinen Programmierer haben -> Bootloader behalten
  • Wenn Sie einen Programmierer haben -> bis zu Ihnen, hängt es davon ab, ob Sie in der Lage sein möchten, ohne den Programmierer zu aktualisieren oder nicht.
Ich verstehe. 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 flasht sie intern? Ich kann hier völlig abwesend sein. Außerdem habe ich einen Programmierer. Ich benutze den USBasp, also nichts Besonderes, aber immer noch perfekt funktionsfähig.
Der Bootloader wird am Einstiegspunkt der Ausführung Ihrer MCU platziert. Es läuft ganz am Anfang. Sein Zweck besteht darin, zu erkennen, ob jemand mit ihm über die serielle Schnittstelle kommunizieren möchte. Wenn nicht, ruft es Ihre Software auf. Wenn ja, verwendet es die Selbst-Flash-Programmierfunktion der MCU, um seinen Flash (außer sich selbst !!) mit den Daten neu zu programmieren, die Sie ihm über die serielle Schnittstelle geben.
@capcom: Das ist nicht nur die Hauptfunktion eines Bootloaders, es ist die EINZIGE Funktion! Wie Blup1980 sagt, wenn Sie den Bootloader für diese Funktion nicht benötigen, gibt es überhaupt keinen Grund, ihn weiterhin zu verwenden.
Super, danke. Und nur um mein Verständnis zu verdeutlichen, kann ich die Bibliotheken, die Leute für Arduinos schreiben, direkt auf meiner MCU verwenden?
@WoutervanOoijen Danke für die sehr klare Antwort.
Ja. Der einzige Unterschied besteht darin, dass Sie beim Erstellen der Anwendung der IDE mitteilen müssen, dass Sie keinen Bootloader verwenden. (Es sei denn, der Bootloader ist sehr schlau, was IIRC nicht ist.)

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

Im Allgemeinen habe ich festgestellt, dass die Beibehaltung des Arduino-Bootloaders auf meinen Atmega-Mikrocontrollern sie im Feld flexibler macht. Aber meine werden nicht für freistehende Roboter verwendet; Sie werden in Geräte- und Anlagensteuerungen verwendet, normalerweise am Ende langer RS-232-Verbindungen. Ich kann an meinem Hauptcomputer sitzen und nach Lust und Laune neue Firmware auf sie hochladen, und es fühlt sich ein bisschen an, als würde ich Firmware auf eine Marssonde hochladen. Ich würde es nicht anders wollen.