Forum: Mikrocontroller und Digitale Elektronik Frage: Erweiterter Artikel über Bootloader sinnvoll?


von Klaus S. (kseege)


Lesenswert?

Nach meiner persönlichen Erfahrung ist das Wissen der meisten Anfänger 
über Bootloader sehr rudimentär und ich kenne keine Webseite, auf der 
dieses Wissen vermittelt wird. Gerade weil durch die Arduinos auch sehr 
viel mit Bootloadern auf uCs gearbeitet wird, fände ich es sinnvoll, auf 
eine grundlegende Beschreibung hinweisen zu können. 
(Einzelbeschreibungen finden sich zu Hunderten, das ist für Anfänger 
aber eher verwirrend.) Auch der Artikel hier auf mc.net geht nach 
wenigen einführenden Worten schnell auf die Erstellung eines solchen 
Bootloaders ein. Der Anfänger braucht aber erstmal eine Erläuterung, wie 
sowas überhaupt funktioniert.

Nun steht in der Anleitung zu den Artikeln, daß grundlegende 
Beschreibungen eher in der Wikipedia platziert werden sollten. Da muß 
ich sagen, daß ich mich dafür (noch?) nicht qualifiziert fühle. In 
Wikipedia umfaßt der Artikel über Bootloader genau 3 Zeilen, die uCs 
betreffen. Da sollte jemand Schlaueres ran, der auch den professionellen 
Bereich überblickt. Ich setze zwar uCs professionell ein, baue aber 
Sondermaschinen in Einzelanfertigung, das ist dem Bastlerbereich viel 
näher als der professionellen Entwicklung (außerdem bin ich bekennender 
Minimalist :-).

Insofern fände ich es wissensfördernd, wenn wir hier auf mc.net mit 
einer einfachen Beschreibung für Anfänger beginnen könnten. Umziehen auf 
Wikipedia wäre sinnvoll, wenn auch genügend Wissen zusammengekommen ist.

Mich interessiert, wie Ihr darüber denkt, ob es sowas schon gibt und und 
ich es nur übersehen habe oder ob meine Vorstellung aus anderen Gründen 
galoppierender Schwachsinn ist.

Gruß
Klaus (der soundsovielste)

von STK500-Besitzer (Gast)


Lesenswert?

Einfach mal machen.
Dann kann man drüber diskuztieren und ggf. ändern.

von Pandur S. (jetztnicht)


Lesenswert?

Ich denk auch : eine gute Idee, mach mal.

von jo mei (Gast)


Lesenswert?

Pandur S. schrieb:
> eine gute Idee, mach mal.

Nun will aber Klaus nicht machen, sondern machen lassen.
Ihm reichen ja die Lorbeeren es "erfunden" zu haben.

von Stefan F. (Gast)


Lesenswert?

Deine Idee wurde wohl von Beitrag "USB to TTL mit CH340" 
ausgelöst, wo du dich ja auch rege beteiligt hast.

Es gibt nicht den einen einzig wahren Bootloader und auch keine 
Standard-Methode, wie er zu funktionieren hat. Deswegen halte ich es 
nicht für Sinnvoll, einen allgemeinen Artikel zum Thema zu schreiben.

Der Arduino Bootloader ist bereits gut dokumentiert:

http://arduino-basics.com/arduino-mobil/standalone/bootloader/#

Auch ST hat seine Bootloader dokumentiert:

https://www.st.com/resource/en/application_note/cd00167594-stm32-microcontroller-system-memory-boot-mode-stmicroelectronics.pdf

Und von dem uralten STM32duino Bootloader (der eigentlich ein Maple 
Bootloader ist) halte dich besser fern. Denn er wird seit vielen Jahren 
nicht mehr gepflegt.

Fragen zu weiteren Bootloadern richtest du am besten an den jeweiligen 
Entwickler. Die kann nämlich jeder so programmieren, wie er es gerne 
möchte.

Klaus S. schrieb:
> das ist für Anfänger aber eher verwirrend.

Ganz Recht, deswegen empfehle ich keinem Anfänger, sich mit Bootloadern 
zu befassen. Das ist schlicht kein Anfänger-Thema, so wie es auch keine 
Anfänger-Anleitungen für Herz-Operationen gibt.

Boards wo schon einer drauf ist kann man ja gerne damit benutzen - 
sofern es klappt. Ansonsten sind in der Regel spezifische USB 
Programmieradapter angesagt.

Klaus S. schrieb:
> Umziehen auf Wikipedia wäre sinnvoll, wenn auch
> genügend Wissen zusammengekommen ist.

Es gibt dort bereits entsprechende Artikel:
https://de.wikipedia.org/wiki/Bootloader
https://en.wikipedia.org/wiki/Bootloader

Die enthalten alle allgemein gültigen Aussagen, die auch auf 
Mikrocontroller zutreffen. Alles was über die allgemeinen Aussagen 
hinaus ginge, wäre dann ebenso spezifisch, wie das was du dort bereits 
vorfindest. Wenn du da jetzt noch alle Varianten von µC Bootloadern 
unterbringst, hast du einen Museumsreifen Artikel, der in der Form jeden 
Anfänger wieder überfordern wird.

von Rudolph R. (rudolph)


Lesenswert?

Klaus S. schrieb:
> Gerade weil durch die Arduinos auch sehr
> viel mit Bootloadern auf uCs gearbeitet wird, fände ich es sinnvoll, auf
> eine grundlegende Beschreibung hinweisen zu können.

Was nützt jemanden der Bootloader benutzt das Wissen darüber was ein 
Bootloader eigentlich ist und wie der genau funktioniert?

Um den zu benutzen muss man nicht mal wissen, dass da ein Bootloader im 
Spiel ist wenn das Programm nach Druck auf den "Hochladen" Button auf 
der angeschlossenen Platine landet.

Also ich bin nicht dafür irgendwas "geheim" zu halten, ich finde nur 
Dein Argument warum es mehr Erklärungsbedarf gibt nicht gut.

von jo mei (Gast)


Lesenswert?

Rudolph R. schrieb:
> ich finde nur
> Dein Argument warum es mehr Erklärungsbedarf gibt nicht gut.

Naja, aber die Idee irgendwas zu erfinden und dann die Anderen
machen zu lassen ist doch eine gute, oder?

von Rudolph R. (rudolph)


Lesenswert?

jo mei schrieb:
> Rudolph R. schrieb:
>> ich finde nur
>> Dein Argument warum es mehr Erklärungsbedarf gibt nicht gut.
>
> Naja, aber die Idee irgendwas zu erfinden und dann die Anderen
> machen zu lassen ist doch eine gute, oder?

Darum ging es doch gar nicht.
Mehr Informationen zu Bootloadern schaden bestimmt nicht, da habe ich 
ganz sicher nichts gegen einzuwenden.

Wie viele Arduino User stehen vor der Notwendigkeit sich einen eigenen 
Bootloader zu schreiben?
Quasi keiner? Dann sind Arduino User auch kein gutes Argument für mehr 
Lesestoff zu Bootloadern.

Wegfahrsperren nutzt auch quasi jeder Autofahrer, aber kein Autofahrer 
muss wissen wie die genau funktionieren.

von René F. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Und von dem uralten STM32duino Bootloader (der eigentlich ein Maple
> Bootloader ist) halte dich besser fern. Denn er wird seit vielen Jahren
> nicht mehr gepflegt.

Ist das tatsächlich relevant, wenn er funktioniert? Wir haben Produkte 
auf Motorola 68000 Basis, deren Firmware immer noch aktiv 
weiterentwickelt wird. Am Bootloader hat sich seit Ende der 90er nichts 
mehr getan. Bloß wird das UART nicht mehr von einer RS232 Schnittstelle 
bedient, sondern von einem FTDI.

von Stefan F. (Gast)


Lesenswert?

René F. schrieb:
> Ist das tatsächlich relevant, wenn er funktioniert?

Ja, denn auch die dazu nötige PC Software wird schon lange nicht mehr 
weiter entwickelt. Schon seit Windows 8 bekommt man den dazu nötigen 
Treiber nur noch mit Tricks installiert. Bald geht es womöglich gar 
nicht mehr.

von W.S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ja, denn auch die dazu nötige PC Software wird schon lange nicht mehr
> weiter entwickelt. Schon seit Windows 8 bekommt man den dazu nötigen
> Treiber nur noch mit Tricks installiert.

Nun ja, wenn die Schnittstelle so eines Bootladers vernünftig ist und 
obendrein auch noch ausreichend dokumentiert, dann dürfte es ein 
Leichtes sein, dafür ein neueres Programm für den PC zu schreiben. Und 
vernünftig heißt hier, daß dafür kein spezieller Treiber auf dem PC 
nötig ist, sondern einer aus dem Standard-Repertoire des OS verwendet 
wird.

W.S.

von Martin (Gast)


Lesenswert?

René F. schrieb:

> Ist das tatsächlich relevant, wenn er funktioniert?

Du darfst nicht so komplizierte Fragen stellen. Der weiß/kann doch 
nichts.

von Stefan F. (Gast)


Lesenswert?

W.S. schrieb:
> Nun ja, wenn die Schnittstelle so eines Bootladers vernünftig ist und
> obendrein auch noch ausreichend dokumentiert, dann dürfte es ein
> Leichtes sein, dafür ein neueres Programm für den PC zu schreiben. Und
> vernünftig heißt hier, daß dafür kein spezieller Treiber auf dem PC
> nötig ist, sondern einer aus dem Standard-Repertoire des OS verwendet
> wird.

Das ist gar nicht nötig, denn die neueren STM32 Modelle enthalten 
bereits alle ab Werk einen Bootloader, der mehrere Schnittstellen (auch 
USB) unterstützt und sowohl von der Arduino IDE als auch von den Cube 
Programmen verwendet wird. Der Maple Bootloader ist schlicht überflüssig 
geworden.

von Klaus S. (kseege)


Lesenswert?

Vielleicht sollte ich noch mal ein paar Erläuterungen nachlegen.

1.) Warum mir Wikipedia nicht ausreicht, meine ich dargelegt zu haben. 
Die lange Liste von Bootmanagern besteht hauptsächlich aus 
PartitionManagern für PC und meine beiden langjährigen Favoriten Ranish 
und Xfdisk sind nicht mal erwähnt.

2.) Wenn ich von Anfängern spreche, dann meine ich nicht die blutigen 
Anfänger, denen man nichts zumuten sollte (wie Stefan richtig erwähnt), 
sondern welche wie Rudi und mich, die ihre Grütze im Kopf einzusetzen 
wissen und lediglich auf der Suche nach konzentrierten und guten 
Informationen sind. Und da bin ich eben ganz anderer Ansicht als Stefan 
(den ich ansonsten absolut schätze und von dem ich viel gelernt habe).

Für den jüngeren Teil der Menschheit reicht es vielleicht aus, den 
passenden Knopf zu drücken, um die Automatik zu starten. Für die sind 
diese vielen Anleitungen im Internet. Ich dagegen möchte gern verstehen, 
was ich da treibe (ich weiß, daß das eine persönliche Marotte ist) und 
bin deshalb immer auf der Suche nach Informationen, die nicht nur den 
momentanen Arbeitsbereich abdecken, sondern auch ein wenig das Umfeld 
beleuchten. Um ein Beispiel zu geben: Wenn ich in der Arduino-IDE den 
Programmiermodus auswähle, wüßte ich gerne, worin der Unterschied von 
"ArduinoISP", "ArduinoISP mkII" und "Arduino as ISP" besteht (fyi: ich 
weiß ihn inzwischen). Einfach nur den richtigen Button genannt zu 
bekommen ist mir kulturell zu unterbelichtet ;-). Und das, was ich da 
gelernt habe, würde ich gern weitergeben.

Aus meiner Sicht ist die Bootloaderei auch nicht mit einer Herzoperation 
gleichzusetzen, sondern mit einem einfachen Pflaster. Da gibts die 
desinfizierenden und wasserdicht abdichtenden sowie die blutstillenden 
mit Eisensalzen, die die Gerinnung hemmen. Das ist ganz einfaches 
medizinisches Grundwissen, das sogar manche Apothekenmitarbeiter nicht 
haben (leider selbst erlebt). Und genau dieses Wissen um die 
Randbedingungen möchte ich aufschreiben. Das liegt dann wohl eher in der 
Mitte zwischen den ganz grundlegenden Weisheiten von Wikipedia und der 
Anleitung, selber einen Bootloader zu schreiben.

3.) Die Hauptfrage geht eigentlich an die Moderatoren, die ich noch 
nicht richtig kenne (Lothar, Andreas ?), da ich die Regeln eventuell ein 
bißchen strecke, durch meine Anmeldung aber wohl versprochen habe, mich 
an sie zu halten. Da ich ein bekennendes Weichei bin, möchte ich nicht 
"einfach so machen". Regeln sind angewandte Zivilisation, und wie sich 
die "Freiheit" gerade ausdrückt, kann man bei Adolf Putin bewundern.

Gruß Klaus (der soundsovielte)

von Björn W. (bwieck)


Lesenswert?

Klaus S. schrieb:

> Aus meiner Sicht ist die Bootloaderei auch nicht mit einer Herzoperation
> gleichzusetzen, sondern mit einem einfachen Pflaster. Da gibts die
> desinfizierenden und wasserdicht abdichtenden sowie die blutstillenden
> mit Eisensalzen, die die Gerinnung hemmen.

Deine Sicht ist falsch. Der Bootloader ist ein Stück Software das 
zuallererst gestartet wird und auf ein bestimmtes Ereignis in einer 
bestimmten Zeit wartet. Wenn dieses nicht zutrifft wird mit dem 
eigentlichen Programm losgelegt.
Aber falls die Bedingung für den Bootloader doch zutrifft gibt es die 
Möglichkeit das folgende Programm durch eine andere Version zu ersetzen.
In deiner Sichtweise: Den toten komplett verbrennen und gegen einen 
neuen austauschen. Also nix mit Pflaster oder so.

von MagIO (Gast)


Lesenswert?

Klaus S. schrieb:
> sowie die blutstillenden
> mit Eisensalzen, die die Gerinnung hemmen.

Nur zur Richtigstellung: Blut stillen ist das Gegenteil von Gerinnung 
hemmen.

von Klaus S. (kseege)


Lesenswert?

MagIO schrieb:
> Nur zur Richtigstellung: Blut stillen ist das Gegenteil von Gerinnung
> hemmen.
Was für ein dummer Fehler meinerseits, bitte um Absolution.

Björn W. schrieb:
> Also nix mit Pflaster oder so.
Das war auch eigentlich auf Stefans Bemerkung von der Herzoperation 
gemünzt. Aber Deine Version mit dem Totschlag gefällt mir auch :-)

von Klaus S. (kseege)


Lesenswert?

Björn W. schrieb:
> Deine Sicht ist falsch. Der Bootloader ist ein Stück Software das
> zuallererst gestartet wird und auf ein bestimmtes Ereignis in einer
> bestimmten Zeit wartet. Wenn dieses nicht zutrifft wird mit dem
> eigentlichen Programm losgelegt.

Deine Sicht ist leider auch falsch :-)
Es gibt Bootloader, die warten, bis der Strom weg ist (mein STM32F103), 
manche warten eine voreingestellte Zeit (mein Arduino Mini) und der von 
mir jahrelang heißgeliebte XFDISK kann je nach Einstellung entweder ewig 
oder eine (fast) beliebige Zahl von Sekunden warten. Das mögliche 
Maximum hab ich grad nicht parat.
Und zur Vermeidung solcher Desinformation fände ich einen Artikel 
darüber eben sinnvoll. Danke für die kostenlose Lieferung eines 
Arguments ;-)

Gruß Klaus (der soundsovielte)

von MaWin (Gast)


Lesenswert?

Mach das ja richtig!

von Axel S. (a-za-z0-9)


Lesenswert?

Klaus S. schrieb:
> Björn W. schrieb:
>> Also nix mit Pflaster oder so.
> Das war auch eigentlich auf Stefans Bemerkung von der Herzoperation
> gemünzt. Aber Deine Version mit dem Totschlag gefällt mir auch :-)

Ein Totschlag-Argument?


Klaus S. schrieb:
> Es gibt Bootloader, die warten, bis der Strom weg ist (mein STM32F103),
> manche warten eine voreingestellte Zeit (mein Arduino Mini) und der von
> mir jahrelang heißgeliebte XFDISK kann je nach Einstellung entweder ewig
> oder eine (fast) beliebige Zahl von Sekunden warten

Ja und? Das sind doch Sonderlocken. Man kann auch einen Bootloader 
schreiben, der Audiosignale auswertet (gibt es AFAIK schon), und der das 
System erst auf Zuruf startet. Das ist dann eine Eigenart dieses 
Bootloaders und hoffentlich dokumentiert. Aber es braucht nicht in einem 
Artikel über Bootloader im Allgemeinen zu stehen.

Da muß eigentlich nur stehen, was da eigentlich immer steht: "Ein 
Bootloader ist das Programm, das als erstes nach einen Reset losläuft 
(Boot) und schaut, ob es ein Firmware-Update auf irgendeiner 
Schnittstelle angeboten bekommt (Loader)". Die Details (Schnittstelle, 
Erkennung des "Angebots", Ziel der Firmware etc.) sind 
plattformabhängig.

Das ist halt das Problem mit solchen allgemeinen Begriffen wie 
"Bootloader". Vergleichbar vielleicht mit "Frühstück". Da findest du 
auch keine allgemeine Beschreibung, die über Trivialitäten hinausgeht.

von Cyblord -. (cyblord)


Lesenswert?

Rudolph R. schrieb:
> Wegfahrsperren nutzt auch quasi jeder Autofahrer, aber kein Autofahrer
> muss wissen wie die genau funktionieren.

Nur schreib das mal im Autoschrauber-Forum. Das ist hier ein µC Forum 
und keines über die Bedienung von Waschmaschinen.
Und trotzdem soll es hier Leute geben die nicht Wissen müssen oder 
sollten wie ein BL funktioniert? Schande über solche Ansichten zu Wissen 
und Kompetenz.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Klaus S. schrieb:
> Aus meiner Sicht ist die Bootloaderei auch nicht mit einer Herzoperation
> gleichzusetzen, sondern...

Nun, im Prinzip hast du damit Recht. Ein werksseitig in ein Stück 
Silizium gesetzter Bootlader ist ein Stück Abstraktion: Er setzt die 
Algorithmen zum Programmieren des Speichers (und ggf. diverser 
Config-Register) des betreffenden Chips in irgendeine etwas 
generalisiertere Schnittstelle/Protokoll um, so daß derjenige, der das 
zugehörige Brennprogramm für den PC schreibt, sich nicht um die 
chipspezifischen Details kümmern muß.

Er muß sich aber um die herstellerspezifische Schnittstelle/Protokoll 
zwischen dem Chip und dem PC kümmern. Aber das ist das weitaus kleinere 
Problem, sofern diese Schnittstelle gut genug dokumentiert ist.

Ein ganz anderes Ding sind Bootlader, die nicht vom Hersteller 
vorgesehen sind, von anderen Leuten (und zu anderen Zwecken) geschrieben 
sind und deshalb im Nutzbereich des internen Speichers liegen. So etwas 
denkt man sich zumeist nur dann aus, wenn der betreffende Chip keinen 
herstellerseitigen Bootlader hat oder wenn man für eine bestimmte 
Firmware nur eigene Updates zulassen will oder wenn die Leute, die ein 
Update machen wollen/müssen, eigentlich davon nix verstehen und auch 
kein Programmiergeschirre haben.

W.S.

von Klaus S. (kseege)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn du da jetzt noch alle Varianten von µC Bootloadern
> unterbringst, hast du einen Museumsreifen Artikel, der in der Form jeden
> Anfänger wieder überfordern wird.

Jetzt wo ich wirklich dran schreibe, merke ich erst, wieviel schwerer es 
ist, sich schriftlich auszudrücken. Ich habe es gefühlt schon tausendmal 
erklärt, im Gespräch macht die Interaktion des Gegenübers es viel 
leichter.

Vielleicht sollte ich die Anregung von "Jo mei (Gast)" beherzigen, und 
es es bei dem Ruhm der "Erfindung" (welcher Erfindung überhaupt?) 
belassen ;-)))

Gruß Klaus

Danke an alle Beteiligten, Eure Beiträge helfen mir, das Wichtige vom 
Unwichtigen zu unterscheiden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.