WeFOTA用来升级ME3616 OpenCPU模组的固件,操作步骤分为:程序编写,差分包制作,平台差分包部署。文章给出完整的操作流程&步骤,按照顺序完成操作即可实现FOTA远程升级。
FOTA实现的流程中,服务器可以随时处于"待命状态"。不同应用场景的客户(如烟感、路灯、水表等)程序设计中,根据自己的需求在不同时刻调用gsdk_ril_fota_ctr(),模组主动发起升级。比如服务器下发某个指令,或者用户按下特殊按键,ME3616调用升级函数,即可发起FOTA升级,非常方便。
一、程序编写
Fota升级参考wefota.c例程,用户产品中将该例程封装成1个函数即可,模组需要升级时调用该函数立即发起升级。
样机测试时将wefota.c封装成fota_Func(),调用该函数即实现Fota升级。函数中while(1)可直接忽略,因为升级成功后模组自动重启,升级失败时会break跳出循环。
用户需要fota时,调用该函数,模组立即进行Fota升级。
二、差分包制作
这里流程演示差分包只升级用户的程序(user.bin),不升级固件底版本。如果需要同步升级底版本流程也是一样的,因为文件夹里面有对应版本的nbiot_m2m_demo.bin(实际上是否升级底版本对用户没区别,直接复制对应文件即可)。差分包制作先准备2个资料:用户自己的新旧程序(user.bin)、配置文件(adups_info.txt)
参考文档《高新兴物联ME3616_WelinkOpen WeFOTA 接口开发指导_V1.3》第3章。
2.1 制作工具
直接登录下面2.2的账户就是制作工具。
2.2 制作流程
在发布的资料里(路径FTP-ME3616-WelinkOpen\Tools\IOTdeltaTool2.0_test_2017.8.25)找到IOTdeltaTool2.0_test.jar(直接用Everything工具搜索就找到了),点击打开
操作步骤可直接参考下图,按照Step流程走:
Step1:桌面建立2个文件夹(代表新/旧程序),每个文件夹里面有3个文件。3个文件分别为adups_info.txt(高新兴提供)、nbiot_m2m_demo.bin(对应底包文件夹下)、user.bin(用户程序)
Step2:adups_info.txt文件里修改最后3行,实际只需要修改最后一行,另外2行可以直接参考下图不变
Step3:将底包的nbiot_m2m_demo.bin放在文件夹下面
Step4:打包2个zip文件
Step5:按照图示上传,准备生成差分包
注意这里的user1.bin和user2.bin,名称要和文件夹里用户的程序名称匹配起来。比如V1文件夹里面用户程序命名为user1.bin,则txt文件中倒数第三行也要命名为"user1.bin-D"
到此,差分包制作完成,文件就是update.zip,后面准备部署到服务器平台。
三、平台差分包部署
差分包上传到服务器平台之后,模组才可以发起FOTA升级,本章给出了如何上传差分包update.zip文件。差分包上传平台网址:http://wecloud.iot.gosuncnwelink.com,账号&密码如果需要发送邮件到yumaoxiang@gosuncn.com,操作流程按照下述图片说明即可。
平台流程操作主要包括:添加固件版本号、添加IMEI号、关联版本&查分包。
这里固件版本号命名建议用户使用自己的程序版本等关键字进行命名,因为平台存储文件较多,所以加入关键字后期容易区分。
模组发起FOTA升级时,会将内部固件版本与平台的固件进行匹配初始版本。比如现在样机测试的固件版本是OC_ME3616C1AV1.0B05,那么平台上必须有初始的固件版本。按照如下流程示例执行即可。
这里服务器设置已经完成,注意最后一步 "测试"&"发布"对FOTA没有影响,发布是后期服务器人员自行转移,整个FOTA流程一样,不影响我们应用。
四、FOTA升级
第1章中提到样机测试时笔者将fota_Func()函数封装并在下发命令里调用,即服务器下发某个特殊的命令,模组调用函数发起Fota升级,这里给出完整的操作示例。
这里测试时使用电信的IOT平台下发,但是使用的是移动卡。因为电信平台有IP白名单限制,所以无法使用高新兴平台进行fota升级。
至此,所有Fota升级完成。再次注意:以上流程使用移动卡测试,电信卡需要使用IOT平台进行升级,流程验证&更新后给出。