Ich verstehe das Arduino-Konzept nicht

8

Ich habe eine Weile mit der Herstellung eines Arduino zu kämpfen (es gelang mir, eine Steckbrettversion mit einem ISP- Programmiererkabel zu erstellen). Sie sagen, dass der Arduino-Bootloader so hergestellt ist, dass keine externen Schaltkreise erforderlich sind, um den ATmega8 zu programmieren . Aber als ich mir die Schaltpläne angesehen habe, ist die normale Schaltung für die serielle Verbindung erforderlich. Was macht der Bootloader dann eigentlich?

Rick_2047
quelle
1
Keine externe Schaltung ist eine absurde Behauptung. Um mit einem Computer über eine serielle Schnittstelle zu kommunizieren, benötigen Sie mindestens einen RS232-Transciever wie einen MAX232. oder wie beim Arduino können Sie TTL UART direkt mit einem USB-Schnittstellenchip wie FTDIs kommunizieren.
Vicatcu

Antworten:

12

Der Bootloader ist ein kleines Programm im AVR-Flash, das niemals überschrieben wird und beim Einschalten ausgeführt wird. Die Aufgabe des Bootloaders besteht darin, Programmdaten vom UART zu lesen und in den internen Flash zu schreiben. Ohne Bootloader können Sie Code nur über ISP laden.

Der AVR ATMega8 hat keinen Code im Flash. Code kann über die ISP-Pins (In-System-Programming) mit einem AVR-ISP-Programmierer (oder sogar einem anderen Arduino) hochgeladen werden.

Bei Arduino wird der ISP nur einmal (bei der Herstellung) verwendet, um einen kleinen Bootloader hochzuladen. Beim Einschalten wird der Bootloader ausgeführt und kommuniziert mit dem seriellen UART (TX + RX-Pins). Jetzt kann Arduino über die seriellen Pins mit dem STK500-Protokoll programmiert werden.

Da die seriellen Pins (normalerweise) mit einem FTDI USB-zu-Seriell-Chip verbunden sind, kann der Arduino auch über USB programmiert werden.

Toby Jaffey
quelle
Sie sagen also, wenn ich einen atmega8-Chip mit einem eingebrannten Bootloader habe, kann ich alle Schaltkreise für den ISP entfernen und einfach die richtigen Pins von der seriellen mit dem Arduino verbinden? Können Sie mir auch sagen, wie ich die Seriennummer mit dem atmega8 verbinden werde
Rick_2047
2
Sobald Sie den Bootloader haben, ist hier eine sehr minimale Arduino-Schaltung. Verbinden Sie Ihren PC (über einen TTL-Pegelwandler) mit den TX / RX / GND-Pins. profmason.com/wp-content/uploads/2008/09/arduinopins.jpg Weitere Informationen finden Sie in dieser Frage: chiphacker.com/questions/2512/ftdi-basic-breakout-5v
Toby Jaffey
1
Der max232 wandelt serielle RS232-Pegel (wie vom 9-poligen Anschluss eines PCs) in TTL-Pegel-Signale (5 V) um, die für die Kommunikation mit dem Arduino / AVR geeignet sind. Die max232-Schaltung kann durch einen seriellen FTDI-USB-zu-TTL-Chip ersetzt werden, um eine Verbindung zu einem PC herzustellen.
Toby Jaffey
2
Ein kleiner Hinweis hier: Der Arduino-Bootloader wartet beim Start nur sehr kurze Zeit auf der seriellen Schnittstelle auf neuen Code. Ältere Arduino-Bootloader warten einige Sekunden, bevor sie mit der Ausführung des Codes beginnen. Neuere Bootloader starten sehr schnell und müssen von der DTR-Leitung eines FT232 zurückgesetzt werden. Wenn Sie einen max232 verwenden möchten, laden Sie den älteren Bootloader hoch. In Sparkfun ( sparkfun.com/commerce/tutorial_info.php?tutorials_id=104 ) finden Sie auch einige großartige AVR-Tutorials.
Bpijls
2
Es ist der tatsächliche AVR-Objektcode. Das Arduino schlägt einige konkurrierende Plattformen (z. B. Basic Stamp), indem es kompilierten Objektcode und keinen Interpreter ausführt.
Toby Jaffey
3

Sie können auf ihnen ATmega328 Chips mit dem Boot-Loader kaufen hier .

Leon Heller
quelle
Ich habe heute gerade 4 bestellt (allerdings von der ZA-Seite) :)
Leppie
1

Sie bedeuten wahrscheinlich, dass Sie beim Kauf eines vorgefertigten, zusammengebauten Arduino Uno auch keinen Programmierer kaufen müssen. Wie bei vielen anderen Elektronik-Starterkits. Sie können die Arduino Uno-Karte mit nur einem USB-Kabel (A> B) programmieren.

Wenn Sie jedoch ein eigenes Arduino bauen möchten, benötigen Sie natürlich eine externe Schaltung (zum Beispiel einen AVR ISP-Programmierer) oder die Art von Max232 oder FTDI.

Superpelican
quelle
0

Die Idee hinter dem Arduino Bootloader ist, dass Sie keine Spezialität benötigen Hardware oder Schaltkreise , um sie neu zu programmieren, verglichen mit der anfänglichen Programmierung oder einem älteren Mikrocontroller, der häufig einen dedizierten Programmierer benötigt (wie PicKit2 für PIC-MCUs). Der Bootloader ermöglicht die Programmierung über eine grundlegende serielle Verbindung.

Zu dieser Zeit brauchten Sie natürlich die serielle Verbindung, normalerweise einen RS232-Konverter von TTL zu RS232. Nachdem die seriellen Schnittstellen auslaufen, war die Verbindung von USB zu seriell allgegenwärtig, sodass ein max232 oder ähnliches ersetzt werden konnte. Und jetzt macht die Verwendung eines USB-fähigen Atmel-Mikrocontrollers sogar das unnötig, sodass ein einzelnes IC mit minimalen passiven Teilen die Arduino-Funktionen und USB to Serial bereitstellen kann. Jetzt benötigen Sie nur noch ein USB-Kabel und einige passive, um eine Skizze hochzuladen. Die anfängliche Programmierung des Bootloaders erfordert weiterhin die herkömmliche ICSP-Programmierung.

Passant
quelle