STM32F4 Поддержка и DFU

Dberenguer
Солнце 06 августа 2017 18:00
Дорогие друзья,

Во -первых, я хочу поздравить команду STM32Duino с тем, что он так долго сохранял эту инициативу. Я лично посещал эти форумы снова и снова, прежде чем начать множество различных проектов, просто пытаясь обнаружить современное ядро ​​STM32, наконец, полностью поддерживаемое Arduino IDE. Меня особенно интересует низкомосная семья STM32 Micros, которые, кажется, еще не поддерживаются из Arduino IDE. Тем не менее, все еще существует ядро ​​STM32F407, которое кажется очень удобным для некоторых других проектов, которые я имею в виду, и последние новости, похоже, указывают на то, что это ядро ​​теперь поддерживается Arduino IDE.

Большинство моих досок должны быть вспыльными fvia uart или usb. Доска Discovery, сделанные STM, включают в себя программист JTAG, но это не вариант в моем случае. Вместо этого я хотел бы использовать функцию DFU, доступную на MCU STM32 по умолчанию. Я прочитал пост Роджера Кларка о том, как первое обновление прошивки действительно заменяет DFU новым серийным бот -загрузчиком для плат STM32F103.

http: // www.Rogerclark.net/arduino-stm32 ... l-and-dfu/

Это все еще верно для платформ STM32F4?

Допустим, я строю свою собственную плату STM32F407 и выбираю «STM32 Discovery F407» из инструментов->Доски. Я ожидаю, что JTAG станет механизмом обновления по умолчанию для этой платы. Есть ли другая доступная доска, которую я мог бы взять в качестве отправной точки вместо Discovery One? Пожалуйста, примите во внимание, что я хочу обновить через Native USB.

Какие функции все еще отсутствуют для плат STM32F4 по запросу из Arduino?

Спасибо за ваше время и руководство.

Martinayotte
Солнце 06 августа 2017 8:47 вечера
Основная причина загрузчика состоит в том, что F1XX не имеет DFU в кремниевом уровне первого этапа, в то время как F4XX обеспечивает DFU даже с пустой вспышкой.
Вы все еще можете захотеть иметь загрузчик в F4XX, если вы не хотите нажимать кнопку Boot0 и иметь автоматический DFU.

Rogerclark
Солнце 06 августа 2017 22:22
Сейчас есть лучшие ядра Arduino для F4.

У STM есть свое собственное ядро, и @danieleff имеет свое собственное ядро ​​STM32_Generic.

Я бы посоветовал, чтобы вы использовали один из них в предпочтении моего ядра, для новых разработок

Dberenguer
Пн, 07 августа 2017 г. 7:17 утра
Спасибо, ребята, за ваши ответы,

Я устанавливаю против https: // github.com/stm32duino/boardmana ... индекс.json. Я думал, что это репо уже включало ядер STM. Я прав?

Выбор из инструментов->Доски->Открытие, а затем из инструментов->Номер детали доски->STM32F407G DISC1 предлагает два различных метода загрузки: ST-Link и Mass Storage. Оба, кажется, поддерживаются только бортовым чипом JTAG, поэтому мне все еще интересно, как я могу загрузить новый код через DFU по нативному USB. В противном случае я мог бы легко позвонить в DFU-UTIL из Arduino для моего варианта, но мне интересно, уже поддерживается ли это любым другим вариантом прямо сейчас. Пост Роджера о ограничении драйверов DFU при смешивании со стандартной серийной функциональностью заставляет меня думать, что это, вероятно, не лучший подход.

Извините, ребята за эти основные сомнения.

Rogerclark
Пн, 07 августа 2017 г. 7:34
Я думаю, что любой метод загрузки должен работать на этой плате, поскольку у него есть выделенный чип STM32F103 для обработки загрузок, независимый от основного F4 MCU

Dberenguer
Пн, 07 августа 2017 г. 8:06 утра
Хорошо, но что, если я использую одну из этих простых досок?
http: // www.eBay.com/itm/stm32f4-discove ... SWL1HZDWGE

У них нет отдельного чипа эмулятора JTAG или DFU, поэтому я хотел знать, сможет ли Arduino обрабатывать DFU через родной USB -порт на STM32F407 MCU.

еще раз спасибо,

Стивестронг
Пн, 07 августа 2017 г. 8:22 утра
Если я установите Boot0 на 3.3V на моей черной плате F4, это устройство распознается Win10 64Bit:
STM32F4 DFU Device.jpg
STM32F4 DFU Устройство.JPG (38.81 киб) просмотрено 850 раз

Rogerclark
Пн, 07 августа 2017 г. 8:34
Я не знаю, работает ли F4 в DFU с обычным DFU-UTIL

Я думаю, что вам нужна утилита DFUSE для загрузки

Dberenguer
Пн, 07 августа 2017 г. 9:25 утра
Большое спасибо за всю информацию.

Пито
Пн, 07 августа 2017 г. 10:25
Посмотрите, как работает DFU-UTIL с F407:

http: // www.STM32duino.com/viewtopic.PHP ... = 10#P32281

Rogerclark
Пн, 07 августа 2017 г. 10:46 утра
@pito

Вы уверены, что используете EXE DFU -UTIL, который в моем репо, потому что, насколько я могу судить, мой не поддерживает опцию -s, которую вы используете в примере командной линии в другом потоке

Пито
Пн, 07 августа 2017 г. 10:50
@Roger, я использую 64 -битную версию, загруженную где -то.
Отсюда

https: // sourceforge.net/projects/dfu-util/

Rogerclark
Пн, 07 августа 2017 г. 10:52
Вы можете отправить мне это по электронной почте ?

Роджер в Рогеркаларке.сеть ?

Пито
Пн, 07 августа 2017 г. 10:59
https: // sourceforge.net/projects/dfu-ut ... t/скачать

Readme: uint32_t flags = (DMA_MINC_MODE | DMA_FROM_MEM); if (!transmitBuf) { transmitBuf = &ff; flags &= ~DMA_MINC_MODE; } dma_setup_transfer(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, &_currentSetting->spi_d->regs->DR, dma_bit_size, transmitBuf, dma_bit_size, flags);

Rogerclark
Пн, 07 августа 2017 11:08
Спасибо

Rogerclark
Пн, 07 августа 2017 г. 11:15 утра
Ммм

Это все еще не работает для меня
Note: Before setting an Enable control bit to ‘1’, the corresponding event flag should be cleared, otherwise an interrupt is immediately generated.

Пито
Пн, 07 августа 2017 г. 11:23
Обновление: я попробовал с моим черным F407ZE в первый раз над USB DFU, в основном та же доска, что и у вас. Win7 64 -бит.
1. Я установил Boot0 на 3.3V (был GND)
2. Unplug/Plug USB (Power Off/on the Poard)
3. Он распознал USB -устройство и установил загрузчик STM32 (драйвер Libusbk, 1/1/2014, V 3.0.7.0, Dig Signer USB \ vid_0483&PID_DF11 (LIBWDI Autogenerated))
4. Я управлял dfu-util и загрузил "D.bin "ОК
Примечание: 3. - Это было сделано автоматически Win7 64 -битным в моем случае, информация о Libusbk от Devman

Afaik я установил Libusbk через последний инструмент Zadig - http: // zadig.Акео.т.е./ [Пока ваша плата подключена, вы открываете инструмент Zadig, опции->Перечислите все устройства, а затем выберите свое устройство - вы увидите раскрывающий список со всеми подключенными USB -устройствами, затем выберите драйвер для этого устройства и установите]

Я думаю, что все проблемы с DFU связаны с драйвером на стороне ПК..

Rogerclark
Пн, 07 августа 2017 12:03
@pito

Спасибо

Использование Zadig (которое у меня уже было на машине) для установки драйвера Libusb, исправил это для меня.

Мне нужно выяснить, какая версия Libusb устанавливается установщиком Libwdi, так как она не совместима с внутренним DFU в F4 :-(

Пито
Пн, 07 августа 2017 12:08
DFU-UTIL Readme выше указывает на исправление из-за кремниевой ошибки в STM32F2..

AG123
Ср. 09 августа 2017 г., 17:46
Я использовал что -то похожее на эту сеть
https: // acassis.WordPress.com/2015/12/1 ... STM32F407/
dfu -util -d 0483: df11 -a 0 -s 0x08000000 -d эскиз.бин
Я часто ухожу с
dfu -util -a 0 -s 0x08000000 -d эскиз.бин
Если есть только одно устройство DFU

Это в Linux, хотя
-S 0x08000000 является необходимым параметром для DFUSE (DFU STM)

Я предполагаю, что, как вы можете сделать dfu -util -l, он, вероятно, будет работать с установкой эскиза с параметрами -s 0x08000000

Rogerclark
Ср. 09 августа 2017 г., 21:05
В окнах ... Причина, по которой я не мог DFU до F4, была в два раза.

1. Драйвер Libusb, который мы используем для F1 DFU, не работает правильно с F4
2. Версия DFU-UTIL, которую мы используем с F1, не совместима с DFUSE, необходимым для F4

Я думаю, что, возможно, и драйвер, и версия DFU-UTIL, которые включены в ядро, должны быть обновлены.

Тем не менее, мне нужно подтвердить, что обе эти работают с F1

Как все это работает