{"id":1275,"date":"2019-09-13T15:30:30","date_gmt":"2019-09-13T05:30:30","guid":{"rendered":"http:\/\/furzy.com\/mikesblog\/?page_id=1275"},"modified":"2019-09-15T20:28:10","modified_gmt":"2019-09-15T10:28:10","slug":"loading-firmware-dev010b-stm32f091-loading-a-hex-file-using-st-bootloader","status":"publish","type":"page","link":"http:\/\/furzy.com\/mikesblog\/notes\/loading-firmware-dev010b-stm32f091-loading-a-hex-file-using-st-bootloader\/","title":{"rendered":"Loading Firmware &#8211; DEV010B STM32F091 &#8211; loading a hex file using ST bootloader"},"content":{"rendered":"<p>This page primarily supports our DEV010B board. But this equally applies to loading firmware on any STM32 device, refer to your device documentation for entering bootloader mode on RESET.<\/p>\n<p>We issue hex files for the ST STM32 microcontrollers.<\/p>\n<p>These hex files can be loaded on your board either through a JTAG interface or through a serial interface using the ST Bootloader.<\/p>\n<p><strong>This page uses the ST Bootloader.<\/strong> At the time of writing the URL was ..<br \/>\nhttps:\/\/www.st.com\/en\/development-tools\/flasher-stm32.html<br \/>\nAlso you can search for ..<\/p>\n<ul>\n<li>Flasher-STM32<\/li>\n<li>UM0462<\/li>\n<li>STM32 Flash loader demonstrator<\/li>\n<\/ul>\n<p>The picture below shows our typical arrangement for loading a hex file ..<\/p>\n<div id=\"attachment_1276\" style=\"width: 1610px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1276\" class=\"size-full wp-image-1276\" src=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073.jpg\" alt=\"Typical STM32F091 DEV010B Programming Setup \" width=\"1600\" height=\"1073\" srcset=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073.jpg 1600w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073-300x201.jpg 300w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073-768x515.jpg 768w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073-1024x687.jpg 1024w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/DEV010B-Programming-Setup-_1600x1073-447x300.jpg 447w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/a><p id=\"caption-attachment-1276\" class=\"wp-caption-text\">Typical STM32F091 DEV010B Programming Setup<\/p><\/div>\n<p>On the Left is a USB &#8211; Serial interface &#8211; this interface provides power to the DEV010B board, and the serial is used for the application communications (in the application pictured it is for MODBUS)<\/p>\n<p>In the middle is the DEV010B oLED display board with a STM32F091 on board<\/p>\n<p>On the right is our programming adaptor, it has a USB &#8211; Serial interface, a switch configured for the BOOT pin (marked orange), and a switch configured for RESET (marked red).<\/p>\n<p>For the STM32F091, BOOT is set HIGH, RESET is pulled LOW by the switches.<\/p>\n<p>You may not have our programming adaptor, but in principle you will need the same, a serial port, and connections for the BOOT and RESET pins on the device. See our other notes re building up programming adaptors.<\/p>\n<p>To enter bootloader mode in the STM32F091, press and hold RESET (ie RESET is driven LOW), then press and hold BOOT (ie BOOT is driven HIGH), then release RESET, then release BOOT.<\/p>\n<p>For further information, see the ST documentation for your device regarding the entry to bootloader mode.<\/p>\n<p>On the DEV010B, the display is now blank.<\/p>\n<p>Start the ST Flash Loader Demonstrator program (download from ST). At the time of writing we are using V2.8.<\/p>\n<p>Setup for the serial port on the first screen, use device manager if unsure of the serial port name (unplug and plug in the USB-serial device if necessary)<\/p>\n<div id=\"attachment_1277\" style=\"width: 440px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1277\" class=\"size-full wp-image-1277\" src=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-1.jpg\" alt=\"ST Flash Loader Screen 1\" width=\"430\" height=\"548\" srcset=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-1.jpg 430w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-1-235x300.jpg 235w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/a><p id=\"caption-attachment-1277\" class=\"wp-caption-text\">ST Flash Loader Screen 1<\/p><\/div>\n<p>The next screen indicates if the target device was found by the Flash Loader<\/p>\n<p>The next screen allows you to select \/ confirm the target device, for the DEV010B this is a STM32F091<\/p>\n<div id=\"attachment_1278\" style=\"width: 440px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-3.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1278\" class=\"size-full wp-image-1278\" src=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-3.jpg\" alt=\"ST Flash Loader Screen 3\" width=\"430\" height=\"548\" srcset=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-3.jpg 430w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-3-235x300.jpg 235w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/a><p id=\"caption-attachment-1278\" class=\"wp-caption-text\">ST Flash Loader Screen 3<\/p><\/div>\n<p>The next screen sets up the operation, in this case, Download to device, with Global Erase. Set the Download from file to the hex file supplied.<\/p>\n<div id=\"attachment_1279\" style=\"width: 440px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-4.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1279\" class=\"size-full wp-image-1279\" src=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-4.jpg\" alt=\"ST Flash Loader Screen 4\" width=\"430\" height=\"548\" srcset=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-4.jpg 430w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-4-235x300.jpg 235w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/a><p id=\"caption-attachment-1279\" class=\"wp-caption-text\">ST Flash Loader Screen 4<\/p><\/div>\n<p>The Flash Loader will then download the hex to the device, and verify, and when notify you when finished<\/p>\n<div id=\"attachment_1280\" style=\"width: 440px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-5.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1280\" class=\"size-full wp-image-1280\" src=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-5.jpg\" alt=\"ST Flash Loader Screen 5\" width=\"430\" height=\"548\" srcset=\"http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-5.jpg 430w, http:\/\/furzy.com\/mikesblog\/wp-content\/uploads\/2019\/09\/ST-Flash-Loader-Screen-5-235x300.jpg 235w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/a><p id=\"caption-attachment-1280\" class=\"wp-caption-text\">ST Flash Loader Screen 5<\/p><\/div>\n<p>Reset the DEV010B board to run the loaded firmware.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This page primarily supports our DEV010B board. But this equally applies to loading firmware on any STM32 device, refer to your device documentation for entering bootloader mode on RESET. We issue hex files for the ST STM32 microcontrollers. These hex &hellip; <a href=\"http:\/\/furzy.com\/mikesblog\/notes\/loading-firmware-dev010b-stm32f091-loading-a-hex-file-using-st-bootloader\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":917,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-1275","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P7DDag-kz","_links":{"self":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/1275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/comments?post=1275"}],"version-history":[{"count":3,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/1275\/revisions"}],"predecessor-version":[{"id":1285,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/1275\/revisions\/1285"}],"up":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/917"}],"wp:attachment":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/media?parent=1275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}