Frage:
Was ist der Zweck eines Mikrocontroller-Bootloaders?
midnightBlue
2016-04-15 19:45:28 UTC
view on stackexchange narkive permalink

Nach meinem Verständnis gibt es für einen gängigen Mikrocontroller (z. B. AVR, PIC) im Allgemeinen zwei Methoden zum Programmieren seines Flash-Speichers.

  1. Verwenden eines Programmiergeräts: In-Circuit Serial Programmierung (oder eine Variante?)
  2. Eine Form eines Bootloaders, mit dem ein externes Gerät kommuniziert, wodurch der Mikrocontroller letztendlich seinen eigenen Speicher flashen kann.
  3. ol>

    Sicherlich muss es einen sehr guten Grund geben, einen Bootloader zu verwenden, sonst wäre seine derzeit weit verbreitete Verwendung sehr seltsam. Ich habe es nur noch nicht vollständig verstanden.

    Ist ein Programmierer teuer? Aber dann gibt es Arduinos (ATmega-Mikrocontroller), die als Programmierer fungieren können. Reichen die Kosten für einen zusätzlichen IC aus, um die Verwendung eines Bootloaders zu rechtfertigen? Wenn ich mich nicht irre, werden die neuesten Arduinos den FTDI-Chip komplett entfernen und ihn durch einen ATmega-Prozessor ersetzen, der die USB-zu-Seriell-Schnittstelle übernimmt. Sicherlich wäre es beispielsweise möglich, die Funktion des Programmierers auf diesem IC zu integrieren?

    Oder zum Beispiel den PIC-Mikrocontroller. Ich habe etwas gesehen, das sich JDM-Programmierer nennt. Wenn so etwas mit praktisch keinen aktiven Komponenten einen PIC programmieren kann,

    1. Warum überhaupt einen Bootloader verwenden?
    2. Was ist der Zweck des relativ viel mehr komplexes PICkit (abgesehen von Robustheit)? Debugging-Funktion?
    3. ol>
https://www.arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader Die Antwort lautet so ziemlich "Bequemlichkeit"
Hardware initialisieren oder Code von einer externen Quelle in den internen Speicher laden
Um einige der Antworten hier zu "teuer" hinzuzufügen: Für einige MCUs (AVR, STM8 / 32, ...) sind Programmierer billig.Sie können einen AVR-Programmierer für 15 USD oder weniger erwerben.Für andere MCU-Familien (z. B. Kinetis) können Programmierer jedoch mehr als 100 US-Dollar und Programmierer / Debugger, die viele ARM-Familien programmieren können, mehr als 500 US-Dollar kosten.Aber wie andere gesagt haben, geht es hauptsächlich um Bequemlichkeit, Remote-Aktualisierung und die Beseitigung externer Hardware.
Sechs antworten:
Dave Tweed
2016-04-15 20:27:49 UTC
view on stackexchange narkive permalink

Der Hauptzweck eines Bootloaders besteht darin, die Aktualisierung der Firmware über andere Schnittstellen als die Standardhardwareschnittstelle zu ermöglichen. Dies ermöglicht beispielsweise Aktualisierungen über Kommunikationskanäle, die die Anwendung anderweitig für ihre eigenen Zwecke verwendet. Dies bedeutet, dass Sie systeminterne Remote-Updates durchführen können, ohne dass ein physischer Eingriff am Remote-Standort erforderlich ist.

Sobald Sie dies haben Wenn Sie diese Fähigkeit benötigen, benötigen Sie keine zusätzliche Hardware. Dies macht sie zur Methode mit den niedrigsten wiederkehrenden Kosten. Aus diesem Grund verwenden Hobby-Systeme wie Arduino sie. Es bietet auch eine kleine Menge an Marketing-Lock-In, da Sie jetzt Ihre AVR-Chips mit dem bereits programmierten Bootloader kaufen müssen.

m4l490n
2016-04-15 21:40:29 UTC
view on stackexchange narkive permalink

Es gibt einige Szenarien, in denen ein Bootloader nicht viel Wert hinzufügt. Sie haben Recht, wenn Sie ein paar Boards haben, können Sie den Programmierer sicher anhängen und den Code erneut flashen. Wenn Sie ein Hobbyist mit ein paar Boards sind oder sogar eine kleine Produktion haben, können Sie dies auf diese Weise tun.

Die Bootloader sind in Szenarien sinnvoller, in denen das physische Anschließen eines Programmierers weniger praktisch wäre. Fertige Produkte, die beispielsweise bereits bereitgestellt wurden, sind eines dieser Szenarien.

Wenn Sie ein elektronisches Produkt haben, lassen Sie im Allgemeinen keinen "Debug" - oder "Programmier" -Port offen. Sie haben nur ein Ethernet- oder serielles oder RS485- oder CAN- oder Wireless-Gerät in Ihrem Produkt.

Was ist auch, wenn Sie bereits mehrere zehn oder vielleicht Hunderte davon verkauft / bereitgestellt haben und ein Firmware-Update haben? ?

Anstatt die Gehäuse einzeln zu öffnen, den Programmierer anzubringen, zu programmieren, das Produktgehäuse zu schließen usw., können Sie es einfach über eine der vorhandenen Schnittstellen Ihres aktuellen Produkts programmieren.

Es ist sogar noch besser, wenn Sie Geräte mit beispielsweise Ethernet oder einer anderen Art von WLAN "verbunden" haben. Wenn Sie ein drahtloses Modul in ein Produkt einbauen, können Sie diese drahtlose Kommunikation mit einem Bootloader verwenden, um den Code zu aktualisieren. Auf diese Weise können Sie mehrere Geräte gleichzeitig aktualisieren, ohne sie zu berühren.

Und das wird zu einer Traumfunktion, wenn Ihre Geräte mit dem Internet verbunden sind. Auf diese Weise können Sie die Firmware von allem mit nur einem Klick aktualisieren, sobald Ihr Telefon die Updates erhält.

Für einen Bastler ist es vielleicht nicht sinnvoll, einen Bootloader zu verwenden, aber aus geschäftlicher Sicht, wenn Sie tatsächlich Geräte verkaufen, ist es sehr sinnvoll, da dies Zeit spart, den Prozess wesentlich komfortabler macht und wenn Ihre Benutzer dies tun Kontakt mit Ihrem Gerät Sie müssen ihnen keine Programmierer nur für Firmware-Updates verkaufen (oder sie dazu bringen, die Programmierer anderweitig zu kaufen). Und was ist, wenn Ihre Geräte funktional gleich sind, aber unterschiedliche Mikrocontroller haben? Sie müssten bestimmen, wer was hat, um den richtigen Programmierer zu senden oder zu verkaufen. Es wird zu einem Albtraum!

Stattdessen stecken Sie einfach einen USB-Anschluss daran und alles wird dem Benutzer verborgen. Jeder weiß, wie man einen USB-Anschluss an den PC anschließt, eine Datei darauf kopiert und an ein anderes Gerät anschließt, aber kein normaler Benutzer weiß, was zum Teufel ein P&E-Debugger, ein PICKit oder ein Segger J-Link ist.

Entschuldigung, wenn dies etwas verwirrend ist, Englisch ist nicht meine Sprache und vielleicht ist die Redaktion ein Chaos, aber ich hoffe, Sie haben die Idee.

Prost !!

Gute Antwort, vielleicht etwas ausführlich.Ihr Englisch ist in Ordnung (zumindest aus meiner Sicht als Nicht-Muttersprachler).
Englisch ist insofern seltsam, als es als Standardsprache für den globalen Handel wahrscheinlich mehr Nicht-Muttersprachler als Muttersprachler gibt."Richtiges" Englisch wird also umso schwieriger zu definieren.Als Muttersprachler aus Kansas City, USA, hatte ich keine Probleme, Sie zu verstehen.
dnozay
2016-04-15 20:36:06 UTC
view on stackexchange narkive permalink

Der Hauptzweck eines Bootloaders ist:

  • Programm aus Speicher / Netzwerk abrufen und laden.

Es kann eine sehr begrenzte Anzahl von Programmen geben Schnelle Speicherung in der Nähe der Verarbeitungseinheit, und das Programm, das Sie ausführen möchten, kann von Karte zu Karte unterschiedlich sein, oder Sie möchten das Programm auf Ihrer Karte ändern. Der Bootloader ist ein Programm mit gemeinsamem Nenner, das weiß, wie Sie Ihre benutzerdefinierte Software von ihrem Speicherort laden und an die Verarbeitungseinheit weiterleiten.

Erweiterte Bootloader können Folgendes tun:

  • Selbsttests
  • Netzwerkstart
  • Laden Sie zusätzliche Firmware
  • ...
Das OP fragt speziell nach den Bootloadern in Flash-basierten Mikrocontrollern.Diese Antwort ist zwar allgemeiner für Bootloader relevant, aber etwas abseits des Themas.
Jan Dorniak
2016-04-16 22:29:15 UTC
view on stackexchange narkive permalink

Abgesehen von all den anderen guten Antworten gibt es einen weiteren Grund, zumindest für kommerzielle Produkte: Nach der Produktionsprogrammierung haben die meisten Chips eine Option festgelegt, um sie vor dem Lesen der Daten zu schützen.

Abhängig von der MCU Diese Ausleseschutzoption kann die Hardwareprogrammierverbindung (wie SWD oder JTAG) tatsächlich deaktivieren. Wenn Sie den Bootloader nicht ausgeführt haben, können Sie das Gerät nicht neu programmieren.

Und dann erhalten Sie 10.000 Geräte mit fehlerhafter Software auf dem Markt. Dies führt zu einem großen Verlust über einen Zeitraum von einigen Monaten Codierung.

magu_
2016-04-16 03:03:29 UTC
view on stackexchange narkive permalink

Nur um auch die Perspektive eines Bastlers zu erläutern:

Es erleichtert das Leben erheblich, wenn keine zusätzliche Hardware oder viel Wissen auf niedrigem Niveau benötigt wird. Ein extremes Beispiel, das ich verwendet habe, war das Teilchenphoton (keine Zugehörigkeit), das über die Wolke geblitzt werden kann. Die einzigen Dinge, die zum Flashen dieses Chips erforderlich sind, sind:

  • Stromversorgung
  • WLAN
  • Internetverbindung
  • Ein anderer Computer zu Schreiben Sie die Software

Dies macht den Prozess ziemlich kostengünstig und ist aus nicht-pro-Sicht recht einfach.

old_timer
2016-04-16 06:48:35 UTC
view on stackexchange narkive permalink

Es sind nicht die Kosten des Programmierers. Die Verkäufe kommen nicht von Hobbyisten; Es ist ein Faktor, aber nicht der Faktor. Leute, die Volumen kaufen, können sich Programmierer sicherlich leisten. Sie haben einige Möglichkeiten:

  1. Lassen Sie die Teile entweder vom Teilelieferanten oder einem Zwischenhändler oder Ihrem Fertigungshaus vorprogrammieren und dann auf die Platine legen.

  2. Eine Art Schaltungsprogrammierung nach dem Platzieren auf der Platine

  3. ol>

    Innerhalb der zweiten Kategorie haben Sie die Lösungen für harte Logik (die ) SPI oder SPI-artige Sache auf AVR-Chips) und die Soft Solutions (ein Bootloader, ein Programm, das in dem Teil ausgeführt wird, das das Teil verwendet). Einige haben beides.

    Die schwierige Lösung, die Sie finden müssen, wenn Sie das Design vermasseln, müssen Sie es früh genug erkennen, oder Ihr Produkt besteht aus einer Reihe nutzloser Teile, die Sie entsorgen müssen. Sie können Softwarelösungen sogar bis nach Silizium ändern. Sie können sogar eine Bestandsaufnahme durchführen und diese durchlaufen und neu programmieren. Es gibt also diesen Luxus, wenn ein Fehler in Ihrem Produkt einfacher zu beheben und / oder zu erstellen ist. Die weiche Lösung kann dem Benutzer auch eine größere Vielfalt von Optionen ermöglichen. SPI UND I²C UND USB UND seriell UND welche Hardwarelösung auch immer. In einigen Fällen kann der Benutzer den Bootloader aus eigenen Gründen durch einen eigenen ersetzen.

    Nicht jeder Mikrocontroller kann über eine Software verfügen, die seinen eigenen Flash programmieren kann, aber für jeden, den der Benutzer selbst erstellen kann Eigener Bootloader unabhängig vom gelieferten Chiphersteller, wenn es einen von einem Chiphersteller gelieferten gibt.

    Mit dem ARM Cortex-M und SWD sehe ich Dinge ändern sich; Einige Chips sind nur SWD-Chips und keine anderen ab Werk. Ich habe gerade einen Atmel SAM D21 bekommen; Sie verfügen nicht mehr über den SAM-BA -Bootloader und bieten eine Quelle, sodass Sie zu Beginn des Benutzer-Flashs einen eigenen hinzufügen können, sowie einige Register, um ihn zu schützen. Das Löschen ist jedoch trivial. So viel dazu; Sie können auch einfach Ihre eigene erstellen oder SWD verwenden.

    Schauen Sie sich die Arduino / AVR-Welt an, die Hobbyisten. Sie haben einen eigenen Bootloader und das ist die primäre Schnittstelle, da sie kostenlos ist. Sie können einen ISP-Programmierer für ein paar (oder ein paar Dutzend) Dollar bekommen. Beachten Sie jedoch, dass es eine Reihe anderer AVR-Karten gibt, die USB-basierte Protokolle anstelle der bis dahin beliebten Bootloader verwenden. Einige dieser USB-Protokolle werden herstellerübergreifend verwendet.

    Wenn Ihre Kunden dies wünschen und / oder Ihre Marketingabteilung es letztendlich verwenden kann, um unser Produkt von ihrem zu unterscheiden, ist dies nicht der Fall. t Reduzieren Sie die Kosten des Produkts oder den Gewinn. Warum nicht? Win-Win.

    Auf diese Frage gibt es weder eine noch eine richtige Antwort. es ist alles meinungsbasiert. Sie können sich an jeden der Chiphersteller wenden und ihn fragen, aber die antwortenden Personen werden ihre Meinung äußern. Sie kennen die Personen, die diese Funktion hinzugefügt oder beibehalten haben, wahrscheinlich nicht einmal oder haben noch nie mit ihnen gesprochen. Auf diese Frage gibt es keine Antwort.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...