Arduino Bootloader

9

Ich bin sehr neu in der eingebetteten Welt. Ich hatte bis jetzt nur an S / W gearbeitet

Kann mir bitte jemand die Verwendung des Arduino Bootloaders erklären? Ich möchte, dass Arduino eine einfache Mathematik mit einigen zusätzlichen Komponenten ausführt, die in den Chip eingefügt werden müssen.

Benötige ich unbedingt einen Bootloader?

Johnny
quelle

Antworten:

10

Der Arduino ist im Grunde nur ein Atmel AVR-Mikrocontroller mit gerade genug Unterstützungselektronik, um ihn bedienen zu können. Der AVR verfügt über einen eingebauten Blitz, mit dem Programme bei ausgeschaltetem Gerät ferngehalten werden können. Um einen AVR-Chip direkt zu programmieren, benötigen Sie jedoch ein Tool wie den STK-500, um die Aufgabe zu erledigen. Das Arduino überwindet dies, indem es auch eine kleine USB-Schnittstelle auf der Platine und den Arduino-Bootloader-Code bereits auf dem Chip hat. Auf diese Weise kann die PC-seitige Anwendung Ihre Programme auf das Gerät übertragen und im Wesentlichen selbst flashen lassen.

Unterm Strich ist der Bootloader bereits vorhanden, wenn Sie einen Arduino erhalten, und erledigt seine Aufgabe automatisch. Sie codieren Ihr Programm auf dem PC, drücken die Upload-Taste auf der IDE und innerhalb weniger Augenblicke läuft Ihr Programm auf dem Arduino. Der Bootloader erledigt seine Arbeit völlig transparent.

fwiw, ich persönlich habe einen Arduino 2009 und einen STK-500 und kann auf AVRs auf dem Metall programmieren, habe aber keine Notwendigkeit gefunden, den Bootloader des Arduino zu umgehen.

JustJeff
quelle
Ich würde gerne mehr Informationen über die Verwendung eines Arduino zum Programmieren eines AVR sehen.
Greg
@ Greg Es gibt tatsächlich eine von Arduino unterstützte Skizze für die Duemilanove, um den Bootloader auf eine nackte Atmosphäre zu flashen328. Offensichtlich könnte diese Funktionalität erweitert werden, um jedes Programm auf eine nackte atmega328 zu flashen. Sie benötigen keinen ISP-Anschluss. Im Wesentlichen verwandeln Sie Ihr Arduino-Mikro in einen ISP.
NickHalden
5

Der Arduino benötigt einen Bootloader, um Ihre Skizzen über seriell / USB zu programmieren. Ohne sie benötigen Sie einen AVR In-System-Programmer (ISP), um den Flash-Speicher im AVR-Chip direkt zu programmieren.

Wenn Sie einen Arduino kaufen, wird der Bootloader bereits in den AVR-Chip eingebrannt. Sie müssen sich nur darum kümmern, wenn Sie Ihr eigenes Board bauen.

Dies sollte helfen: Ich verstehe das Arduino-Konzept nicht

Toby Jaffey
quelle
4

Ich werde eine etwas theoretischere Antwort geben; Die anderen Antworten sind aus praktischer Sicht recht gut. Ein Bootloader ist Code, der sich in einem speziellen Segment des Flash-Speichers befindet. Code, der sich in diesem Segment befindet, darf Anweisungen zur Selbstprogrammierung ausführen, wodurch der Flash-Speicher (dh der Benutzercode) ohne einen herkömmlichen Programmierer (z. B. In-System Programming ISP oder High-Voltage Programming HVP) wie den STK500 geändert werden kann oder AVRISP mkII.

Im Prinzip führt die UART Recieve Data Interrupt Service Routine (ISR) einen Funktionsaufruf in den Bootloader-Code durch, der das seriell gesendete Programmabbild in den Benutzerprogrammbereich im Flash-Speicher kopiert. Beim Start wird jedes Programm auf dem Chip gestartet. Wenn jedoch entsprechend geformte serielle Daten frühzeitig empfangen werden, wechselt der AVR in eine Art Selbstprogrammiermodus. Es gibt eine Logik im UART ISR, die während des Startvorgangs nur für kurze Zeit auf den Bootloader-Code zurückgreift. Die Details sind etwas komplizierter, aber das ist die Grundidee.

Das Schöne daran ist, dass Sie ein Arduino kaufen können und sonst nichts, die kostenlose integrierte Entwicklungsumgebung (IDE) herunterladen, Arduino-Skizzen (Programme) schreiben und sie einfach so über USB auf den AVR herunterladen können, nicht weniger danke auf den schicken kleinen FTDI-IC-Chip, der in das Arduino-Board integriert ist.

vicatcu
quelle