STM32F042: USB HID + DFU bootloader

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

STM32F042: USB HID + DFU bootloader

Сообщение gauss »

Доброго времени суток!
Делаю один проект на основе МК STM32F042 с аппаратным Full-Speed USB. Устройство определяется
в системе как HID-устройство. Для будущего обновления прошивок хотелось бы сделать
собственный Bootloader.
Нашел в интернете способ обновления прошивки через DFU, когда МК определяется как Mass Storage Device
(проще говоря, обычная флешка). Но так как памяти в контроллере мало (32КБ), уместить и DFU, и прошивку (16КБ) не представляется
возможным.
Тогда возник вопрос: можно ли сделать так, чтобы при подключении в Boot-режиме устройство определялось в системе как
виртуальный COM-порт, а через него уже заливалась бы прошивка. Тогда не пришлось бы резервировать место
под Mass Storage Device, а потребовались бы лишь несколько КБ на загрузчик.
Собственно говоря, возможно ли такое? :)
:idea:
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: STM32F042: USB HID + DFU bootloader

Сообщение Mishany »

самый простой повесить на UART1 CP2102 и юзать заводской бутлоадер(не забыть про перемычку)
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: STM32F042: USB HID + DFU bootloader

Сообщение Z_h_e »

Возможно. Вот здесь c USB воевали и товарищ isx как раз делал виртуальный COM. И, если не ошибаюсь, он же запостил статейку по этому поводу.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: STM32F042: USB HID + DFU bootloader

Сообщение gauss »

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

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

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

Пните, если где не прав :dont_know:
:idea:
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F042: USB HID + DFU bootloader

Сообщение Reflector »

gauss писал(а):Я тут подумал, собственно говоря, для чего использовать именно стандартный пин BOOT0?
Потому что у F042 есть встроенный DFU bootloader?
Реклама
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: STM32F042: USB HID + DFU bootloader

Сообщение gauss »

Он встроен не на аппаратном уровне, его можно реализовать только программно. А DFU bootloader и прошивка не влезут вместе
:idea:
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F042: USB HID + DFU bootloader

Сообщение 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.
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: STM32F042: USB HID + DFU bootloader

Сообщение gauss »

Попробовал, получилось... Действительно работает :facepalm:
Только как я понял, есть один нюанс. Если память не пустая, то на BOOT0 должна быть 1 для USB DFU.
Если пустая, то совершенно неважно?
:idea:
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F042: USB HID + DFU bootloader

Сообщение Reflector »

gauss писал(а):Только как я понял, есть один нюанс. Если память не пустая, то на BOOT0 должна быть 1 для USB DFU.
Если пустая, то совершенно неважно?
Открой AN2606, найди там свой F04x и прочитай про этот нюанс сам :)
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: STM32F042: USB HID + DFU bootloader

Сообщение gauss »

Наконец-то разобрался и все сделал, в том числе шифрование прошивки :)
Теперь программатор не нужен вообще!
:idea:
Аватара пользователя
amv2000
Опытный кот
Сообщения: 720
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32F042: USB HID + DFU bootloader

Сообщение amv2000 »

У меня вопрос по Mass Storage Device на STM32F103C8, каким образом с 32 кБ флешпамяти умудряются делать так, что он видится как диск размером 2мБ?
Аватара пользователя
gauss
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Re: STM32F042: USB HID + DFU bootloader

Сообщение gauss »

В С8 64КБ памяти. Кроме того, проц может быть посредником между хостом и картой памяти
:idea:
Аватара пользователя
amv2000
Опытный кот
Сообщения: 720
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32F042: USB HID + DFU bootloader

Сообщение amv2000 »

gauss писал(а):В С8 64КБ памяти.
Ну да точно. Карты памяти точно нет, у меня китайский паяльник TS100 для перепрошивки используется USB и видится диск размером 2 мБ. Контроллер STM32F103TB6.
Ответить

Вернуться в «ARM»