硬汉嵌入式论坛

 找回密码
 立即注册
查看: 44866|回复: 48
收起左侧

[其它] 官方DFU固件更新软件实现对STM32的USB方式代码升级简易说明(STM32-V5开发板)

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2015-7-17 16:50:27 | 显示全部楼层 |阅读模式
2020-02-21将此软件升级到最新的V3.0.6
软件下载: en.stsw-stm32080.zip (17.74 MB, 下载次数: 23002)
(特别说明,此软件含有官方的VS平台的源码文件)
前几天在论坛发布了使用串口ISP进行代码下载,这次再讲解下使用USB接口进行代码下载.
DFU的全称是Device Firmware Upgrade,即设备固件升级。

第一步:下载了官方DFU软件后,安装软件包,安装完毕后带开这个软件的安装路径需要再安装下STM32的USB驱动。路径如下(根据电脑系统选择安装X86还行x64):
1.png

第二步:USB驱动安装上以后,用USB线将电脑和开发板连接,USB线接到开发板的这个USB口上:
1.png

第三步:让开发板进入ISP模式,在电脑的资源管理器里面可以看到已经识别出USB
2.png

第4步:打开此路径下的这个软件:
4.png

选择这个选项
5.png

打开后后效果如下:
5.png

通过这个软件将bin文件,hex文件或者S19文件转换成DFU文件格式。老版本会弹出下面的错误,新的V3.0.6没有这个问题。
6.png

第5步:DfuFileMgr小软件里面有几个参数需要大家填好。
(1)Vendor ID,Product ID,和Version ID需要通过如下小软件进行获取:
7.png

打开软件后,参数在这里:
8.png

将其填写到DfuFileMgr里面:
9.png

(2)填写Target ID,这里填写0即可(填写其它数值的用途还没有研究)
10.png

(3)Target Name选项里面添写个名字即可,这里填写了个LED
11.png

(4)点击此选项,添加bin文件
12.png

(5)IAR和MDK工程生产bin文件的方法看这个帖子:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=7097

(6)添加bin文件:
13.png

(7)点击生产即可
14.png

特别注意,这个软件似乎有bug,不管你将生成的dfu文件保存到哪里,最终一定在安装目录的这个文件里面:
15.png

第6步:再次打开小软件DfuSeDemo,加载刚才的led.dfu。
16.png

第7步:提示加载完毕,并选择这个选项:
16.png

最后一步,点击Upgrade按钮:
17.png

18.png


重启开发板就可以运行了。
回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2015-11-5 10:05:07 | 显示全部楼层
老大,我运行到第七步了,但是生成的dfu文件不知道保存到哪里了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2015-11-5 10:39:24 | 显示全部楼层

回 casy99 的帖子

casy99:老大,我运行到第七步了,但是生成的dfu文件不知道保存到哪里了? (2015-11-05 10:05) 
第6步上面有写。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2015-11-8 11:35:20 | 显示全部楼层
这个可以支持F103吗?

需要在自己的应用代码中加入USB的相关代码吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2015-11-9 08:57:19 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:这个可以支持F103吗?

需要在自己的应用代码中加入USB的相关代码吗? (2015-11-08 11:35) 
可以的。
DFU跟ISP下载模式一样,都是用芯片memory flash区自带的bootloader。
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
发表于 2016-1-14 18:22:48 | 显示全部楼层
既然可以用USB来升级固件,那使用USB的时候,用的时钟是内部HSI吗?也就是说,可以利用HSI来做USB的应用,里面的8MHz可以认为足够精确?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2016-1-14 22:10:33 | 显示全部楼层

回 lvehe 的帖子

lvehe:既然可以用USB来升级固件,那使用USB的时候,用的时钟是内部HSI吗?也就是说,可以利用HSI来做USB的应用,里面的8MHz可以认为足够精确? (2016-01-14 18:22) 
HSI也可通过PLL倍频。
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
发表于 2016-1-15 11:50:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:HSI也可通过PLL倍频。 (2016-01-14 22:10) 
倍频,我知道,只是不清楚用内部晶振是否可以达到USB时钟要求的精度要求,这样可以省了外部HSE。
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
发表于 2016-8-4 11:32:47 | 显示全部楼层
感恩分享,点击Upgrade后,出现,“bad state machine in firmware”错误提示,如何解决?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2016-8-4 11:46:45 | 显示全部楼层

回 calming 的帖子

calming:感恩分享,点击Upgrade后,出现,“bad state machine in firmware”错误提示,如何解决? (2016-08-04 11:32) 
没有遇到过这种情况,多折腾几次试试看,有时候的确不太好用。
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
发表于 2016-8-5 08:52:45 | 显示全部楼层
感恩分享,给楼主挑个刺,  [s:116] ,第六步:添加bin文件,Address不应该是0x08000000,应该是user application的地址,也就是要下载的程序的地址,比如0x08003000,或者其他用户定义的地址,不知道楼主如何看?我用0x08000000,感觉不对,改成0x08003000,下载的程序就运行成功了
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
发表于 2016-8-5 08:57:14 | 显示全部楼层

回 calming 的帖子

calming:感恩分享,点击Upgrade后,出现,“bad state machine in firmware”错误提示,如何解决? (2016-08-04 11:32)
这个问题终于解决了,感觉是DfuSeDemo的问题,还没有彻底搞清楚,我在USB IAP程序中,把要刷新的程序地址,改为大于0x08003000,然后用DfuSeDemo下载程序,就出现错误提示,如果把USB IAP程序里的 ApplicationAddress 改为0x08003000,就可以正常下载,但不知道原因。楼主怎么看?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2016-8-5 11:58:16 | 显示全部楼层

回 calming 的帖子

calming:感恩分享,给楼主挑个刺,  [s:116] ,第六步:添加bin文件,Address不应该是0x08000000,应该是user application的地址,也就是要下载的程序的地址,比如0x08003000,或者其他用户定义的地址,不知道楼主如何看?我用0x08000000,感觉不对,改成0x08003000,下载的程序 .. (2016-08-05 08:52)
你用的这种方式跟我们的有区别,我们的是用的STM32芯片内部自带的bootloader,这个bootloader是固化在系统存储区的,就是往0x08000000里面下载的。
类似与串口ISP下载,有用过没有,一样的。
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
发表于 2016-8-8 09:26:03 | 显示全部楼层

回 eric2013 的帖子

eric2013:你用的这种方式跟我们的有区别,我们的是用的STM32芯片内部自带的bootloader,这个bootloader是固化在系统存储区的,就是往0x08000000里面下载的。
类似与串口ISP下载,有用过没有,一样的。
 (2016-08-05 11:58) 
谢谢楼主的回复,明白您的意思,应该是我们的下载方式有差异。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2016-10-14 14:15:26 | 显示全部楼层
很详细,有用
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2017-2-13 13:58:19 | 显示全部楼层
为什么我打开那个DFU升级软件 最上面 DFU Deivce  里面没有东西的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2017-2-13 14:02:36 | 显示全部楼层

回 877724692 的帖子

877724692:为什么我打开那个DFU升级软件 最上面 DFU Deivce  里面没有东西的 (2017-02-13 13:58)
多试试,重启下电脑啥的,熟悉这个软件得稍少花点时间折腾下,这个软件比较难用。
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2017-3-13 11:03:25 | 显示全部楼层
如果能够一拖几同时进行下载呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2017-3-13 11:48:55 | 显示全部楼层

回 congcong245 的帖子

congcong245:如果能够一拖几同时进行下载呢 (2017-03-13 11:03) 
这个不支持哦。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-5-8 14:44:12 | 显示全部楼层
一定要WIN7 WIN8吗,XP下能用吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2017-5-8 15:12:57 | 显示全部楼层

回 zerone 的帖子

zerone:一定要WIN7 WIN8吗,XP下能用吗 (2017-05-08 14:44) 
这个得试试了,或者从官网搜索下stsw-stm32080 ,看看是不是有升级版本,看看加入XP了没。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2018-1-5 20:26:11 | 显示全部楼层
需要改BOOT0,BOOT1的引脚电平吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-1-6 01:33:14 | 显示全部楼层
zerone 发表于 2018-1-5 20:26
需要改BOOT0,BOOT1的引脚电平吗

是的,要进入ISP下载模式。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2018-1-6 09:58:53 | 显示全部楼层
那是不方便,实际产品可能都装在里面拆开麻烦。还是自己写BOOTLODER,用IAP实现方便
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-1-6 10:21:58 | 显示全部楼层
zerone 发表于 2018-1-6 09:58
那是不方便,实际产品可能都装在里面拆开麻烦。还是自己写BOOTLODER,用IAP实现方便

也可以不设置的,要升级程序时,直接往系统bootloader跳转,之前有群友测试过,可行。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2018-2-7 11:41:38 | 显示全部楼层
有没有  F4 DFU的源码?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-2-7 14:19:40 | 显示全部楼层
chen_w_b 发表于 2018-2-7 11:41
有没有  F4 DFU的源码?

这个没有源码,这个是用的F4的系统存储区自带的。
回复

使用道具 举报

8

主题

18

回帖

120

积分

初级会员

积分
120
发表于 2018-5-24 11:03:39 | 显示全部楼层
楼主,点击Upgrade后,出现,“bad state machine in firmware”错误提示,如何解决?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-5-24 11:06:26 | 显示全部楼层
韦冠 发表于 2018-5-24 11:03
楼主,点击Upgrade后,出现,“bad state machine in firmware”错误提示,如何解决?

多试试,这个软件还是比较难用的,只能多试试了。
回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2018-7-30 11:46:31 | 显示全部楼层
楼主,我想问下,这个软件从Upload 和 Upgrade有什么区别啊,为什么我从Upgrade上传时错误,从Upload正常啊
回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2018-7-30 13:41:45 | 显示全部楼层
换了一根线就成功了,仿佛心在滴血
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-7-30 14:01:07 | 显示全部楼层
蜈蚣 发表于 2018-7-30 11:46
楼主,我想问下,这个软件从Upload 和 Upgrade有什么区别啊,为什么我从Upgrade上传时错误,从Upload正常啊

Upload在哪里,发个截图看下
回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2018-7-30 14:43:28 | 显示全部楼层
eric2013 发表于 2018-7-30 14:01
Upload在哪里,发个截图看下

不明白这两种方式有什么区别啊
dfu.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-7-30 15:10:16 | 显示全部楼层
蜈蚣 发表于 2018-7-30 14:43
不明白这两种方式有什么区别啊

没用过这个Upload功能,这个应该是上传文件用的。


Upgrade是更新程序用的。

回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2018-7-30 15:19:44 | 显示全部楼层
eric2013 发表于 2018-7-30 15:10
没用过这个Upload功能,这个应该是上传文件用的。

主要是我从Upload和Upgrade都可以更新固件啊,不明白干嘛要搞两个
顺便问下ISP是进入CPU固化的Bootloader,IAP是进入自定义的Bootloader吗
ISP是有两个bootloader吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-7-30 15:27:47 | 显示全部楼层
蜈蚣 发表于 2018-7-30 15:19
主要是我从Upload和Upgrade都可以更新固件啊,不明白干嘛要搞两个
顺便问下ISP是进入CPU固化的Bootloade ...

1、Upload仅仅是表示更新上传文件。而Upgrade是带有校验等功能的,Upload肯定没有。

2、一个意思,不必区分,都仅需要一个bootloader。

回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2018-7-30 15:43:41 | 显示全部楼层
eric2013 发表于 2018-7-30 15:27
1、Upload仅仅是表示更新上传文件。而Upgrade是带有校验等功能的,Upload肯定没有。

2、一个意思,不 ...

我有点不明白,如果只有一个bootloader,怎么更新bootloader?bootloader更新自己之前,要擦除自己,那还能运行吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-7-30 15:45:54 | 显示全部楼层
蜈蚣 发表于 2018-7-30 15:43
我有点不明白,如果只有一个bootloader,怎么更新bootloader?bootloader更新自己之前,要擦除自己,那还能 ...

系统bootloader是无法擦除的。自己写的bootloader随意了。
回复

使用道具 举报

0

主题

5

回帖

12

积分

新手上路

积分
12
发表于 2018-7-30 15:51:17 | 显示全部楼层
eric2013 发表于 2018-7-30 15:45
系统bootloader是无法擦除的。自己写的bootloader随意了。

那就是两个bootloader咯,刷写bootloader过程就是进入系统的bootloader。进行刷写自定义的bootloader?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
 楼主| 发表于 2018-7-30 16:05:55 | 显示全部楼层
蜈蚣 发表于 2018-7-30 15:51
那就是两个bootloader咯,刷写bootloader过程就是进入系统的bootloader。进行刷写自定义的bootloader?

刷自己的bootloader不需要进入系统bootloader。

直接下载就好了,用不上系统bootloader的。

这么个问题就讨论这么多吧,收尾,你按照你的方式理解也可以的,会用了就行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 01:26 , Processed in 0.335417 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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