你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

通过 DfuSe 工具控制程序跳进 DFU 模式

[复制链接]
STMCU-管管 发布时间:2019-2-18 17:55
1 前言
9 r% c7 L# O( B" b$ ^" K
+ w4 x+ X! W9 l
我们之前经常有讲到过如何通过 USB 的 DFU 方式来对固件进行升级,在示例中我们通常是通过一个按键来触发 APP 跳转到 BOOT 从而进入到 DFU 升级模式。但是也有一种情况,客户的环境是没有任何按键或者其它触发条件,只有一 个 USB 口连接运行 windows 操作系统的上位机。这不,前不久就碰到这么个客户,下位机 MCU 端仅仅只有一个 USB 口连 接上位机,且 MCU 端与上位机之间的 USB 是常连的,并不能通过 USB 的拔插操作来触发 APP 的跳转,在此情况下,我们 又该如何来实现客户的需求?( W& Z1 Z4 @9 ]2 N
  X" f& X7 S# f2 T/ ?
2 分析
9 _& V3 T$ y2 O3 s! h6 T2 a
11.png

3 w5 d" b  A+ j* d" r" H/ J如上图所示,在 MCU 内部 FLASH 中,BOOT 与 APP 同时存在,BOOT 为 DFU 模式,负责对固件进行升级,而 APP(Runtime 模式)为客户的应用程序。当 APP 运行时,通过某个事件触发(DFU_DETACH)程序从 APP 跳转到 BOOT 中从而进入到 DFU 模式中。
0 ?, |5 ?% }% v# }6 D* x& g' x4 Z  Z+ t; Y
22.png

4 P0 b- I2 Z4 \$ l4 e3 m# m$ ^这个 DFU_DETACH 的操作在这里我们可以通过 PC 端软件 DfuSe Demo 来触发。
; o6 J3 L! D' ^/ b( G" S
33.png

$ L0 h: k8 O$ L' t* |  q在进入到 DFU 模式时,DfuSe Demo 软件的运行界面如上所示,上图界面中有一个“Leave DFU mode”的按键,通过 它可以使运行在 MCU 的程序从 DFU 模式切换到 APP 中。同时我们也发现,在按键“Leave DFU mode”的左边有一个灰色按 键“Enter DFU mode/HID detach”,从字面就可以知道,它应该是进入到 DFU 模式的按键,在 APP 模式下此按键应该是激活 的,但是,在进入到 APP 模式后,此界面就检测不到 DFU 设备了,此软件将不再可用。那么我们又将如何来激活这个“Enter DFU mode/HID detach”按键呢?
2 F+ {' V% m" X
5 \5 t) N( f7 O, @从帮助文档可知,在 APP 模式时,当 DfuSe Demo 这个软件识别到一个特定的 HID 设备时,“Enter DFU mod/HID detach”按键将激活,通过进一步了解,我们知道此时 DfuSe Demo 这个软件是需要使能此项功能才可以,所幸地是,我们已 经有了此软件,在与此文对应的附件中,可以找到一个名为 DfuSeDemo_A.exe 的可执行程序,将它拷贝到 DfuSeDemo 的 安装目录下,如下图所示:
4 b" k8 |, ?* P
6 u6 Y9 w3 M' b) H
44.png

% R8 C7 x' m' u" N如上图所示,在 APP 模式下时,当程序检测到有效的 HID 设备时,DfuSe Demo 的”Available DFU Device”下拉框中会显示 这个 HID 设备,并且“Enter DFU mode/HID detach”按键激活。当按下此键时,MCU 会重启并进入到 DFU 模式。当然此 APP 是需要实现一个符合某种要求的 HID 设备才行。下面我们通过制作这样一个 APP 来讲解。 & Q4 p6 @' O" d8 c; P
0 A* F, Q1 B  O. x2 h
3 制作 APP 6 l* |9 ?2 }$ g. ]  ?

) l6 w9 Q& m+ |( Z! k$ p我们基于之前 DFU 培训时使用的 STM32F072-Discovery 板来实现此 APP。 打开 STM32CubeMx 软件新建一个基于 STM32F072RB 的工程,使能 USB 和 RTC 外设,RTC 我们主要用它的备份域寄存 器,用来保存跳进入到 DFU 模式的标志; Pinout 如下所示:
5 B3 l5 A- y: K% M3 w2 h+ P
0 V& f* }$ S' A& i9 K1 N
使用 HSI48 作为系统时钟源,同时给 USB 提供 48M 时候,这样可以省一个外部晶振,RTC 就使用 LSI 时钟源,我们不要求 它的时间精确度,只求备份域寄存器可用。
$ u/ N- h! _) V" K' k& C
66.png
! o' ~& `% ?4 Z$ ~8 |2 e1 a
.................
$ v8 A* `! P) R; h& p# W) }5 f
0 Y1 i5 [' j: H1 ^. x# |0 [( A
想了解更多,请下载原文阅读

' N( M! G) [) e1 D) @! {+ N
+ Q4 K, d& l7 f+ W, i
8 O6 [8 l: W4 p/ p$ L! |

  a9 t- T9 p) x0 Q/ f' D
赞 收藏 1 评论7 发布时间:2019-2-18 17:55

举报

7个回答
七哥 回答时间:2019-2-18 20:36:28
今天刚在中文官网看过这个,PDF能下载,压缩包下载不了。
一代睡神的崛起 回答时间:2019-2-19 08:44:49
学习了
Kevin_G 回答时间:2019-2-19 11:35:04
已收藏
xujiantj 回答时间:2019-2-19 15:28:55
感谢分享
jxchen 回答时间:2019-2-27 21:49:47
棒棒棒~~~~~~~~~~~~~~~
ykyong918 回答时间:2019-7-20 17:37:05
有哪位大哥,已经实现了,能发上共享一下吗,附件也找不到。
zhongmeijun007 回答时间:2020-10-16 01:50:02
我也没有,要时自己改估计要硬啃协议了
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版