打印
[信息]

【STM32垂直应用挑战第五周+云连接之远程升级】

[复制链接]
663|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linyu0395|  楼主 | 2020-12-19 12:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 linyu0395 于 2020-12-19 12:44 编辑

   
    第五周的STM32垂直应用挑战,我学习了STM32的云连接应用第三讲-远程固件升级
    链接:https://www.stmcu.com.cn/ecosystem/app/cloud3
    学习文档名称:利用MQTT及云存储实现STM32远程无线升级例程的开发文档

    网络带给我们的便利,不仅仅丰富了我们的生活,拉近了朋友们的关系,也让工程师们有无尽的创意来设计各种各样的产品。通过网络,我们可以在外面监控家里的情况;通过网络,可以实现更快捷的支付便利以及亲朋好友间的沟通;通过网络,还可以查看并控制家里各种电子设备。相信广大的电子爱好者们更青睐于电子设备的网络控制,包括我也是乐此不疲地钻研这个技术。设计电子产品的的工程师们,特别是带有网络功能的产品,如果没有健全的固件远程在线升级,那后期的维护绝对是令人头痛的。这次通过学习“远程固件升级”,收益颇丰,而且让我意识到这个将会是我以后维护产品的一个必不可少的内置功能。

    ST官方提供了STM32云连接的整个生态系统,包括STM32Cube的功能扩展包、文档、软件工具以及本地的丰富资源,学习之路得以展开……
   

    远程固件升级,英文名:FirmwareOver-The-Air, 简称FOTA,就是利用无线技术,利用云服务来实现远程的设备固件更新。ST官方提供的云连接套件,支持的云平台有:AWS, Azure, Watson等国外主流云 IoT平台,也有国内的阿里云,百度云,机智云等IoT 平台。支持的设备连网方式,有WIFI,2G/3G, NB-IoT,LoRa,以太网等。我学习的这个文档,是基于STM32F769DK开发板来实现的。云端固件升级例程分为两部分:Bootloader 和用户应用程序。该软件基于 STM32F7Cube 库运行在STM32F769I-DISCO 探索板上,利用百度的IoT平台实现了从云端更新固件的功能。Bootloader部分主要负责将新版本用户应用程序从QSPI Flash烧到MCU内部 Flash 中,并跳转到应用程序运行,功能相对简单。用户应用程序部分,除了用户自己的功能程序外,还包括固件版本云端推送、云端下载以及断点续传等功能,结构相对复杂,文档也是主要介绍了这部分的内容。

    介绍一下软件架构的组成:
    STM32F7Cube HAL库:ST目前力推STM32Cube的软件,已经把底层都封装好了,HAL层向上提供了各个外设的接口函数,使得程序更具有复用性,移植也容易。
    LWIP:著名的TCP/IP网络协议的实现库。
    mbedTLS:TLS链接的加密实现库
    Paho:跟云的链接离不开MQTT的实现,Paho的MQTT移植方便、简单,性能稳定。
    cJSON:JSON格式数据的解析。
    操作系统,有FreeRTOS、Thread、CMSIS-RLOS等。
   

     文件结构的组成:
   

    例程中的下载流程见下图:
   

    例子基于百度云IoT服务进行MQTT通信,首先需要在百度的IoT平台创建自己的服务(如何创建请参考“STM32F769DK 云端固件升级例程使用说明),然后简单的几个改动,就可以连接到百度IoT服务器了。在百度的 IoT 平台上创建好服务后,你就会得到以下信息。
   

    包括云端服务器的地址, 连接的用户名和密码等。
根据你创建的物影子的名称,也知道了:
将设备状态更新到云端的设备影子使用的主题是: $baidu/iot/shadow/{deviceName}/update。
获取设备影子更新状态使用的主题是: $baidu/iot/shadow/{deviceName}/update/accepted。
这里的 deviceName 就是建立的物影子的名称。
将这些信息加到 baidu_iotclient_conf.h 文件中,见下图:
   
    MQTT_CLIENT_ID 用户自己定义就可以,保证在同一个实例下没有重复就行。
重新编译就 Ok 了。

    下面说明一下Bootloader中更新用户程序的流程:
   

   

    基本的流程大概就是这样子了,当然还有很多附加功能,比如加密还需要对TLS进行配置,以及使用其他的对象存储服务,还需要改证书名。不同的Iot平台,大体上操作都差多,具体差异还需要对不同平台的SDK包进行分析。其他的文档大家也可以参考一下,包括如下:
· STM32F769DK 云端固件升级例程使用说明
· UM2033-Discovery kit with STM32F769NI MCU
· STM32 OTA 例程之 cJSON 使用
· STM32 OTA 例程之 ESP8266 使用
· STM32 OTA 例程之 Paho embedded C 使用

   最后附上学习的文档资料,希望对大家有所帮助:
    Development_guide_for_STM32_OTA_demo.pdf (658.58 KB)
  


使用特权

评论回复
沙发
x史可法| | 2020-12-20 22:49 | 只看该作者
文档里的步骤还是满详细的 很实用

使用特权

评论回复
板凳
正圆椭圆| | 2020-12-20 22:59 | 只看该作者
做物联网还是很需要学习远程的技术 有需求

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

244

帖子

4

粉丝