0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于移远BC28的STM32+NB-IOT的OTA案例分享

丫丫119 来源:未知 作者:肖冰 2019-09-19 09:52 次阅读

随着互联网的发展和无线通讯网络的普及,低功耗窄带通讯为物联网带来了更多机会。凭借着其覆盖范围广、功耗低等特点,获得了广泛的关注与重视,不断加速实现物与物之间建立智能化、数据化的联系。借助通讯和云计算的高速发展,越来越多的设备开始物联网化演进,大规模部署后的物联网设备面临着在线升级(OTA)的需求,从而解决系统更新,产品功能迭代、漏洞修复、和安全防护等问题。

这其中的在线升级功能,需要使用 OTA (Over-the-Air) 技术 。简单地说,OTA 就是通过网络来升级手中的智能设备。由于大多数物联网终端受硬件资源、功耗、带宽等限制,传统的整包升级方式已经越来越难以满足客户需要,而稳定安全的差分升级在OTA这一技术领域中显得尤为重要。尤其是NB-IOT这类窄带通信技术,大多数应用都是由低功耗小资源的MCU+NB-IOT通讯模块实现的,NB-IOT通讯模块实现联网功能,设备应用运行在MCU上,使用差分OTA升级,可以实现减低功耗、减少硬件资源消耗、提升升级体验、加速下载过程,提供更好的安全性和可靠性,并且有效防止大量设备下载时候对基站等设施的冲击。艾拉比提供的基于MCU+NB-IOT的差分技术方案已经广泛应用在如门锁、手表、定位器、路灯控制器、共享停车位、烟感和表计等领域。

下面以移远BC28+STM32L053为例,来演示如何利用艾拉比的差分技术通过NB网络升级STM32的APP固件。我们将从升级方案的设计,设备操作流程两个部分来详细讲解这个方案:

01.升级方案的设计

下图展示了这个升级方案的软件框架:

从上图可以看到STM32里中需要有三个部分的修改:

1.STM32L053的APP部分,需要集成与OTA服务器通信的程序,我们称为Update Controller,简称UC

2.STM32L053的bootloader部分,需要集成差分升级算法程序,我们称为Update Agent,简称UA

3.STM32L053上需要规划处一定的存储空间,用来存储下载的差分包。

从设计的软件框架来看升级将分为两个阶段:下载差分包阶段和升级上报阶段。在窄带网络下,我们以LWM2M协议为基础来和OTA服务器进行交互通信,设备与服务器端建立的是COAP连接。

我们先来详细分解下载阶段的流程:

从上图中我们可以看到整个下载差分包的流程分以下几个步骤:

1. 初始化模组, STM32向BC28发送初始化的AT指令。

2. STM32发送AT指令给BC28,建立网络链接。BC28返回建立网络的结果给STM32。

3. STM32透过BC28,向OTA服务器发起注册请求。OTA服务器透过BC28下发注册结果,STM32将这些注册信息保存下来。

4. STM32透过BC28,向OTA服务器发起检测版本的请求。OTA服务器透过BC28下发新版本的信息,这其中包含了差分包的下载地址。

5. STM32基于得到的下载地址,透过BC28向OTA服务器发送下载差分包请求。OTA服务器会根据请求将差分包分段透过BC28下发给STM32,STM32在收到后将这些数据存储在差分包存储区域。

6. STM32在下载完差分包并经过校验后,透过BC28上报下载升级包的结果给到OTA服务器。OTA服务器透过BC28下发上报结果。

7.STM32发送指令给BC28关闭网络连接,BC28返回关闭网络连接结果

8.STM32进行软重启,进入bootloader

接下来升级流程就进入了下一个阶段,我们先来看流程图:

从上图中我们可以看到整个升级上报的流程分以下几个步骤:

1. STM32在bootloader中运行UA程序,完成差分升级,升级完成后重启。

2. STM32向BC28发送初始化的AT指令,BC28向STM32返回初始化结果。

3. STM32发送AT指令给BC28,建立网络链接。BC28返回建立网络的结果给STM32。

4. STM32透过BC28,向OTA服务器发起注册请求。OTA服务器透过BC28下发注册结果,STM32将这些注册信息保存下来。

5. STM32透过BC28,向OTA服务器上报升级结果。OTA服务器透过BC28下发升级上报结果。

6. STM32通知BC28关闭网络连接,至此整个升级流程结束。

通过对整个方案以及两个阶段流程解析,我们可以看到,在窄带网络下的差分升级,对于这种网络特性,对差分包的大小以及差分包传输的稳定性需要有一定的保障,所以在下载差分包的时候,我们需要进行分段下载,并且需要对每段数据进行相应手段的校验。下面我们从设备端的操作,来看一下整个升级的流程。

02、设备操作流程

从下图我们看到,左边的开发板基于STM32L053,右边的开发板基于移远BC28,我们将通过串口线将两个设备连接在一起进行升级操作。STM32开发板上的蓝色按钮的功能是发起整个升级流程,黑色按钮的功能是重启STM32开发板,下面我们开始操作。

首先我们按下STM32开发板上的蓝色按钮,发起升级流程,这个时候STM32开发板屏幕上会有如下显示:

此时,我们还可以通过连接到PC上的debug工具,可以看到相应log,这段动画显示的是STM32从初始化到检测版本整个过程的log。

在检测完成后,STM32自动进入下载差分包阶段,下面两张图是STM32进入下载差分包流程时的屏幕进度显示:

这个阶段,我们也可以清晰的从PC的debug工具里看到整个下载流程:

在下载成功后,我们手动按一下STM32开发板上的黑色按键,重启STM32开发板,让设备进入bootloader开始升级,下面两张图是STM32开发板在升级时的屏幕显示:

完成升级后,STM32开发板重启重新进入APP,这个时候会自动将这次升级的结果进行上报,下图是STM32开发板在进行升级上报时候的屏幕显示:

同样,我们也可以在PC上的debug工具里看到整个上报流程:

从STM32开发板的屏幕上看到完成这个流程后,STM32开发版本的固件从1.0成功的升级到了1.1,至此整个升级完成。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
  • OTA
    OTA
    +关注

    关注

    7

    文章

    522

    浏览量

    34595
收藏 人收藏

    评论

    相关推荐

    stm32l071cbt6如何升级串口BC28OTA

    关于stm32l071cbt6,串口BC28OTA升级,有没有操作过的?没有思路啊
    发表于 03-08 08:05

    NB-IOTOTA测试

    2017年7月25日新益技术实现了NB-IoT终端系统测试,在OTA暗室中完成了NB-IoT终端系统总辐射功率TRP(TotalRadiated Power)和总全向灵敏度TIS(Total
    发表于 10-25 18:01

    STM32+NB-IoT技术实战开发课程

    链智慧停车智慧路灯STM32+NB-IoT技术实战开发课程讲什么?学习课程:http://t.elecfans.com/topic/127.html?elecfans_trackid
    发表于 05-03 15:17

    STM32+NB-IoT技术实战开发课程

    无线网络包含WIFI、蓝牙、ZigBee等多种技术,LPWA也包含多种技术,如LoRa、Sigfox、Weightles和NB-IoT等。由于是“广域”网络,因此必然会涉及网络运营。所以LPWA网络一般
    发表于 05-07 15:44

    基于ONENET+BC95+STM32 LwM2M协议AT指令

    基于ONENET+BC95+STM32 LwM2M协议AT指令
    发表于 03-18 10:48

    BC26调试 精选资料分享

    本文档描述NB260的软件指令操作,即BC26的常用指令操作:模块初始化到数据通信。关于BC26的详细指令手册,请阅读官方指令手册。有关
    发表于 07-27 08:10

    基于STM32L4+BC28 NBIOT开发板

    原标题:基于STM32L4+BC28(全网通) NBIOT开发板原理图教程源码等开源分享关注我们基于STM32L4+BC28(全网通) NBIOT开发板原理图教程源码等开源分享FCORE_BC28L4
    发表于 08-17 07:39

    如何使用BC28模块和单片机去连接阿里云呢

    如何使用BC28模块和单片机去连接阿里云呢?其代码该怎样去实现呢?
    发表于 12-08 07:50

    快速入门BC28的开发

    大白为了开发者能够快速入门BC28的开发,加快开发者的项目进度,大白开发出此款针对BC28stm32开发板和完善的发送网络数据的示例程序(TCP协议、COAP协议),程序流程逻辑清楚,注释完善
    发表于 01-27 08:16

    NB-IOT模块BC28在socket上进行监听失败怎么办

    一、BC28初始化完成,联网完成[I/at.dev.bc28] bc28 device network initialize success.二、获取网卡对象,没有提示失败netdev
    发表于 10-31 15:17

    请教STM32L431RCT使用AT连接BC28出现Hardfault咋办

    NB 模块使用 BC28 电信卡启动AT SOCKET 出现下面错误:
    发表于 01-09 17:05

    BC28 NB-IoT无线通信模块详细中文资料免费下载

    BC28 是一款超紧凑、高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B5/B8/B20/B28 频段。其尺寸仅为 17.7mm × 15.8mm × 2.3mm,能最大
    发表于 08-13 08:00 179次下载

    NB IOT模块系列BC35-G和BC28 AT命令手册资料免费下载

    本文档详细介绍了Quectel NB IOT BC35-G和BC28模块支持的AT命令集。收到该字符串后,AT命令处理器准备接受AT命令。如果BC
    发表于 01-10 08:00 130次下载
    <b class='flag-5'>NB</b> <b class='flag-5'>IOT</b>模块系列<b class='flag-5'>BC</b>35-G和<b class='flag-5'>BC28</b> AT命令手册资料免费下载

    大白NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)

    大白为了开发者能够快速入门BC28的开发,加快开发者的项目进度,大白开发出此款针对BC28stm32开发板和完善的发送网络数据的示例程序(TCP协议、COAP协议),程序流程逻辑清楚,注释完善
    发表于 12-03 17:51 9次下载
    大白NBIOT 移远<b class='flag-5'>BC28</b>模块+<b class='flag-5'>stm32</b>开发板例程、教程(打通TCP、COAP协议)

    NB-IOT模块BC28在socket上进行监听失败如何解决呢?

    BC28初始化完成,联网完成
    的头像 发表于 11-14 12:43 428次阅读
    <b class='flag-5'>NB-IOT</b>模块<b class='flag-5'>BC28</b>在socket上进行监听失败如何解决呢?