Ich kann Programme für einen Arduino schreiben, und alles, was ich tue, ist, ihn anzuschließen und auf "Hochladen" zu klicken. Mein kompilierter Code gelangt in den Programmspeicher des ATMega. Einfach richtig?
Nun, ich würde gerne wissen, was genau im Allgemeinen passiert. Der Mikrocontroller hat etwas Speicher, also gibt es eine Methode, Rohdaten von einem USB-Kabel zu nehmen und in den Mikrocontroller zu schreiben, als wäre es ein Flash-Laufwerk oder so etwas. Ich weiß jedoch zufällig, dass dies nicht möglich ist, es sei denn, ein spezielles Bootloader-Programm ist bereits auf dem Mikrocontroller vorhanden.
Also jetzt bin ich verwirrt. Wie kann ich Programme auf ein Arduino hochladen, wenn es keinen Bootloader hat? Wie programmiere ich andere Mikrocontroller (z. B. einen ARM) ohne die benutzerfreundliche Oberfläche von Arduino?
Bonusfrage: Beim Lesen (und Nichtverstehen) einiger Webseiten habe ich herausgefunden, dass ARM über JTAG programmiert wird. Was macht das genau? Das JTAG-Modul sendet Daten in den ARM, aber welche Daten sendet es genau? Wie kann der ARM neuen Code akzeptieren, ohne dass bereits ein Programm auf dem ARM läuft, das die JTAG-Daten interpretiert und in den richtigen Speicher schreibt?
Die ATmega µC-Serie verfügt über verschiedene Möglichkeiten, sie zu programmieren:
JTAG hingegen ist ein "Standard"-Protokoll und eine Schnittstellendefinition, die mit einer großen Anzahl von Chips verwendet werden kann. Die ursprüngliche Absicht war, die Flipflops, die den internen Zustand eines Geräts darstellen, von außen zu füllen. Es ist eine Testschnittstelle. Heutzutage kann und wird es auch für die Flash-Programmierung verwendet. Die Programmiersoftware muss alles wissen, wie der jeweilige Chip zu programmieren ist, dafür gibt es keinen Standard.
Abgesehen von der Selbstprogrammierung sind alle diese Programmiermethoden in den Chips fest verdrahtet. Die frühesten Versionen von JTAG waren nichts weiter als ein 1000-Stufen-Schieberegister.
Ignacio Vazquez-Abrams
Mahkoe
Analogsystemerf
Benutzer253751