Системный загрузчик

Как ни странно путешеcтвуя по даташиту STM32F205 наткнулся на такое :

фотка 1

Как раз надо было разобраться с обновлением прошивки на готовых (проданных) устройствах STM32.

Поскольку мы программируем STM32 через SWD (JTag) и (как мы думали) снесли все загрузчики к чертовой матери встала вопрос как в контроллер установить загрузчик.

Фраза из даташита: The boot loader is located in system memory. It is used to reprogram the Flash memory by using USART1 (PA9/PA10), USART3 (PC10/PC11 or PB10/PB11), CAN2 (PB5/PB13), USB OTG FS in Device mode (PA11/PA12) through DFU (device firmware upgrade)

- ставит сразу много вопросов : где этот системный загрузчик, можно ли его переустановить и по каким интерфейсам и т.д.

Да (как оказывается) системный загрузчик существует (и по-видимому всегда) и обновляется программой ST Link Upgrade (и тут есть важный нюанс, что запускается системный бутлодер только при подтянутой к 1 ножке boot0 контроллера).

фотка 2

Есть такой документ STM32 microcontroller system memory boot mode (December 2019 AN2606 Rev 421/3581AN2606 Application note ), в котором сказано, что вариантов интерфейсов по которым можно обновлять ПО несколько. Этот файл можно скачать внизу страницы.

The bootloader is stored in the internal boot ROM memory (system memory) of STM32 devices. It is programmed by ST during production. Its main task is to download the application program to the internal Flash memory through one of the available serial peripherals (USART, CAN, USB, I2C, SPI, etc.). A communication protocol is defined for each serial interface, with a compatible command set and sequences. This document applies to the products listed in Table1. They are referred as STM32 throughout the document.

Там описываются встроенные системные загрузчики от производителя, которые удалить нельзя, но можно обновить .

В этом документе явно указано по какому адресу начинается системный закрузчик для данного типа контроллера STM32 :

фотка 3

А можно ли перейти по этому адресу из основного цикла программы для активации загрузчика ? Есть ролик в ютюбе , где показано , что это можно.

По поводу определения версии бутлодера есть оказываются конечно же открытые команды GetId и GetVersion.

Можно послать по UART пару байт и определить версию бутлодера:

фотка 4

Возможно программа ST-LINK UTILITY показывает , но не факт :

фотка 5

Файлы для скачивания