搜索
bottom↓
回复: 79

STM32F4xx DFU 的一些使用心得

  [复制链接]

出0入0汤圆

发表于 2012-6-3 17:15:40 | 显示全部楼层 |阅读模式
公司以前的产品ISP用的是串口,新的产品必须使用USB口,响应的ISP就改为 DFU 了,
开始想简单了事,直接套用 STM32 DFU 库, TNND 实际使用起来既不简单又费事,关键不稳定,要不停止响应,要不PC死机,它那个驱动还用ST PIV/VID 加密了,并且驱动没有源代码.
没办法只能仔细了解 DFU 了,原来 DFU 也是一个标准, 很多的手机固件更新就是通过 DFU 来的.既然是标准就选开源的了.

以 Windows 平台为例,开发 DFU 需要准备的工具和源代码.最终建成一个不依赖 ST DFU 库的 DFU 下载工具.

A. 主工具:
1.dfu-util
这个开源工具在 0.6 版本上实现了对 stm32 DFU 的有限支持,我们就以dfu-util为基础,开发出能够通过 DFU 下载程序,又不依赖 ST DFU 库的工具软件.
dfu-util 需要 libusb 1.0 支持.
下载地址:
http://dfu-util.gnumonks.org/releases/dfu-util-0.6-win32.zip

2.libusb
libusb 1.0 使用了 WinUSB 作为底层驱动.
http://sourceforge.net/projects/ ... b-1.0/libusb-1.0.9/

B.辅助工具:
1.ST DFU Demo 库, ST DFU 对普通 DFU 作了扩充为 Dfuse, 参考他的源代码可以补充 dfu-util 中不足的 ST 命令,比如 0x92 去除读保护命令.
http://www.st.com/internet/com/S ... /SW_DEMO/um0412.zip


2.libwdi
主要使用 libwdi 的 zadig 工具,安装或生成基于 WinUSB 或者 Libusb 的驱动程序.简化驱动程序生成.
git clone git://libwdi.git.sourceforge.net/gitroot/libwdi/libwdi

3.WinDDK
如果要从源代码重新构建所有的二进制文件, WinDDK 是必须的
http://www.microsoft.com/en-us/d ... ang=en&id=11800

目前在我的Window平台上,重新编译了 dfu-util 和 zadig 工具,DFU 下载比 232 快了很多. 原来 50s 的时间,DFU完成同样的功能 ~10s
附近是用最新源代码重新编译的 dfu-util 和 zadig , 对 DFU 感兴趣的朋友可以下载测试.

attach://22434.rar

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-6-3 21:01:03 | 显示全部楼层
虽然现在用不到, 但是以后的产品可能会用,在此收藏!

出0入25汤圆

发表于 2012-6-3 21:16:13 | 显示全部楼层
DFU =  device firmware until?

出0入0汤圆

发表于 2012-6-3 21:19:16 | 显示全部楼层
我是来看2楼头像的!

出0入0汤圆

发表于 2012-6-3 22:46:44 | 显示全部楼层
DFU真的很好用,我用来做了个频率计算,速度过精度也很好,等弄好了会把工程发过来

出0入0汤圆

发表于 2012-6-3 23:15:49 | 显示全部楼层
备用

出0入0汤圆

发表于 2012-6-3 23:27:53 | 显示全部楼层
来支持下楼主吧 :)
一年多的使用经验来看,很方便。
我是用的linux端PC,dfu用了maple上使用的dfu驱动,当然也是源自openmoko的方案,同样需要dfu-util
dfu升级固件的命令的话大致如下

  1. ifeq ($(DOWNLOAD_MODE), dfu)
  2.         $(SCRIPT_PATH)/reset.py && sleep 1 && \
  3.         dfu-util -a1 -d $(VENDOR_ID):$(PRODUCT_ID) -D $(BUILD_PATH)/$(OUSIA_TARGET).bin -R
  4. endif
复制代码
具体可以到github上去自取,链接在这里:
https://github.com/LeafGrass/ousia/tree/dev
抑或直接下载的链接:
https://github.com/LeafGrass/ousia/zipball/dev

出0入0汤圆

发表于 2012-6-3 23:44:51 | 显示全部楼层
支持一下楼主,实属不易

出0入0汤圆

 楼主| 发表于 2012-6-12 15:11:47 | 显示全部楼层
今天用这些开源的库,基本搞定直接从 hex 文件用USB DFU 下载到目标板上,不再需要把 hex 转换为 DFU,省了一道工序.

出0入0汤圆

发表于 2012-6-13 14:32:21 | 显示全部楼层
zf8848 发表于 2012-6-12 15:11
今天用这些开源的库,基本搞定直接从 hex 文件用USB DFU 下载到目标板上,不再需要把 hex 转换为 DFU,省了一 ...

共享一下,让大家方便点下载

出0入0汤圆

发表于 2012-6-13 14:42:51 | 显示全部楼层
很可能用的到,先标记一下,以后再来查找

出0入0汤圆

发表于 2012-6-13 15:52:07 | 显示全部楼层
usb  学习中

出0入0汤圆

发表于 2012-6-13 16:08:07 | 显示全部楼层
我用的USB库更新固件,和DFU有区别吗?

出0入0汤圆

发表于 2012-6-13 16:31:55 | 显示全部楼层
好资料  以后可能会用到  标记下 。。                                                     

出0入0汤圆

 楼主| 发表于 2012-6-13 20:27:16 | 显示全部楼层
昨天晚上估计是天气太热的原因,我的PC崩溃了,等新的机器配置好了,就把文件传上来,不过只能传可执行型文件,源代码界面用到了商业软件 BCGSoft 17.1 的库,关键源代码就在上面的开源软件中.

今天装机器真不顺利,先是 Win7 x64 SP1 无法完全识别 3T 硬盘, 然后就是 RAID 设置死活不起作用, 现在是激活又出了问题. 不过方法总比问题多,早晚会解决.

出0入0汤圆

发表于 2012-6-13 23:00:06 | 显示全部楼层
不错的资料。

出0入0汤圆

发表于 2012-6-14 05:56:08 | 显示全部楼层
支持支持

出0入0汤圆

发表于 2012-7-1 18:13:04 | 显示全部楼层
STM32的DFU确实挺好用的。

出0入0汤圆

发表于 2012-7-2 16:19:37 | 显示全部楼层
请问楼主,是不是stm32f4 144的外扩sram和DCMI摄像头和SD卡,是不是不能共用,dcmi的D2,D3和sram的nbl0,nbl1,和sdio的D0,D1都冲突在一起了

出0入0汤圆

 楼主| 发表于 2012-7-2 17:30:10 | 显示全部楼层
first_blood 发表于 2012-7-2 16:19
请问楼主,是不是stm32f4 144的外扩sram和DCMI摄像头和SD卡,是不是不能共用,dcmi的D2,D3和sram的nbl0,nb ...

这个我没有测试过,没有用到 SD 和 摄像头。

出0入0汤圆

发表于 2012-7-24 20:20:43 | 显示全部楼层
最近,参考楼主的资料,编写了DFU软件。没有想想的那么复杂。毕竟只是为了烧录。
主要是搞清楚DFU标准上的“状态转移图”。并且通过bus bound软件,检测整个STM32 DFU官方软件的下载过程。

出0入0汤圆

发表于 2012-9-13 15:27:14 | 显示全部楼层
楼主在WINDOW下是怎么编译的,是用的MINGW来编译的吗?

出0入0汤圆

发表于 2012-9-13 16:18:21 | 显示全部楼层
我也是来看头像的

出0入0汤圆

发表于 2012-9-13 22:28:57 | 显示全部楼层
标记,搞不定那天也需要

出0入0汤圆

 楼主| 发表于 2012-9-13 22:52:36 | 显示全部楼层
直接用VC++编译的,没有用MingW

出0入0汤圆

发表于 2012-9-13 22:54:11 | 显示全部楼层
好东西,受教了。

出0入0汤圆

发表于 2012-11-2 11:44:41 | 显示全部楼层
MARK,学习

出0入0汤圆

发表于 2012-11-2 11:46:21 | 显示全部楼层
标记一下,慢慢学习

出0入0汤圆

发表于 2012-11-22 14:08:48 | 显示全部楼层
您好  看了您的DFU使用心得文章后有些问题想请教您
我用dfu-util -l指令可查到设备(PID VID) 但name是"UNDEFINED"
下载固件时他会显示can't open device 无法开启DFU设备
用ST官方demo没问题
请问问题会是在哪里 谢谢

出0入0汤圆

发表于 2013-2-3 15:57:21 | 显示全部楼层
留个脚印

出0入0汤圆

发表于 2013-2-3 17:10:36 | 显示全部楼层
这个号啊!

出0入0汤圆

发表于 2013-2-22 15:20:59 | 显示全部楼层
做个记号

出0入0汤圆

发表于 2013-8-8 16:10:51 | 显示全部楼层
楼主 能否写个教程 普及普及 我们这帮新手

出0入0汤圆

发表于 2013-8-29 10:30:23 | 显示全部楼层
学习中。。。

出0入0汤圆

发表于 2013-9-12 14:31:25 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2013-9-18 21:39:49 | 显示全部楼层
支持,标记一下,方便查找

出0入0汤圆

发表于 2013-9-23 19:17:45 | 显示全部楼层
马上要用到,学习,感谢

出0入0汤圆

发表于 2013-9-26 14:16:21 | 显示全部楼层
您好,我使用ST的 DFU File Manager产生DFU文件,产生的只是一个头文件,大小只有1K左右,我确定我的BIN文件时800多K,请问这是怎么回事啊?

出0入0汤圆

发表于 2013-9-26 16:33:48 | 显示全部楼层
先学习下,还木有用过STM32F4系列的。

出0入0汤圆

发表于 2013-9-26 17:05:28 | 显示全部楼层
先标记下。

出0入0汤圆

发表于 2013-10-2 16:04:34 来自手机 | 显示全部楼层
收藏中     

出0入0汤圆

发表于 2013-10-2 16:44:54 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-10-2 19:10:10 | 显示全部楼层
不懂 顶起

出0入0汤圆

发表于 2013-11-19 16:29:03 | 显示全部楼层
谢谢楼主,有空来弄一个

出0入0汤圆

发表于 2013-11-19 20:05:31 | 显示全部楼层
好资料,学习了

出0入4汤圆

发表于 2013-11-21 08:03:45 | 显示全部楼层
值得标记!

出0入0汤圆

发表于 2014-1-14 20:54:22 | 显示全部楼层
这个不错  标记一下

出0入0汤圆

发表于 2014-1-15 10:52:47 | 显示全部楼层
我正想着,直接拿F4内部FLASH虚拟成一小小的U盘,PC上 只需把文件COPY进去,就IAP完成了。 免驱动纯傻瓜式操作。

这年头,嵌入式软件越来越复杂,都等到软件完美了再销售,公司都垮了。只能是差不多了就先卖起来,将来让用户远程升级软件。



出0入0汤圆

发表于 2014-1-15 11:03:30 | 显示全部楼层
值得学习啊。

出0入0汤圆

发表于 2014-1-17 15:46:17 | 显示全部楼层
正在研究,学习

出0入0汤圆

发表于 2014-1-17 16:50:27 | 显示全部楼层
收藏了               

出0入0汤圆

发表于 2014-1-17 16:57:09 | 显示全部楼层
mark     

出0入0汤圆

发表于 2014-1-17 17:00:44 | 显示全部楼层
标记,说不定哪天就用到了

出0入0汤圆

发表于 2014-1-18 15:49:43 | 显示全部楼层
mark 以后学习

出0入0汤圆

发表于 2014-5-13 18:20:39 | 显示全部楼层
感谢楼主,太谢谢了,正好需要用到

出0入0汤圆

发表于 2014-8-25 21:09:25 | 显示全部楼层
最近也在做STM32的DFU功能,就卡在上位机开发了,上位机永远是做嵌入式的心中的痛。。。

出0入8汤圆

发表于 2015-1-9 16:26:10 | 显示全部楼层
看着好高端啊,没看懂,研究会

出0入0汤圆

发表于 2015-5-19 08:13:52 | 显示全部楼层
没用过usb,但是看了感觉好牛逼的样子,留下来。等哪天详细研究下

出0入0汤圆

发表于 2015-5-20 06:55:15 | 显示全部楼层
好资料  以后可能会用到  标记下 。。                                 

出0入0汤圆

发表于 2015-5-28 14:20:00 来自手机 | 显示全部楼层
stm32f407可以用usb hs口做dfu吗?

出0入0汤圆

发表于 2015-5-28 14:20:20 来自手机 | 显示全部楼层
stm32f407可以用usb hs口做dfu吗?

出0入0汤圆

发表于 2015-6-11 18:27:38 | 显示全部楼层
楼主大能 好,小的按照你给的资料试了 用mingw编译成功了 但是下载的时候使用 —D 参数时 提示opening  DFU capable USB device....cannot opne device,想请教下楼主怎么弄的啊

出0入0汤圆

发表于 2015-6-11 18:29:09 | 显示全部楼层
white 发表于 2012-11-22 14:08
您好  看了您的DFU使用心得文章后有些问题想请教您
我用dfu-util -l指令可查到设备(PID VID) 但name是"UNDE ...

你好 我的问题和你一样  你解决了么 求教

出0入0汤圆

发表于 2015-8-21 22:12:08 | 显示全部楼层
好帖子,正好学习,下载学习学习

出0入0汤圆

发表于 2015-8-22 08:48:08 | 显示全部楼层
很不错,鱼鱼渔兼有

出0入0汤圆

发表于 2015-9-21 11:47:54 | 显示全部楼层
谢谢分享,pixhawk可以使用dfu升级bootloader,nice

出0入0汤圆

发表于 2015-9-22 16:05:07 | 显示全部楼层
谢谢分享,正需要

出0入0汤圆

发表于 2015-11-5 10:11:46 | 显示全部楼层
Hex文件转换dfu文件总是失败,bin也试过了,求楼主有没有更好的工具?(官方的dfu file manager 不行)

出0入0汤圆

发表于 2015-11-25 17:11:06 | 显示全部楼层
mark 谢谢楼主

出0入0汤圆

 楼主| 发表于 2016-1-21 22:59:32 | 显示全部楼层
楼主早已不搞 DFU 了.

出0入0汤圆

发表于 2016-9-8 15:35:16 | 显示全部楼层
在用这个工具,感谢

出0入0汤圆

发表于 2016-9-8 23:54:21 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2016-9-30 14:40:10 | 显示全部楼层
这个比较好,正在搞这玩意,先标识下。

出0入0汤圆

发表于 2020-2-20 12:18:08 | 显示全部楼层
最近正在弄DFU上位机,困难很多

出0入0汤圆

发表于 2020-2-20 12:31:14 来自手机 | 显示全部楼层
很复杂的感觉

出0入0汤圆

发表于 2020-2-20 12:36:18 | 显示全部楼层
必须按键,也就是BOOT0,才能进入DFU模式吗?有没有软件方式进入方式,毕竟很多设备没有按键

出0入0汤圆

发表于 2020-2-20 14:33:41 | 显示全部楼层
想玩这个,但不会

出0入0汤圆

发表于 2020-2-20 15:06:36 | 显示全部楼层
以后的产品可能会用,在此收藏!

出0入0汤圆

发表于 2020-3-9 09:22:55 | 显示全部楼层
PC 软件需要重新搞个外壳啊

出0入0汤圆

发表于 2020-3-10 15:17:35 | 显示全部楼层
dfu有空学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 18:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表