{"id":2324,"date":"2026-06-04T15:47:22","date_gmt":"2026-06-04T15:47:22","guid":{"rendered":"https:\/\/www.pickplace.de\/?post_type=glossary&#038;p=2324"},"modified":"2026-06-04T15:47:23","modified_gmt":"2026-06-04T15:47:23","slug":"bootloader","status":"publish","type":"glossary","link":"https:\/\/www.pickplace.de\/de\/glossar\/bootloader\/","title":{"rendered":"Bootloader"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Ein Bootloader ist ein Programmteil, der nach dem Start eines Mikrocontrollers ausgef&#xFC;hrt werden kann und die Firmware einer Anwendung l&#xE4;dt, startet oder aktualisiert. Bei Mikrocontrollern liegt er meist in einem eigenen Bereich des Flash-Speichers. Nach einem Reset entscheidet der Bootloader, ob eine vorhandene Anwendung gestartet wird oder ob ein Update-Vorgang beginnen soll.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Inhalt<\/h2><nav><ul><li class=\"\"><a href=\"#was-bedeutet-ist-ein-bootloader\">Was bedeutet ist ein Bootloader?<\/a><\/li><li class=\"\"><a href=\"#wie-funktioniert-ein-bootloader\">Wie funktioniert ein Bootloader?<\/a><\/li><li class=\"\"><a href=\"#wo-wird-ein-bootloader-verwendet\">Wo wird ein Bootloader verwendet?<\/a><\/li><li class=\"\"><a href=\"#eigenschaften\">Eigenschaften<\/a><\/li><li class=\"\"><a href=\"#abgrenzung-zu-verwandten-begriffen\">Abgrenzung zu verwandten Begriffen<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 id=\"was-bedeutet-ist-ein-bootloader\" class=\"wp-block-heading\">Was bedeutet ist ein Bootloader?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bootloader ist Code, der vor der eigentlichen Anwendungsfirmware ausgef&#xFC;hrt wird. Seine Aufgabe besteht darin, eine Anwendung im Programmspeicher zu verwalten. Dazu kann er neue Firmware empfangen, den Flash-Speicher beschreiben, eine vorhandene Anwendung pr&#xFC;fen und anschlie&#xDF;end in diese Anwendung springen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Arm-Cortex-M-Systemen folgt die Ausf&#xFC;hrung typischerweise einer festen Startlogik. Nach der Boot-ROM-Phase wird Code an einer definierten Adresse im Programmspeicher ausgef&#xFC;hrt. Liegt der Bootloader an der Flash-Basisadresse, wird er nach dem Reset zuerst gestartet. Die Anwendungsfirmware liegt dann an einer anderen Flash-Adresse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bootloader und Anwendung werden meist als getrennte Firmware-Projekte gebaut. Dadurch entstehen zwei ausf&#xFC;hrbare Images mit eigenen Linker-Einstellungen. Die Anwendung muss nicht zwingend wissen, dass ein Bootloader vorhanden ist.<\/p>\n\n\n\n<h2 id=\"wie-funktioniert-ein-bootloader\" class=\"wp-block-heading\">Wie funktioniert ein Bootloader?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bootloader durchl&#xE4;uft nach dem Start meist mehrere Pr&#xFC;fschritte. Zuerst stellt er fest, ob ein Update angefordert wurde. Eine solche Bedingung kann &#xFC;ber einen GPIO-Pegel, einen Eintrag im nichtfl&#xFC;chtigen Speicher, eine RAM-Variable oder einen anderen anwendungsspezifischen Mechanismus abgebildet werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn kein Update angefordert wurde, pr&#xFC;ft der Bootloader h&#xE4;ufig, ob die vorhandene Anwendung ausf&#xFC;hrbar ist. Daf&#xFC;r kann eine CRC &#xFC;ber den Speicherbereich der Anwendung verwendet werden. Die berechnete Pr&#xFC;fsumme wird mit einem zuvor abgelegten Wert verglichen. Schl&#xE4;gt diese Pr&#xFC;fung fehl, sollte der Bootloader die Anwendung nicht starten, da der Flash-Inhalt unvollst&#xE4;ndig oder besch&#xE4;digt sein kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ein Update ausgef&uuml;hrt wird, empf&auml;ngt der Bootloader neue Firmware &uuml;ber einen festgelegten Kanal. Das kann zum Beispiel eine USB-Verbindung, eine Netzwerkschnittstelle oder eine andere Kommunikationsschnittstelle sein. Einige <a class=\"glossaryLink\"  href=\"https:\/\/www.pickplace.de\/glossar\/mikrocontroller\/\"  data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex='0' role='link'>Mikrocontroller<\/a> stellen daf&uuml;r Schnittstellen wie In-System Programming oder In-Application Programming bereit. Das konkrete L&ouml;schen und Schreiben des Flash-Speichers h&auml;ngt vom Mikrocontroller ab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach erfolgreichem Update oder bestandener Pr&#xFC;fung startet der Bootloader die Anwendung. Bei Arm-Cortex-M-Systemen umfasst dieser &#xDC;bergang mehrere Schritte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aktivierte Interrupts im NVIC deaktivieren,<\/li>\n\n\n\n<li>noch ausstehende Interrupts l&#xF6;schen,<\/li>\n\n\n\n<li>verwendete Peripherie in einen geeigneten Zustand zur&#xFC;cksetzen,<\/li>\n\n\n\n<li>SysTick deaktivieren, falls er vom Bootloader genutzt wurde,<\/li>\n\n\n\n<li>gegebenenfalls Fault-Handler deaktivieren,<\/li>\n\n\n\n<li>den Main Stack Pointer auf den Wert aus der Vektortabelle der Anwendung setzen,<\/li>\n\n\n\n<li>die Adresse der Vektortabelle der Anwendung in das VTOR-Register schreiben,<\/li>\n\n\n\n<li>den Reset-Vektor der Anwendung laden und dorthin springen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Vektortabelle der Anwendung enth&#xE4;lt bei Cortex-M-Systemen am Anfang den Startwert des Main Stack Pointer und danach den Reset-Vektor. Deshalb wird beim Sprung nicht einfach die Startadresse der Anwendung wie eine normale Funktion aufgerufen. Der Bootloader muss die Startbedingungen der Anwendung so herstellen, dass sie nicht von Zust&#xE4;nden des Bootloaders abh&#xE4;ngt.<\/p>\n\n\n\n<h2 id=\"wo-wird-ein-bootloader-verwendet\" class=\"wp-block-heading\">Wo wird ein Bootloader verwendet?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bootloader werden in Mikrocontroller-Systemen eingesetzt, deren Firmware nach der Auslieferung aktualisiert werden soll. Das betrifft Ger&#xE4;te, die im Feld betrieben werden und bei denen ein Update &#xFC;ber eine vorhandene Schnittstelle erfolgen muss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bootloader kann genutzt werden, wenn der vorinstallierte Bootloader eines Mikrocontrollers nicht zum System passt. Gr&#xFC;nde k&#xF6;nnen eine nicht zug&#xE4;ngliche Schnittstelle, ein ungeeigneter Update-Ausl&#xF6;ser oder eine nicht passende Speicherorganisation sein. Auch eigene Anforderungen an Pr&#xFC;fschritte, Update-Markierungen oder den Ablauf des Firmware-Wechsels k&#xF6;nnen einen eigenen Bootloader erforderlich machen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typische Einsatzkontexte sind Systeme mit separater Anwendungsfirmware, Flash-Speicher mit festen L&#xF6;schgr&#xF6;&#xDF;en und Update-Kan&#xE4;len, die nicht vom Hersteller-Bootloader abgedeckt werden.<\/p>\n\n\n\n<h2 id=\"eigenschaften\" class=\"wp-block-heading\">Eigenschaften<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bootloader ben&#xF6;tigt einen fest reservierten Speicherbereich. Wenn der Bootloader am Anfang des Programmspeichers liegt, wird er nach einem Reset zuerst ausgef&#xFC;hrt. Die Anwendung beginnt dann an einer h&#xF6;heren Adresse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Speicheraufteilung muss zur L&#xF6;schstruktur des Flash-Speichers passen. Flash-Speicher ist in Pages, Sectors, Blocks oder Banks gegliedert. Die kleinste l&#xF6;schbare Einheit legt fest, wie Bootloader und Anwendung getrennt werden m&#xFC;ssen. Bootloader und Anwendung sollten nicht in derselben l&#xF6;schbaren Einheit liegen, weil das L&#xF6;schen eines Anwendungsteils sonst auch Bootloader-Code entfernen k&#xF6;nnte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Linker-Konfigurationen von Bootloader und Anwendung m&#xFC;ssen zueinander passen. Der Bootloader erh&#xE4;lt einen Flash-Bereich, der f&#xFC;r ihn reserviert ist. Die Anwendung erh&#xE4;lt eine Startadresse au&#xDF;erhalb dieses Bereichs. F&#xFC;r beide Firmware-Images werden getrennte Linker-Dateien oder getrennte Linker-Einstellungen verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bootloader ben&#xF6;tigt au&#xDF;erdem eine Update-Bedingung. Ein GPIO-Pin kann beim Reset abgefragt werden. Alternativ kann die Anwendung vor einem Software-Reset einen Marker in Flash, EEPROM oder in einem gemeinsam definierten RAM-Bereich setzen. Der Bootloader liest diesen Marker nach dem Neustart und wechselt dann in den Update-Modus. Wenn ein nichtfl&#xFC;chtiger Marker verwendet wird, sollte er beim Eintritt in den Update-Modus wieder gel&#xF6;scht werden, damit ein sp&#xE4;terer Neustart ohne neues Update nicht dauerhaft im Update-Modus bleibt.<\/p>\n\n\n\n<h2 id=\"abgrenzung-zu-verwandten-begriffen\" class=\"wp-block-heading\">Abgrenzung zu verwandten Begriffen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Boot-ROM als Gegensatz zum Bootloader ist fest im Mikrocontroller oder Systemchip vorhanden und wird vor dem Bootloader ausgef&#xFC;hrt. Sie enth&#xE4;lt herstellerspezifischen Startcode. Ein Bootloader im Flash-Speicher kann dagegen Teil der eigenen Firmware sein und an die eigene Speicheraufteilung und die eigenen Update-Abl&#xE4;ufe angepasst werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Anwendungsfirmware enth&#xE4;lt die eigentliche Ger&#xE4;tefunktion. Sie kann unabh&#xE4;ngig vom Bootloader gebaut werden. Der Bootloader startet diese Anwendung, nachdem er Pr&#xFC;fung und Update-Entscheidung abgeschlossen hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In-System Programming bezeichnet eine M&#xF6;glichkeit, Programmspeicher &#xFC;ber eine Programmierschnittstelle zu beschreiben. In-Application Programming bezeichnet Mechanismen, mit denen Code aus der laufenden Firmware heraus Flash-Inhalte &#xE4;ndern kann. Ein Bootloader kann solche Mechanismen nutzen, ist aber selbst der Programmteil, der den Update-Ablauf steuert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Linker-Skript ist kein Bootloader. Es beschreibt, welche Speicherbereiche ein Firmware-Image verwenden darf. F&#xFC;r ein System mit Bootloader legt das Linker-Skript der Anwendung fest, dass deren Code nicht an der Flash-Basisadresse des Bootloaders beginnt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Bootloader ist ein Programmteil, der nach dem Start eines Mikrocontrollers ausgef\u00fchrt werden kann und die Firmware einer Anwendung l\u00e4dt, startet oder aktualisiert. Bei Mikrocontrollern liegt er meist in einem eigenen Bereich des Flash-Speichers. Nach einem Reset entscheidet der Bootloader, ob eine vorhandene Anwendung gestartet wird oder ob ein Update-Vorgang beginnen soll. Was bedeutet ist [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"footnotes":""},"class_list":["post-2324","glossary","type-glossary","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/glossary\/2324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/glossary"}],"about":[{"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/types\/glossary"}],"author":[{"embeddable":true,"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":1,"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/glossary\/2324\/revisions"}],"predecessor-version":[{"id":2325,"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/glossary\/2324\/revisions\/2325"}],"wp:attachment":[{"href":"https:\/\/www.pickplace.de\/de\/wp-json\/wp\/v2\/media?parent=2324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}