在i.MX RT10XX系列平台上进行OTA

一、背景介绍在这个万物互联的时代,ota升级功能更是为我们的生活增加便利。ota = over-the-air technology,空中下载技术。ota升级则是通过ota方式对设备实现固件或者软件升级。最为常见的就是移动终端的ota升级,近几年很火的新能源汽车也让大家对这一技术更加熟悉。
二、概述本文将介绍在i.mx rt10xx系列平台上,进行基于阿里云物联网平台的ota。在此之前,先简单介绍一下本文用到的sbl&sfw工程。sbl(secure bootloader)是mcu se团队为i.mx rt全平台设计的一个second bootloader工具,帮助用户进行程序的安全启动。sfw(secure firmware)是基于freertos创建的工程,生成固件为了配合sbl来实现完整的fota流程。本文的阿里云物联网平台ota就是sfw中的一部分,sfw还支持u盘、sd卡以及aws平台的ota升级。以下是sbl和sfw两个工程的github链接:
https://github.com/nxpmicro/sbl
https://github.com/nxpmicro/sfw
三、配置阿里云ota升级代码3.1 创建云端设备要实现阿里云物联网平台的ota升级,首先要将阿里云物联网平台提供的c link sdk(本次移植使用阿里云c-sdk 4.0.0)移植到工程中。登录阿里云物联网平台:https://iot.console.aliyun.com/,进入公共实例板块,创建自己的产品。
在“所属品类”中选择任一即可。“节点类型”选择“直连设备”,“连网方式”选择“以太网”,其余选项默认即可。
完成产品创建之后,在相应产品下创建需要的设备,如对阿里云物联网平台不了解的读者,可以通过阿里云物联网平台的入门教程-公共实例快速入门中查找相应操作。
至此我们已经拿到了对于i.mx rt设备连接阿里云iot平台非常重要的三元组:productkey、devicename和devicesecret。
3.2 配置设备端c-sdk
创建好产品和设备之后,我们需要将阿里云物联网平台的link sdk移植到我们的设备端中。
在“公共实例”中,点击左侧最下端“文档与工具”,选择“设备接入sdk”中的“sdk定制”来下载所需要的设备端sdk。
将下载的c-sdk包中需要用到的core、ota文件夹以及external文件夹中的证书ali_ca_cert.c、portfiles文件夹中的freertos_port.c和demos文件夹中的fota_basic_demo.c添加到我们原本的工程文件中以便修改。
本例程中,ota升级的流程图如下所示:
3.3 ota升级程序
在ota功能函数中,有几个需要注意的地方:
1. 当前固件的版本号
在ota升级的过程中,云端需要校验当前固件版本号,如果是需要升级的固件版本,才会对设备发送升级请求以及升级包url,ota升级才能继续下去。
2.将固件一次性下载完成
阿里云c-sdk默认的下载方式为两段下载,此处我们采用一次性下载完整个固件的方式。
3. flash的擦除
在设备端收到了ota升级的mqtt消息后,会下载新的固件,并且需要设备端烧写到指定的flash位置,在此之前,需要先将该区域擦一下。
4. 烧写下载的固件到flash上,分段下载,每一段一保存
至于其他一些可以变动的地方,可以详细阅读阿里云c-sdk。
四、ota演示下面就来演示一下在sbl工程配合下的阿里云ota升级工程,平台为i.mx rt1064evk,利用以太网进行网络连接(用户也可自行配置无线模块进行连网)。 1. 修改当前版本号生成bin文件
在iar中修改当前版本为1.0.0和1.4.0,并且生成相应的bin文件(此处以iar工程为例);
2. 在sbl工程中利用签名脚本进行bin文件的加头签名操作
将上一步生成的两个bin文件拷贝到sbl工程中sbl/component/secure/mcuboot/scripts文件夹下,利用powershell给两个bin文件签名。
3. 创建ota任务
在云端控制台页面,公共实例下的监控运维中,选择ota升级。点击添加升级包按键以添加升级包,输入升级包名称,选择相应的升级选项,注意,升级包版本需要和上传的bin文件中版本一致,否则后续的ota无法成功。
4. 开始运行ota工程
step1. 利用mcubootutility工具将加签的1064_ali_100.bin下载到板子的第一个启动区,默认的slot1为flash_offset+0x100000 ~ flash_offset+0x200000,整个区域大小为1mb。
step2. 运行secure bootloader
将sbl工程通过ide下载到板子中,下面就可以开始进行整个ota流程了。
在开发板上插入以太网网线,按下reset键开始运行工程,串口显示“the image now inprimary_slot slot”和“getting ip address from dhcp”表示在slot1里面的程序已经成功运行。“ipv4 address:” 和 “version:1.0.0”表示网络连接成功并且阿里云云端接收到当先设备的版本为1.0.0。
上传升级包时,如果选择了需要进行升级包验证,则在云端接收到当前版本信息后,需要进行操作验证;如果没有选择验证,则可直接进行升级进程。
串口会显示升级包信息,可以看到ota目标版本为1.4.0,大小信息也会显示。
下面的打印信息显示下载请求已经成功发送并开始下载流程,
下载完成后会有打印信息如下,并且开始进行系统重启,在系统重启后,会启动slot2中的升级包程序,可以看到当前的版本信息,并且可以在控制台看到ota升级已经验证完成。
五、总结本文介绍了在i.mx rt平台上进行阿里云的ota升级。
虽然只是简单的版本号升级演示,但是通过本文可以知道在基于i.mx rt的iot设备进行固件升级时,需要进行操作的地方有哪些,在针对你的设备进行功能代码升级的同时,加上上文中的ota升级部分,即可轻松借助阿里云物联网平台进行设备的固件升级。


机器视觉检测技术在工业自动化下的五大应用
CentripetalNet:更合理的角点匹配,多方面改进CornerNet
CEEASIA2023规划公布!今年10月相聚北京
大蓝安全技术奖重构数据安全防护
智能光照培养箱在实验室中的作用是什么
在i.MX RT10XX系列平台上进行OTA
英创信息技术WinCE主板多网络优先级设置介绍
python怎么设置循环次数
无线麦克风电路图
C语言中的不完整类型是什么
电气控制柜设计的注意事项
电阻串联和并联的计算方法_电阻串联和并联的作用
除了AI,骁龙660还有哪些亮点
CPU片内总线结构差异解析
LM1876电桥输出音频功率放大电路
大气负氧离子监测系统介绍
如何选择8位、16位、32位MCU中合适的器件
圆柱电芯常温化成分容充放电设备
荣耀9什么时候上市最新消息:华为荣耀9渲染图曝光!麒麟960+正面指纹+取消耳机孔 酷似小米6
酷派大神F1高清拆机过程图集