Was benötige ich, um meinen Code auf einen Mikrocontroller zu übertragen?

Ich habe gelernt, einen Controller zu codieren, habe den Code aber nie wirklich auf das physische Gerät übertragen. Ich versuche herauszufinden, was ich bestellen muss, um mit der Entwicklung eines einfachen eingebetteten Systems zu beginnen.

Wenn ich zum Beispiel einen PIC18F1330 habe, habe ich MPLAB IDE und XC8-Compiler. Großartig, also habe ich den Code kompiliert und bin bereit, dies auf dem Controller zu platzieren. Was muss ich haben, um meinen kompilierten Code auf meinem PC auf die Steuerung zu übertragen?

Ich habe Dinge wie einen In-Circuit-Debugger und ein PIC-Kit gesehen. Ich bin an dieser Stelle einfach verloren.

Sobald ich also ein PICkit habe, erlaubt mir das PICkit, meinen PC physisch mit dem Mikrocontroller zu verbinden?
Ja, es gibt einen Anschluss am PICKit, ICD usw., den Sie für In-Circuit-Programmierung und Debugging mit Ihrem Board verbinden.

Antworten (5)

Es gibt mehrere Möglichkeiten, Ihren Code auf einen Mikrocontroller zu flashen.

Im Web findet man ziemlich viele selbstgebaute Programmierer, aber die haben meistens auch selbstgemachte Software und sind nicht (gut) in die MPLAB IDE integriert.

Die günstigste Lösung von Microchip ist ein PicKit für ~40€ welches einfach per USB an den PC angeschlossen wird. Obwohl das PicKit einige Debugging-Optionen hat, gibt es auch den leistungsfähigeren 'In Circuit Debugger' ICD für ~180€, der mehr Debugging-Funktionen hat, aber natürlich auch die Chips flashen kann.

Ich hatte immer das Gefühl, dass das PicKit für mich ausreichend ist.

Es gibt Versionen von Drittanbietern, da Microchip Firmware und Schaltpläne für das PicKit veröffentlicht, aber wenn Sie sie kaufen, stellen Sie sicher, dass Sie wirklich das bekommen, was Sie denken, was Sie bekommen. Ich habe mal ein Angebot für PicKit 3 gesehen, war mir aber nicht sicher, ob es sich nicht um ein PicKit 2 handelt.


Nur als Kommentar: Es gibt Mikrochip-MCUs, die sich selbst flashen können. Zum Beispiel haben wir die PIC18F2450/2550/4450/4550-Familie mit eingebettetem USB verwendet und einen Bootloader darauf installiert. Wenn ein Jumper geschlossen ist, wechselt die MCU beim Start in den Bootloader-Modus, und Sie können Ihre MCU mit Ihrem Code flashen. Das Zeug ist alles von Microchip erhältlich.

Um dies zu verwenden, müssen Sie einige Änderungen an Ihrem Code vornehmen. Und natürlich benötigen Sie einen normalen Programmierer, um den Bootloader anfänglich auf der MCU zu flashen. Diese Funktion macht also keinen Sinn, wenn Sie einen Programmierer haben. Aber es ist schön, wenn Sie Firmware-Updates für Ihre Kunden wünschen.

Da Sie die MPLAB-IDE mit dem XC8-C-Compiler verwenden, können Sie die Kompatibilität im Menü Configure->Select Device überprüfen (grüne Anzeige bedeutet vollständig unterstützt, gelb teilweise und rot nicht unterstützt).

Im Moment wäre die beste Wahl Pickit 3, ICD3 oder RealICE (in der Reihenfolge steigender Preise).

Hier sind die kompatiblen Programmierer, Debugger:

Sie möchten wirklich Debugging-Unterstützung sowie Programmierunterstützung haben.

Geben Sie hier die Bildbeschreibung ein

Sobald die Gerätetreiber installiert sind, können Sie sie auswählen und eine Verbindung herstellen (ein bestimmtes Gerät kann zu einem bestimmten Zeitpunkt nur als Debugger oder Programmierer installiert werden):

Geben Sie hier die Bildbeschreibung ein

Wenn Ihr Programm dann kompiliert ist (entweder in Debug- oder Release-Form), können Sie den Mikrocontroller mit den unten gezeigten Schaltflächen programmieren:

Geben Sie hier die Bildbeschreibung ein

Physisch hat das PICkit oder eine andere Debug-/Programmiereinheit einen Anschluss, den Sie mit Ihrem System verbinden. Es gibt 6 Pins, von denen 5 verwendet werden, einschließlich Strom und Masse.

Geben Sie hier die Bildbeschreibung ein

Zum Zeitpunkt des Schreibens gibt es drei Hauptwege, um eine Binärdatei auf einen Mikrocontroller zu brennen. Abhängig von einem bestimmten Mikro können 3 davon verfügbar sein. Die älteste Methode ist der gerätespezifische Programmierer/Debugger. Aktuelle für Microchip-Teile sind Pickit3/ICD3, sie sind mit allen aktuellen PIC-Mikros und einigen älteren kompatibel. Sie können damit keine Teile anderer Hersteller programmieren.

Die zweite Methode wird als Bootloader bezeichnet. Es ist ein kleines Programm, das in das Mikro eingebrannt wird, bevor Sie das Teil in Besitz nehmen. Der Bootloader ermöglicht die Programmierung über die Standardschnittstelle(n) von Micro – UART, SPI, Ethernet usw. ARM-Chips werden häufig mit einem vorinstallierten Bootloader sowie AVR geliefert. Sie benötigen keine proprietäre Programmierausrüstung, wenn ein Bootloader vorhanden ist, aber Sie können das Debuggen in einzelnen Schritten nicht einfach durchführen.

Der dritte heißt JTAG. Es ist eine halbgenerische Schnittstelle, mit der Sie viele verschiedene Teile programmieren und auch debuggen können. Sie benötigen ein Gerät namens JTAG-Dongle. Einige PIC-Teile haben JTAG. ARM-Chips haben normalerweise JTAG, und viele haben keine andere Debug-Schnittstelle.

Ein Mikrocontroller-Programmiergerät ist das, was Sie brauchen. Das ist eine Hardware, die mit Ihrem PC und dem Mikrocontroller verbunden ist, um die notwendigen Funktionen zum Laden des Programms auf den Chip auszuführen. In-Circuit-Debugger ist ein Gerät, das mehr Funktionen als ein Programmierer hat, wie z. B. das Debuggen Ihres Codes, während er auf dem Chip läuft. Sie können den uC entweder mit dem ICD oder dem PIC-Kit programmieren. Oder, wenn Sie möchten, können Sie auch eine sehr einfache Schaltung wie den JDM - Programmierer verwenden.

Beachten Sie, dass MPLAB IDE PIC Kit und ICD unterstützt. Wenn Sie jedoch einen JDM-Programmierer verwenden, müssen Sie eine andere Software wie PICPgm verwenden , um Ihren kompilierten Chip zu laden.

Allgemeines Rezept:

  1. Geben Sie Ihren Code in einem Texteditor in der Sprache Ihrer Wahl ein
  2. Übersetzen Sie diese Sprache mit einem Compiler in Maschinencode. Maschinencode ist eine Liste von Hexadezimalzahlen: einige stellen eine Anweisung dar, der Rest sind Argumente/Parameter für diese Anweisungen. Allgemein als "HEX-Datei" bezeichnet. Jedes Programmstück läuft auf diese Abfolge elementarer Anweisungen + ihrer Parameter hinaus.
  3. Übertragen Sie diesen Maschinencode in den Programmspeicher Ihres Gerätes. Dies geschieht mit einem Programmiergerät. Der Programmierer wird mit einem Treiber geliefert, der eine Software ist, die den Programmierer steuert: Geben Sie ihm eine HEX-Datei, er erledigt den Rest. Der Programmierer liest Ihre HEX-Datei und wackelt mit den Programmierleitungen des Geräts (ähnlich wie Morsecode) auf codierte Weise, um den Programmspeicher tatsächlich zu schreiben. Wenn das Programm geladen wird, wird das Gerät neu gestartet und dann beginnt das Gerät automatisch mit der Ausführung von Code ganz am Anfang des Programmspeichers. Das ist dein Code. Das ist grob gesagt, aber es ist so ziemlich das, was Sie jetzt wissen müssen.

Sie haben es fast geschafft . Sie haben die integrierte Entwicklungsumgebung, die 1 und 2 auf sehr benutzerfreundliche Weise erledigt. Es hat sogar Schnittstellen zu Programmierern, so dass Sie sich keine Gedanken darüber machen müssen, was eine HEX-Datei ist (drücken Sie "Play" und Sie sind fertig).

Sie benötigen jedoch immer noch den physischen Programmierer, um Ihr Gerät mit dem PC zu verbinden - es gibt eine Reihe von PICs. Pickit ist einer von ihnen. Wenn Sie ernsthaft mit eingebetteter Programmierung beginnen möchten, sollten Sie wahrscheinlich in einen In-Circuit-Debugger (ICD) investieren. Es ist ein Programmierer und auch etwas, mit dem Sie Variablen und Register im Mikro anzeigen oder anstupsen und sogar ein Programm nach Belieben durchlaufen und stoppen können.