本帖最后由 sumoon_yao 于 2020-12-20 14:57 编辑
本人学习的垂直应用名称: 云连接(三) 远程固件升级 https://www.stmcu.com.cn/ecosystem/app/cloud3
万物互联时代怎能少了ST的身影? ST公司提供了完整的云连接生态系统,包括功能软件包,评估板,软件工具,各类文档及本地资源如培训课件,视频等等。
ST提供了完备的云连接套件,覆盖国内外主流云平台,支持大部分物联网协议,并提供物联网典型应用,如下图所示:
对于我们开发者来讲,更关心的是云连接套件中所能支持的物联网协议,主要包括:MQTT,CoAP,LWM2M,HTTP,还有用于安全传输的协议TLS等。
针对不同的云平台和软件包,其支持的协议也有所差别,具体如下面几张图片所示:
国外云平台X-CUBE包支持的物联网协议:
国外云平台FP-包支持的物联网协议:
国内主流云平台软件包支持的物联网协议:
这些协议除了用于节点设备和云端数据传输之外,另一个主要应用就是FOTA,节点设备固件的远程升级。
通常我们实现固件的更新是通过下载调试接口,或者是通过串行接口等来实现,对于设备出厂之后如果需要修复BUG或者软件升级,除了工程师去设备现场,或者用户将设备寄回工厂这2种方法之外,唯一可行的方法也是更加经济高效的方法就是利用节点设备已经具有联网功能,可以通过云端实现设备固件的远程升级。在我们开发应用的时候,除了要实现原有的节点设备数据传输功能之外,还要加上固件下载传输功能以及固件更新功能。
通常,从存储器的划分角度考虑可以分为三种升级方式:原位升级、乒乓升级、冗余升级,三种升级方式示意图如下:
三种升级方式各有优缺点:
原位升级 优势:对flash的需求最小;
缺点:如果下载失败,又无法连接网络,则程序就没法再运行;
不支持后台下载,升级时需要暂停应用程序功能;
乒乓升级 优势:支持后台下载,不影响应用程序的运行;
下载失败没关系,原程序可以继续运行;
缺点:对flash要求高,需要双倍的用户程序大小;
需要MCU的flash双bank;
冗余升级 优势:支持后台下载,不影响应用程序的运行;
下载失败没关系,原程序可以继续运行;
不需要MCU的flash双bank;
需要MCU的flash双bank;
缺点:需要额外的外部/内部存储器空间储存固件备份;
学习后的一点思考:
上述三种升级方式都是通过将升级固件放在云端,由节点设备自动判断是否需要升级及何时升级,且需要HTTP协议的支持。既然节点设备支持HTTP协议,那可否通过云端实现PC端和节点设备的直接通讯呢?这样可以实时升级固件,以至可以实现远程调试。
资料分享:利用MQTT及云存储实现STM32远程无线升级
利用MQTT及云存储实现STM32远程无线升级.pdf
(1.42 MB)
|