{"id":136,"date":"2017-11-22T00:29:11","date_gmt":"2017-11-21T23:29:11","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=136"},"modified":"2017-12-30T19:17:17","modified_gmt":"2017-12-30T18:17:17","slug":"stm32f4-und-bootloader","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/stm32f4-und-bootloader\/","title":{"rendered":"STM32F4 und Bootloader"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/installation-der-toolchain-und-erstes-projekt\/\" title=\"Installation der Toolchain und erstes Projekt\"><span class=\"meta-nav\">\u2190<\/span> Installation der Toolchain und erstes Projekt<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/grundsaetzliches-zur-coocox-ide\/\" title=\"Grunds\u00e4tzliches zur CooCox-IDE\">Grunds\u00e4tzliches zur CooCox-IDE <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Die STM32F4 CPU hat einen eingebauten Bootloader, mit dessen Hilfe man die CPU programmieren kann auch wenn man keinen STLink\/V2 hat.<\/p>\n<p>Am einfachsten ist der Weg per externem USB-to-UART-Wandler (von FTDI) und dem Flash-Loader PC-Programm von STM.<\/p>\n<p><strong>1. PC vorbereiten :<\/strong><\/p>\n<p>Auf dem PC muss ein aktueller USB Treiber f\u00fcr den FTDI-Wandler installiert sein.<br \/>\n(den gibts auf der Webseite von FTDIChip)<\/p>\n<p>Das \u201cFlash-Loader-Programm\u201d gibt es auf der Webseite von STM.<\/p>\n<p><strong>2. FTDI-Wandler per USB-Kabel an den PC anschlie\u00dfen :<\/strong><\/p>\n<p>Im Ger\u00e4temanager taucht jetzt ein neuer COM-Anschluss auf<br \/>\n(die Nummer vom COM-Port bitte aufschreiben\u2026im Beispiel = COM6)<\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot0.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1784\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot0-300x79.jpg\" alt=\"boot0\" width=\"300\" height=\"79\" \/><\/a><\/p>\n<p><strong>3. FTDI-Wandler mit dem UART1 der CPU verbinden :<\/strong><\/p>\n<p>Der TX-Pin vom FTDI-Wandler muss mit dem RX-Pin der STM32F4<br \/>\nverbunden werden (RX_UART1 = PA10 = Pin 69)<\/p>\n<p>Der RX-Pin vom FTDI-Wandler muss mit dem TX-Pin der STM32F4<br \/>\nverbunden werden (TX_UART1 = PA9 = Pin 68)<\/p>\n<p><strong>4. Bootloader auf der CPU starten :<\/strong><\/p>\n<p>Um den Bootloader auf der CPU zu starten muss diese Sequenz durchgef\u00fchrt werden :<br \/>\n1. CPU Pin BOOT-1\/PB2 (Pin 37) muss auf Lo-Pegel liegen<br \/>\n2. CPU Pin BOOT-0 (Pin 94) muss auf Hi-Pegel liegen<br \/>\n3. Reset muss ausgel\u00f6st werden (Reset = Pin 14)<\/p>\n<p>Wenn der Bootloader einmal l\u00e4uft, ist der Pegel an Boot-0 und Boot-1 egal, die CPU wartet jetzt bis sie entweder ein HEX-File zum flashen bekommt oder bis erneut ein Reset ausgel\u00f6st wird.<\/p>\n<p><strong>5. Flash-Loader-Programm auf dem PC starten :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1787\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot1-233x300.jpg\" alt=\"boot1\" width=\"233\" height=\"300\" \/><\/a><\/p>\n<p>auf die Einstellung des richtigen Com-Ports achten<br \/>\nund den Button \u201cNEXT\u201d dr\u00fccken<\/p>\n<p><strong>6. CPU suchen lassen :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1789\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot2-230x300.jpg\" alt=\"boot2\" width=\"230\" height=\"300\" \/><\/a><\/p>\n<p>Falls der Bootloader der CPU gefunden wurde,<br \/>\nerscheint eine \u201cTarget available\u201d meldung.<br \/>\nJetzt wieder den Button \u201cNEXT\u201d dr\u00fccken.<\/p>\n<p><strong>7. Target ausw\u00e4hlen :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1790\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot3-232x300.jpg\" alt=\"boot3\" width=\"232\" height=\"300\" \/><\/a><\/p>\n<p>Unter \u201cTarget\u201d muss die richtige Speichergr\u00f6\u00dfe der CPU eingestellt werden.<br \/>\nIm fall vom STM32F4 auf 1024K (1MByte)<br \/>\nDann weiter mit dem Button \u201cNEXT\u201d<\/p>\n<p><strong>8. File zum programmieren ausw\u00e4hlen :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1791\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot4-232x300.jpg\" alt=\"boot4\" width=\"232\" height=\"300\" \/><\/a><\/p>\n<p>Unter \u201cDownload from File\u201d kann \u00fcber den Button das \u201cBIN\u201d oder \u201cHEX\u201d-File<br \/>\ndas programmiert werden soll in einerm Browser gesucht werden.<br \/>\n(im Beispiel \u201cStamp_01.bin\u201d)<br \/>\nMit einem Klick auf \u201cNEXT\u201d wird das File in die CPU programmiert.<\/p>\n<p><strong>9. File in die CPU flashen :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot5.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1792\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/boot5-232x300.jpg\" alt=\"boot5\" width=\"232\" height=\"300\" \/><\/a><\/p>\n<p>Wenn das programmieren ohne Fehler funktioniert hat,<br \/>\nwird \u201csuccessfully\u201d angezeigt.<\/p>\n<p><strong>10. Programm auf der CPU starten :<\/strong><\/p>\n<p>Die CPU steht jetzt immer noch im Bootloader. Um das gerade<br \/>\ngeflashte Programm zu starten, muss\u00a0diese Sequenz durchgef\u00fchrt werden :<br \/>\n1. Pegel vom CPU Pin BOOT-1\/PB2 (Pin 37) ist egal<br \/>\n2. CPU Pin BOOT-0 (Pin 94) muss auf Lo-Pegel liegen<br \/>\n3. Reset muss ausgel\u00f6st werden (Reset = Pin 14)<\/p>\n<p><strong>11. Fertig :<\/strong><\/p>\n<p>Die CPU sollte jetzt mit dem neuen Programm laufen<br \/>\nund das PC-Programm kann beendet werden.<\/p>\n<hr \/>\n<h3 id=\"comments-title\">2 Antworten auf <em>STM32F4 und Bootloader<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-389\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-389\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b84816d61d1f60757dbf887a28aaf6f9?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Jo<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">7. Juni 2013 um 10:15<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Damit keiner Zeit verschwendet ein zus\u00e4tzlicher Hinweis:<br \/>\nauf dem Discovery-Board funktioniert der interne Bootloader nicht so wie beschrieben, da die Pins PA9\/PA10 mit dem USB-Anschlu\u00df belegt sind. Auf dieser Leiterplatte muss man die Pins PB10\/PB11 bzw. PC10\/PC11 oder den DFU-Modus benutzen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-392\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-392\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">7. Juni 2013 um 19:34<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>sehr guter Hinweis\u2026Danke<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Die STM32F4 CPU hat einen eingebauten Bootloader, mit dessen Hilfe man die CPU programmieren kann auch wenn man keinen STLink\/V2 hat. Am einfachsten ist der Weg per externem USB-to-UART-Wandler (von FTDI) und dem Flash-Loader PC-Programm von STM. 1. PC vorbereiten &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/stm32f4-und-bootloader\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":57,"menu_order":5,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[83,7],"class_list":["post-136","page","type-page","status-publish","hentry","category-stm32f4","tag-bootloader","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/136\/revisions"}],"predecessor-version":[{"id":1252,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/136\/revisions\/1252"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/57"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}