Страница 1 из 1

STM32F042: USB HID + DFU bootloader

Добавлено: Ср апр 12, 2017 21:27:55
gauss
Доброго времени суток!
Делаю один проект на основе МК STM32F042 с аппаратным Full-Speed USB. Устройство определяется
в системе как HID-устройство. Для будущего обновления прошивок хотелось бы сделать
собственный Bootloader.
Нашел в интернете способ обновления прошивки через DFU, когда МК определяется как Mass Storage Device
(проще говоря, обычная флешка). Но так как памяти в контроллере мало (32КБ), уместить и DFU, и прошивку (16КБ) не представляется
возможным.
Тогда возник вопрос: можно ли сделать так, чтобы при подключении в Boot-режиме устройство определялось в системе как
виртуальный COM-порт, а через него уже заливалась бы прошивка. Тогда не пришлось бы резервировать место
под Mass Storage Device, а потребовались бы лишь несколько КБ на загрузчик.
Собственно говоря, возможно ли такое? :)

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Чт апр 13, 2017 11:46:39
Mishany
самый простой повесить на UART1 CP2102 и юзать заводской бутлоадер(не забыть про перемычку)

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Чт апр 13, 2017 13:38:16
Z_h_e
Возможно. Вот здесь c USB воевали и товарищ isx как раз делал виртуальный COM. И, если не ошибаюсь, он же запостил статейку по этому поводу.

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 09:27:01
gauss
Я тут подумал, собственно говоря, для чего использовать именно стандартный пин BOOT0?
Делаем на плате доп. кнопку. Если при включении кнопка нажата - переходим в "загрузочный" режим - когда
девайс определяется как виртуальный КОМ-порт.

Память кристалла - страницы по 1 КБ. Далее с помощью утилиты пишем в КОМ-порт по 1 КБ, записываем во флеше,
начиная с нужного адреса.

Все, прошивка обновлена! Далее передергиваем девайс, уже не зажимая кнопку - он определяется как HID-устройство
и начинает работать с обновленной прошивкой.

Пните, если где не прав :dont_know:

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 10:43:51
Reflector
gauss писал(а):Я тут подумал, собственно говоря, для чего использовать именно стандартный пин BOOT0?
Потому что у F042 есть встроенный DFU bootloader?

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 11:29:34
gauss
Он встроен не на аппаратном уровне, его можно реализовать только программно. А DFU bootloader и прошивка не влезут вместе

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 11:40:15
Reflector
gauss писал(а):Он встроен не на аппаратном уровне, его можно реализовать только программно. А DFU bootloader и прошивка не влезут вместе
The boot loader is located in System Memory. It is used to reprogram the Flash memoryby using USART on pins PA14/PA15, or PA9/PA10 or I2C on pins PB6/PB7 or through the USB DFU interface.

Это, по-твоему, что означает? С F042 дело не имел, но F4 шил через такой-же USB DFU, утилита от ST для прошивки называется DfuSe.

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 13:29:31
gauss
Попробовал, получилось... Действительно работает :facepalm:
Только как я понял, есть один нюанс. Если память не пустая, то на BOOT0 должна быть 1 для USB DFU.
Если пустая, то совершенно неважно?

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пт апр 14, 2017 13:46:25
Reflector
gauss писал(а):Только как я понял, есть один нюанс. Если память не пустая, то на BOOT0 должна быть 1 для USB DFU.
Если пустая, то совершенно неважно?
Открой AN2606, найди там свой F04x и прочитай про этот нюанс сам :)

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пн апр 17, 2017 01:27:14
gauss
Наконец-то разобрался и все сделал, в том числе шифрование прошивки :)
Теперь программатор не нужен вообще!

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пн апр 17, 2017 14:09:38
amv2000
У меня вопрос по Mass Storage Device на STM32F103C8, каким образом с 32 кБ флешпамяти умудряются делать так, что он видится как диск размером 2мБ?

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пн апр 17, 2017 15:09:53
gauss
В С8 64КБ памяти. Кроме того, проц может быть посредником между хостом и картой памяти

Re: STM32F042: USB HID + DFU bootloader

Добавлено: Пн апр 17, 2017 15:43:40
amv2000
gauss писал(а):В С8 64КБ памяти.
Ну да точно. Карты памяти точно нет, у меня китайский паяльник TS100 для перепрошивки используется USB и видится диск размером 2 мБ. Контроллер STM32F103TB6.