реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> stm32 DFU over USB, понравилось
klen
сообщение Feb 3 2013, 08:22
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Всем привет.
я давно знал что начиная с stm32f2 через USB интерфейс можно читать писать микросхему. но руки не доходили. наконецто мне жеско объявили что в девайсе не будет житага и уарта. серийные изделие отавалось програмить по dfu через юсб. пришлось разобратся. также мне изветно было что у стм есть утилитки которые под виндой делает этот функционал. до данного место наверно Всем колегам я нового не расказал.

далее возник вопрос а как это делать под нашим любимым линуксом. оказалось как всегда проще простого. люди уже позаботились и ежечасно и еженочно заботтся сдавая комиты в репозитории sm.gif Имется открытая тулза dfu-util (http://dfu-util.gnumonks.org/) wiki (http://www.seeedstudio.com/wiki/Dfu-util)
итак.
1. есть плата с впаяной STM32F4, PA11 PA12 подпаяны к юсб разъему. boot1 накорпус, boot0 подтянут к нулю и может быть перемычкой затянут на +3,3v
2. есть бинарник которы хочется залить. при наличие elf его генерим :
Код
arm-kgp-eabi-objcopy --strip-all  -O binary image.elf image.bin


3. втыкаем перемычку boot0 -> 3.3 заставляем грузанутся из системной памяти в корой ST-шный загрузчик
4. С помощью тулзы нарезаем страницы флеша:
Цитата
klen@klen-desktop:/opt/home/polygon/dfu-util-0.7/src$ ./dfu-util -a 0 --dfuse-address 0x08000000 -D image.bin
dfu-util 0.7

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Opening DFU capable USB device... ID 0483:df11
Run-time device DFU version 011a
Found DFU: [0483:df11] devnum=0, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,07*128Kg"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
No valid DFU suffix signature
Warning: File has no DFU suffix
DfuSe interface name: "Internal Flash "
Downloading to address = 0x08000000, size = 112052
.......................................................
File downloaded successfully


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

утилитка ничего особого не тянет из системы
Код
klen@klen-desktop:/opt/home/polygon/dfu-util-0.7/src$ ldd ./dfu-util
    linux-vdso.so.1 =>  (0x00007fff8bb7f000)
    libusb-1.0.so.0 => /usr/local/lib/libusb-1.0.so.0 (0x00007fba65d16000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fba6597e000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fba65775000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fba65557000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fba65f5b000)


есть еще в dfu-suffix только я еще непросек нафига оно надо.
отныне dfu-utils будет в моей сборке тулсов как вкусная и полезная витаминная добавка.

для сильно обездоленных и страждущих за иноземную веру можно процес прикрутиь к винде. не вижу проблем.
Прикрепленные файлы
Прикрепленный файл  dfu_utils_x86_64.tar.7z ( 51.38 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
Petka
сообщение Feb 3 2013, 12:37
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(klen @ Feb 3 2013, 12:22) *
...
для сильно обездоленных и страждущих за иноземную веру можно процес прикрутиь к винде. не вижу проблем.

Разрабатываем под linux, а вот устройства иногда эксплуатируются под виндой. У меня с ходу не получилось загрузить по DFU через самосборный dfu-util прошивку =( т.к. dfu-util использует libusb версии 1.0, то под винду приходится собирать с libusbx. libusbx умеет работать через 3 драйвера: libusb0-win32, libusbk и через "супостатский" winusb. Со всеми тремя драйверами dfu-util в процессе заливки ломается в разных местах. Разработчики libusbx предполагают, что проблема где-то в dfu-util. Если вместе разберёмся как под виндой заставить работать dfu-util, то будет очень даже удобно пользоваться одним инструментом и под линь и под вынь.
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 3 2013, 16:08
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(Petka @ Feb 3 2013, 16:37) *
Разрабатываем под linux, а вот устройства иногда эксплуатируются под виндой. У меня с ходу не получилось загрузить по DFU через самосборный dfu-util прошивку =( т.к. dfu-util использует libusb версии 1.0, то под винду приходится собирать с libusbx. libusbx умеет работать через 3 драйвера: libusb0-win32, libusbk и через "супостатский" winusb. Со всеми тремя драйверами dfu-util в процессе заливки ломается в разных местах. Разработчики libusbx предполагают, что проблема где-то в dfu-util. Если вместе разберёмся как под виндой заставить работать dfu-util, то будет очень даже удобно пользоваться одним инструментом и под линь и под вынь.

куда не копнеш везде безнонная дыра...
окзываеццо! libusb-1.0 это уже некошерно, ее разработчики разосрались с маинтейнерами... плюнули им в рожу и сделали форк libusbx. выкачал из репа, собрал libusbx, чтоб все разом незавалилось попробывал статически попересаберёвывать всякую шнягу работающую через usb. вроде работает так же как и на родной для дистра моего линуха libusb-1.0. пересобрал dfu-util, тоже работает не падает. шъет и читает. в аот масдаем еще не пробывал.

ps. есть у меня одна теория - если по ходу ДЕЛА нужно обатится к масдаю - переформулируй условия задачи. напримен откажись от этих денег и заработай больше других (больше за счет уменьшения потраченных нервов и тд)! sm.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 4 2013, 08:36
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Что-то я не понял. Неужели ST никак не позаботился о софте под винду для работы с usb-dfu?
Помнится, что для прошивки по ком-порту были выложены и апноты и исходники...
А по делу - очень полезно, что вы попробовали-таки эту фичу. Спасибо за инфу!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
YAM
сообщение Feb 4 2013, 16:14
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Никогда не заморачивался штатными фитюльками производителя. У меня 103-й с USB. Написал (адаптировал) простейший пример для работы как обычная флэшка (занимает около 10 К памяти всего, причем с декодированием). Прошивка изначально кодируется и передается для обновления устройства конечному пользователю в качестве обновления ПО. Он втыкает девайс хоть в виндовый комп, хоть линуксовый и просто переписывает этот файл на получившуюся флэшку.
Так-же был вариант и с подключенным к процу скалеру (RTD2662 от Realtek), в нем стоит свой CPU с выполнением команд из SPI флэши, так при этом имитировалась флэха с двумя дисками. Один для обновления ПО управления, второй для обновления ПО скалера.

Да, конечно сначала необходимо зашить загрузчик. Зато потом голова не болит, что прошивку кто-то использует для тиражирования...
И замыкать ничего не надо при обновлении ПО. Просто втыкнуть в USB.
Установка параметров происходит аналогично, только сначала необходимо подать питание устройству - потом втыкнуть USB. Работает уже само приложение и представляется стандартным HID устройством. Работа с ним обеспечивается через SetFeature/GetFeature и не требует установки никаких специальных драйверов.
Или по аналогии с загрузчиком прикидывается так-же флэшкой, только теперь в качестве файла выступает файл параметров устройства.


--------------------
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 5 2013, 12:55
Сообщение #6


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(YAM @ Feb 4 2013, 20:14) *
Да, конечно сначала необходимо зашить загрузчик. Зато потом голова не болит, что прошивку кто-то использует для тиражирования...

Ну дык вот теперь и первый раз голова не болит - шъется штатными средствами с коробки, правда если прошивка шифрованная то тогда нада свой загрузчик и превый раз шить людым способом его.

2_demiurg_spb
есть их виндовые утилитки тока мне они не пришей, я хочу одной во всех системах шить ... хочу и буду.sm.gif
Go to the top of the page
 
+Quote Post
snowboy
сообщение Mar 4 2013, 10:40
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 7-05-11
Из: Москва
Пользователь №: 64 842



Цитата(demiurg_spb @ Feb 4 2013, 12:36) *
Что-то я не понял. Неужели ST никак не позаботился о софте под винду для работы с usb-dfu?
Помнится, что для прошивки по ком-порту были выложены и апноты и исходники...
А по делу - очень полезно, что вы попробовали-таки эту фичу. Спасибо за инфу!

Есть фирменный софт от ST, утилита DfuSe, давно её пользуюсь, работает хорошо.
Вот описание на неё: http://www.st.com/st-web-ui/static/active/.../CD00155676.pdf
Сама утилита недавно лежала на каждой страничке совместимых с ней контроллеров, сейчас её почему-то не вижу...
Если не найдёте, пишите - найду у себя на диске и пришлю.
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Aug 7 2013, 07:45
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Я малость переделал dfu-util, чтобы работала под виндой.

https://github.com/blackyblack/LPC-DfuSe-Bootloader - смотрим по ссылке ридми. Там ссылка на чуть-чуть патченную libusbx (исправляет проблему с композитным устройством в винде), ссылка на чуть-чуть патченную dfu-util (исправляет проблему записи по нулевому адресу), а также прекомпилированные бинарники и образцы драйверов (INFы).
Go to the top of the page
 
+Quote Post
V_N
сообщение Aug 9 2013, 14:35
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 12-01-09
Из: Харьков
Пользователь №: 43 270



Утилита называется STSW-STM32080 и лежит здесь

http://www.st.com/web/catalog/tools/FM147/...SS1533/PF257916
Go to the top of the page
 
+Quote Post
ВитГо
сообщение Dec 6 2014, 17:47
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 13-09-12
Пользователь №: 73 529



а ктото может подсказать консольную программу для преобразования hex в dfu ?

шить буду утилитой по ссылке выше

но вот делать dfu утилитой что дает st - издевательство какое то.. столько раз мышкой нужно щелкнуть :-(

нет ли просто консольного конвертера из hex в dfu ?
Go to the top of the page
 
+Quote Post
psL
сообщение Dec 10 2014, 08:03
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(ВитГо @ Dec 6 2014, 20:47) *
шить буду утилитой по ссылке выше
нет ли просто консольного конвертера из hex в dfu ?

можно просто bin заливать
Код
dfu-util -v -d 0483:df11 -a 0 -s 0x08000000 -D firmware.bin
или проще:
dfu-util -a 0 -s 0x08000000 -D firmware.bin
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016