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

像使用U盘一样,升级STM32  

[复制链接]
wudianjun2001 发布时间:2015-12-4 08:28
有没有想过,像使用U盘一样升级STM32固件,非常简单,非常方便

1:        插入电脑USB接口
2:        把升级固件拖到设备盘符
3:        升级完成



抛弃繁琐的USB DFU,抛弃落后的串口升级,让我们来谈谈U盘升级STM32

1. 为什么设计这个BOOT LOADER

在电子产品开发过程中,为了满足市场需要,经常是先开发出一个简单可用的版本,然后逐步迭代升级,修复bug,并增强系统功能
一个稳定,简单,安全的升级方式,就变得非常重要
对于嵌入式系统来说,常见的升级方式为
串口升级(私有协议或者X-Modem)
USB升级(DFU)
U盘升级(OTG)
网络升级
无线升级(OTA)
从技术来说,这几种升级方式大同小异,原理类似:都是一个Loader代理接收数据通道的数据,然后解密,烧录到FLASH中;但用户体验完全不同,拿串口升级来说,首先用户需要一个串口软件,然后对于没有硬件串口的PC来说,就需要一个USB转串口设备,对于不同PC平台,串口软件就不一样,这需要学习成本,过程繁琐;所以在一些需要用户自行升级远程设备的情况下,即便是通过电话指导,80%的用户仍然不知道怎么升级,导致失败

USB的DFU升级,也是类似的问题,它设计的初衷就是面向专业用户的,而不是小白!所以需要安装DFU软件,按照手册来一步步升级

OTA升级和网络升级,体验好些,可用做到无感升级,但不适合所有场景

而U盘升级,用户学习成本最低,U盘大家都知道,然后拷贝一个Bin文件进去,插入设备,重启设备,就完成升级了,非常简单。类似的变种,比如手机升级,是最先进的,直接将手机模拟成U盘,然后用户拷贝数据到手机,重启就好了,非常简单
在嵌入式系统中,还没这么方便的升级手段,虽然ARM的Mbed有一种类似的固件更新功能,但它是专门为调试器设计的,不能内嵌到用户MCU中
所以,我将手机升级的方案引入到嵌入式系统中,从而为大家提供一个实现稳定,安全,零学习成本的升级方案
经过一段时间的学习研究,有了这个USB MSD Bootloader

2. 功能特点

只占用15K FLASH空间
简单易用,直接拖拽文件进行固件升级,无需任何专业知识
采用USB大容量设备类,不用安装任何驱动
支持各种系统(Windows/Linux/Mac/Android)
不用开发任何上位机,提高产品效率
支持各种加密算法(AES256等),轻松安全升级
自动识别Bin,Hex,自定义加密固件(后缀为sec)文件
支持MD5文件校验机制,保证固件升级的完整性
显示设备升级状态信息
支持长文件名升级
多种措施保证系统健壮性,保证Bootloader不会被误擦除,保证APP合法性
支持用户自定义加密算法和完整校验算法,极致安全

3. 系统原理

系统开机上电后,Bootloader接管系统,初始化USB硬件,等待USB连接
Bootloader在启动后1秒内,检测USB是否连接PC:如果连接PC,则进入固件升级模式,执行第3步;超时则跳转第8步,尝试执行用户APP
Bootloader模拟成MSD设备,构建FAT16虚拟文件系统,U盘名为”Bootloader”,容量为100M,但具体实际可用空间,根据用户MCU来确定,建议不要复制除APP之外的无关文件
当用户复制文件到U盘时,Bootloader会判断文件后缀和判断文件size,如果size大于实际的MCU可用FLASH或者文件后缀不合法,则进入错误状态,更新状态文件,重新枚举USB
文件后缀和size通过检测后,Bootloader会截获PC发送文件数据流,并写入MCU 对应的Flash中
如果写入过程中出错,则终止操作,擦除APP内容,进入错误状态,更新状态文件,重新枚举USB
成功写入后,Bootloader更新状态文件,重新枚举USB,显示升级完成;但不会运行APP,只有拔掉USB后,再次重启,才会进入第8步,尝试运行APP
Bootloader检查APP固件的栈和入口函数合法性,只有通过检测后,才开始执行APP。检测判断条件是栈指针必须在RAM地址空间内,入口函数地址必须处于THUMB模式,并LSB为1
停止USB设备,关掉所有的中断,执行APP,APP开始接管系统


4. 支持芯片
STM32F101/3/5/7
重点来了,点击下面链接,下载固件
USB MSD Bootloader.hex.zip (16.67 KB, 下载次数: 338)

评分

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

查看全部评分

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

举报

41个回答
潇潇雨歇pku 回答时间:2015-12-4 08:47:31
看起来很厉害的样子,可惜用的是f4
liu553824989 回答时间:2015-12-4 08:49:49
21IC那个就是你
creep 回答时间:2015-12-4 08:55:17
不错,谢谢分享,收藏学习了!!
chifen 回答时间:2015-12-4 08:58:09
谢谢                 
那就地方iv 回答时间:2015-12-4 08:59:32
牛,赞一个
yanhaijian 回答时间:2015-12-4 09:12:12
没有源码。
wudianjun2001 回答时间:2015-12-4 09:13:15

不是我,这个帖子转的
Paderboy 回答时间:2015-12-4 09:32:37
这个牛叉叉啊。。。

STMCU-Logo.png
风子 回答时间:2015-12-4 10:10:11
好东西,谢谢分享
12345下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

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