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

像使用U盘一样,升级STM32  

[复制链接]
wudianjun2001 发布时间:2015-12-4 08:28
有没有想过,像使用U盘一样升级STM32固件,非常简单,非常方便
9 t- c0 j& f- t: ^* p- o0 ?/ z0 ?, ~$ k5 Y& D& X
1:        插入电脑USB接口
1 B8 ]4 ~/ z7 {5 y: |2:        把升级固件拖到设备盘符
8 U+ B+ v  |; t9 D* L! ?3:        升级完成

4 k+ b7 u5 V, V- W9 ?1 Y4 k% u$ e: _' x# n! u- g7 }) n
7 J7 Y2 T( ]# U/ S# F
抛弃繁琐的USB DFU,抛弃落后的串口升级,让我们来谈谈U盘升级STM32
/ t. A- I# o: s; D: X: [4 H6 T, E4 ~
1. 为什么设计这个BOOT LOADER
3 |' V8 A# Q( a; d( `9 C+ H. `! S( j, Q+ ^2 D6 Y6 Y+ I
在电子产品开发过程中,为了满足市场需要,经常是先开发出一个简单可用的版本,然后逐步迭代升级,修复bug,并增强系统功能
* f: A3 T# Z0 T7 K- `一个稳定,简单,安全的升级方式,就变得非常重要
$ s; `7 r. e* P对于嵌入式系统来说,常见的升级方式为" k( _3 I; p; H9 Q6 K1 ]% g! y
串口升级(私有协议或者X-Modem)- T; {, y2 m9 T* @
USB升级(DFU)
7 \% T$ }$ y. z0 \( s  zU盘升级(OTG)
$ l, ]) d3 j. v网络升级* I/ U6 u, \& }/ A& N
无线升级(OTA)( z) Y! ]3 M1 u/ }
从技术来说,这几种升级方式大同小异,原理类似:都是一个Loader代理接收数据通道的数据,然后解密,烧录到FLASH中;但用户体验完全不同,拿串口升级来说,首先用户需要一个串口软件,然后对于没有硬件串口的PC来说,就需要一个USB转串口设备,对于不同PC平台,串口软件就不一样,这需要学习成本,过程繁琐;所以在一些需要用户自行升级远程设备的情况下,即便是通过电话指导,80%的用户仍然不知道怎么升级,导致失败3 Y# v% |& a  l5 C$ I; d9 Y0 X$ o

' Y. |' D( f  k) {USB的DFU升级,也是类似的问题,它设计的初衷就是面向专业用户的,而不是小白!所以需要安装DFU软件,按照手册来一步步升级
- l* E& D, b1 |6 O( `6 Y
9 [- o' Z' V. aOTA升级和网络升级,体验好些,可用做到无感升级,但不适合所有场景' z' E. f  Z4 W( p+ n5 R
) o' S& Z  V- \) ]) ^
而U盘升级,用户学习成本最低,U盘大家都知道,然后拷贝一个Bin文件进去,插入设备,重启设备,就完成升级了,非常简单。类似的变种,比如手机升级,是最先进的,直接将手机模拟成U盘,然后用户拷贝数据到手机,重启就好了,非常简单# |' m' q! n- b2 g
在嵌入式系统中,还没这么方便的升级手段,虽然ARM的Mbed有一种类似的固件更新功能,但它是专门为调试器设计的,不能内嵌到用户MCU中. H8 [. G4 M0 e
所以,我将手机升级的方案引入到嵌入式系统中,从而为大家提供一个实现稳定,安全,零学习成本的升级方案
' F. b7 S2 |" M& l1 Q7 V2 V, l经过一段时间的学习研究,有了这个USB MSD Bootloader: w0 G6 M: b) }; P0 e5 [& N  w5 H
: S/ p! j) h5 I! y/ T. S
2. 功能特点
' F. a+ m/ k: p( b0 L4 h% {
: h" h! V  Q6 H7 r" Z' b; Q只占用15K FLASH空间7 N7 v" ~1 ?6 Z: q; C( i1 [* G
简单易用,直接拖拽文件进行固件升级,无需任何专业知识- B  m; I) r7 k
采用USB大容量设备类,不用安装任何驱动
- t6 l. L  [7 g7 p0 |+ M支持各种系统(Windows/Linux/Mac/Android), G+ N, v( \+ Z0 H# K! q1 ]
不用开发任何上位机,提高产品效率
4 B3 X- E( T$ Y& W) y% P, q支持各种加密算法(AES256等),轻松安全升级! P  I# O' {4 K& e
自动识别Bin,Hex,自定义加密固件(后缀为sec)文件
; ]9 b; r+ V1 r* G! L1 m支持MD5文件校验机制,保证固件升级的完整性
* O- u$ x8 ?9 X; C显示设备升级状态信息
5 M3 G2 \6 T. {" |1 ?. A6 Z支持长文件名升级
: G( u+ Y& i: `3 U多种措施保证系统健壮性,保证Bootloader不会被误擦除,保证APP合法性
( U2 t/ [" S+ ?1 e5 |% U* ]( k支持用户自定义加密算法和完整校验算法,极致安全
+ L# V* O! x6 {( x  W$ m; V
8 A9 e+ M5 Z6 O* @: Z3. 系统原理3 ?! }' y1 x+ T+ q7 L0 r

& A/ u% x" \( E2 D系统开机上电后,Bootloader接管系统,初始化USB硬件,等待USB连接  v% e( s! {  S% x: t4 c
Bootloader在启动后1秒内,检测USB是否连接PC:如果连接PC,则进入固件升级模式,执行第3步;超时则跳转第8步,尝试执行用户APP3 ]6 j; L% \& v# x( f2 g2 t  c
Bootloader模拟成MSD设备,构建FAT16虚拟文件系统,U盘名为”Bootloader”,容量为100M,但具体实际可用空间,根据用户MCU来确定,建议不要复制除APP之外的无关文件& O4 }6 t( e$ F: M7 U0 x  v/ j* [; e7 Z
当用户复制文件到U盘时,Bootloader会判断文件后缀和判断文件size,如果size大于实际的MCU可用FLASH或者文件后缀不合法,则进入错误状态,更新状态文件,重新枚举USB3 c: r  {6 @+ U. k! C' T7 s* G
文件后缀和size通过检测后,Bootloader会截获PC发送文件数据流,并写入MCU 对应的Flash中
5 W, C1 J, L; G" o3 Z( O5 D如果写入过程中出错,则终止操作,擦除APP内容,进入错误状态,更新状态文件,重新枚举USB
" n1 [' P) S6 W8 {1 p1 _成功写入后,Bootloader更新状态文件,重新枚举USB,显示升级完成;但不会运行APP,只有拔掉USB后,再次重启,才会进入第8步,尝试运行APP
0 i* o2 Y3 W  b; l$ mBootloader检查APP固件的栈和入口函数合法性,只有通过检测后,才开始执行APP。检测判断条件是栈指针必须在RAM地址空间内,入口函数地址必须处于THUMB模式,并LSB为1! E* {. k! B! s& n; O
停止USB设备,关掉所有的中断,执行APP,APP开始接管系统
9 r: N! C' _$ N0 ~, G' x% v, v, z2 t
$ B6 |- L* T1 Q- ^- g' w; c0 _7 P6 t) S4 W8 B; B3 U- X7 _2 L- I
4. 支持芯片: t  j) \2 u9 R3 l
STM32F101/3/5/7
2 p: _$ a* B- e7 T; F3 E* O5 K重点来了,点击下面链接,下载固件
9 }) U( S8 g. X* j1 y USB MSD Bootloader.hex.zip (16.67 KB, 下载次数: 396)

评分

参与人数 1 ST金币 -1 收起 理由
oem2008 -1 很给力!

查看全部评分

2 收藏 23 评论44 发布时间:2015-12-4 08:28

举报

44个回答
wmfi 回答时间:2018-9-8 21:36:52
cathy7612 发表于 2018-4-29 00:04; d0 _  N+ L0 e2 R( L3 e% \
为什么是可惜呢?STM32F103C8T6可以吗?
8 F, E! v1 I, [% ~5 h6 ?% ~; F3 t
我用CBT6不能用啊, 烧录HEX文件后, 接上USB一直断开,不出现盘符啊
wmfi 回答时间:2018-9-8 21:38:02
bb999 发表于 2015-12-4 12:56
4 q2 C5 C0 H3 x$ Y0 r烧了stm32f103zet没反应 ,没看见有u盘出来

1 L8 c. y) S$ Q/ q- KCBT6 也不行啊,大家怎么都不试试,就一个劲的说好……
cathy7612 回答时间:2018-4-29 00:04:19
潇潇雨歇pku 发表于 2015-12-4 08:47
$ U1 B8 F% Y4 c6 ]' t/ O看起来很厉害的样子,可惜用的是f4
( a" b5 ~: \8 t0 ]5 u, x
为什么是可惜呢?STM32F103C8T6可以吗?
潇潇雨歇pku 回答时间:2015-12-4 08:47:31
看起来很厉害的样子,可惜用的是f4
仙景 回答时间:2015-12-4 08:49:49
21IC那个就是你
creep 回答时间:2015-12-4 08:55:17
不错,谢谢分享,收藏学习了!!
chifen 回答时间:2015-12-4 08:58:09
谢谢                 
那就地方 回答时间:2015-12-4 08:59:32
牛,赞一个
yanhaijian 回答时间:2015-12-4 09:12:12
没有源码。
wudianjun2001 回答时间:2015-12-4 09:13:15
liu553824989 发表于 2015-12-4 08:49
2 w# @2 O+ L3 F% Z* L( l21IC那个就是你

5 X2 E3 M- \+ N$ E4 o  s* J不是我,这个帖子转的
Paderboy 回答时间:2015-12-4 09:32:37
这个牛叉叉啊。。。7 `% x& B0 r' f1 `! X+ t
) i  I3 Y9 a8 E4 n3 x
STMCU-Logo.png 8 O) A  }/ @( t% Q- b
风子 回答时间:2015-12-4 10:10:11
好东西,谢谢分享
2602082487 回答时间:2015-12-4 11:02:18
不错,谢谢分享
JackieLaura 回答时间:2015-12-4 11:10:17
刚在21ic上看到。。。
3 S$ n9 e8 Z+ \- o  D0 I
stmcu.org.png
disheng4688 回答时间:2015-12-4 12:06:46
谢谢分享
bb999 回答时间:2015-12-4 12:56:36
烧了stm32f103zet没反应 ,没看见有u盘出来
wofei1314 回答时间:2015-12-4 23:31:28
精华帖子啊,等我验证一下!谢谢分享,真的是迫切的需要这个功能,支持,支持!!!
123下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版