Разрешить конечному пользователю обновить прошивку mikroe stm32f207vg
Я разработал встраиваемое устройство, используя плату разработки mikroe stm32f207vg. Я новичок в этом, так что, пожалуйста, терпите меня. У меня вопрос: если позже (после выхода в открытый доступ) я хочу, чтобы конечные пользователи моего устройства обновили программное обеспечение устройства, как я могу включить эту функцию. Например, когда я улучшаю программное обеспечение устройства и хочу, чтобы пользователи обновляли устройство новым файлом.hex, используя порт USB. Я предполагаю, что мне нужно сделать настольное приложение. что мне делать с приложением? Во время разработки я использую приложение загрузчика Mikroe для отправки / установки шестнадцатеричного файла на мое устройство. Я хочу сделать подобное приложение. Я смотрел на протокол DFU. Stm имеет демонстрационное приложение Defuse. Это приложение для этой цели. Я хочу создать собственное приложение для этого. С чего мне начать?
1 ответ
Я построил программу на C#, которая позволяет моим конечным пользователям обновлять прошивку. Я сделал это путем реинжиниринга программы Dufse, которую можно найти здесь. Весь исходный код включен. Эта ссылка описывает протокол.
На моей плате есть переключатель на выводе boot0, который позволяет MCU загружаться в "системную память". При загрузке в "системную память" USB-интерфейс MCU будет работать как устройство DFU. Вам потребуется установить драйверы ST DFU на хост-компьютер, а затем вы можете использовать программу Dfuse или свою собственную программу для обновления прошивки.
Я также нашел это обсуждение полезным, но не позволяйте ему сбить вас с толку. Документы ST являются реальным источником информации.
Есть и другие способы. Знаете ли вы, что ваша прошивка действительно может записывать на флэш-память? Вы можете написать свой собственный загрузчик, который использует USART, USB, Ethernet или другое периферийное устройство для программирования устройства путем записи на флэш-память. Будьте осторожны, чтобы не перезаписать ваш загрузчик. ST, кажется, называет это "программированием в приложении" (IAP).
Они могут быть для разных MCU, но принципы одинаковы.
Надеюсь, что это даст вам старт, который вы ищете.