【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

FOTA(Firmware Over-The-Air)是终端设备固件的空中下载升级,指通过云端升级技术,为具有连网功能的设备提供固件升级服务。ML307A OpenCPU SDK提供的FOTA方式是以差分包进行升级的方式,需要先通过编译获得升级前后版本固件包,即模组当前版本和目标升级版本,接着使用差分包制作工具,生成差分包,再把差分包放到http或者ftp服务器上,模组通过网络下载到本地进行升级。

一、FOTA使用流程解析

以下流程图为使用ML307A OpenCPU SDK FOTA功能时的常见流程及相关函数接口介绍。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图1 FOTA接口函数使用流程

上图介绍了使用FOTA的常规流程,可结合cm_demo_fota.c中的demo示例程序加深理解,FOTA功能包含的全部函数接口详细定义可在cm_fota.h中查看。

二、FOTA demo代码解析

SDK中FOTA常规使用方法,可在cm_demo_fota.c文件中查看,目前支持HTTP和FTP两种服务器下载,下面我们分别详细说明。

2.1 HTTP FOTA单包升级方式(支持的模组型号:ML307A-DCLN/DSLN/GCLN/GSLN)

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图2 配置FOTA升级为http方式

(1)调用cm_fota_set_ota_plan()配置FOTA OTA升级方案,默认是整包升级CM_FOTA_ASR_PLAN_MINI_INTEGRATE,在cm_fota.h里有枚举类型定义。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图3 FOTA升级方式枚举

(2)调用cm_fota_res_callback_register()设置SDK注册FOTA结果回调,仅在单包 mini FOTA方案下,模组运行在大系统,FOTA出现错误时才会回调。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图4 FOTA升级回调

错误码枚举:

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图5 FOTA升级错误码枚举

(3)调用cm_fota_set_url()设置url网址,支持http和无证书校验的https,网址务必要以http(s)://开头。

(4)调用cm_fota_set_reboot_time()配置FOTA重启时间(demo无使用示例,默认不用设置),FOTA升级的4个阶段,每个阶段都有超时时间,当网络较差或升级包较大时,建议将重启的超时时间适当改大,cm_fota.h里有重启时间结构体cm_fota_reboot_time的默认配置及详细介绍。

(5)执行升级前,使用cm_fs_getinfo()获取文件系统信息,确保文件系统剩余空间足够,再用cm_fota_read_config()获取FOTA服务器配置信息,用于确保fota_mode、url、username、passwd等准确。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图6 升级前查询文件剩余空间和确认配置

另外,详细的FOTA服务器配置参数结构体说明,在cm_fota.h中都有详细介绍。

(6)调用cm_fota_exec_upgrade()进入mini system执行fota升级,升级前,配置url会进行文件系统操作,建议用户在文件系统中至少留有4096字节剩余空间。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图7 触发FOTA升级

2.2 FTP FOTA单包升级方式(支持的模组型号:ML307A-DSLN/GSLN)

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图8 配置FOTA升级为ftp方式

步骤(1)(2)(4)(5)(6)与上述http一致,只有第(3)步有差异,调用cm_fota_set_url()设置url网址,网址要以ftp://开头,还需调用cm_fota_set_auth("user", "password")设置FOTA服务器登录名和密码,接口返回0说明设置成功。

以上,就是FOTA demo示例程序的解析。

三、使用HTTP/FTP服务器测试FOTA示例

下面我们用ML307A OpenCPU SDK提供的FOTA函数接口搭配http和ftp服务器进行测试,整体程序流程与第二章HTTP demo代码几乎一致,为避免重复我们只解析与第二节存在差异的部分,测试模组选用ML307A-DSLN,以下为完整测试步骤。

3.1 设置服务器url

(1)使用http服务器

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图9 配置http下载网址

差分包的制作方式后续介绍,默认生成的差分包文件名是system_patch.bin,可以自行修改文件名,http测试服务器可以上传文件,最终会生成一个下载网址,该网址需要填入cm_fota_set_url中(使用demo测试,需确保填入的url与实际生成的下载网址保持一致)。

(2)使用ftp服务器

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图10 配置ftp下载网址、用户名和密码

ftp测试服务器可以上传文件,最终会生成一个下载网址,需要填入cm_fota_set_url中(使用demo测试,需确保填入的url与实际生成的下载网址保持一致),再将服务器的登录名和密码填入cm_fota_set_auth中。

3.2 编译升级前后的版本

为了便于后面观察升级能否成功,我们在程序里添加串口打印,修改文件cm_demo_main.c,在主循环my_appimg_enter(char *param)里添加串口打印版本号,用于观察升级前后版本差异,如:V1.0.0和V2.0.0

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图11 修改用户SDK版本号

然后编译前后版本,得到两个版本的压缩包文件ML307A_DCLN_APP.zip并保存,将旧版本固件烧录进模组。

3.3 制作差分包文件

差分包制作直接使用ASR提供的工具adiff.exe,存放在SDK包里面,路径如下:

ML305A_ML307A_OpenCPU_Standard_1.x.x.xxxxxxxxxx_release\tools\adiff

除了adiff.exe文件,其他都可删除。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图12 差分包制作工具

(1)解压当前版本固件ML307A_DCLN_APP.zip,拷贝system.img至adiff.exe根目录,重命名为system_old.img。

(2)解压目标版本固件ML307A_DCLN_APP.zip,拷贝system.img和user_app.bin至adiff.exe根目录,system.img重命名为system_new.img。

(3)打开cmd命令行,进入adiff.exe根目录,执行以下语句:adiff.exe system_old.img system_new.img system_patch.bin -a1 user_app user_app.bin -m

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图13 执行cmd命令制作差分包

最终得到文件夹如下图:

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图14 生成的差分包

3.4 执行FOTA升级

(1)若用http服务器,将差分包文件system_patch.bin上传到http服务器后,模组串口0接TTL工具,开发板上电,驻网后执行以下两条语句:

CM:FOTA:FULLPACKAGE_HTTP

CM:FOTA:UPGRADE

(2)若用ftp服务器,将差分包文件system_patch.bin上传到http服务器后,模组串口0接TTL工具,开发板上电,驻网后执行以下两条语句:

CM:FOTA:FULLPACKAGE_FTP

CM:FOTA:UPGRADE

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图15 FOTA测试指令

(3) 等待升级完成,期间模组会自动重启数次,下图为升级前后的版本号打印:

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图16 串口打印测试结果

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

图16 串口打印测试结果

以上就是使用HTTP和FTP服务器进行FOTA升级的完整流程测试用例。

四、常见问题

1、FOTA重启机制是什么样的,升级失败或超时怎么处理,重启超时时间怎么设置?

FOTA机制为分别升级最小系统和应用APP,共计需要四个阶段,每个阶段任务完成后系统会适当延时保存数据后自动重启并进入下一阶段,正常情况下模组一次完整的FOTA升级需要经历4次重启。若模组FOTA过程中任一阶段失败或超时,则需要重启模组(重启模组后模组会重新尝试完成本阶段的任务),开始计时时间为尝试FOTA的开始时间,非检测到FOTA失败的时间(超时未完成该阶段升级任务也是失败)。网络较差或升级包较大时,尝试重启的超时时间不宜设置过短。例如,某场景下下载升级包的时间需要5分钟,则设置的时间建议至少为6分钟。默认下一次重启时间(用户未设置时)为{5,10,20,30,40,50,120}。

2、配置服务器网址有什么注意事项?

目前仅支持HTTP服务器和FTP服务器,最大256字节,url中必须指定协议类型,比如"ftp://xxx.com:23/xxx.bin"或"http://xxx.com:8080/xxx.bin",ML307A-DCLN/ GCLN支持HTTP(含HTTPS无证书校验)下载方式,ML307A-DSLN/GSLN支持HTTP(含HTTPS无证书校验)、FTP下载方式,不支持FTPS下载方式。

3、FOTA只能支持差分包升级方式吗?是否可以进行整包升级,方便用户对版本进行维护?

app整包FOTA升级方案可行,目前还在开发中,需要预留一半存储空间,对空间要求较高。

#通信模组##模组开发##开发指南##物联网模组#

#ml307a##ML307A-DCLN#

转载自中移物联网,仅供模组品牌对应于中移物联网模组体系参考。

声明:《菩禔物联》所发表内容均为原创,所有原创内容仅用于交流,不代表任何立场和观点。极少数优才文章注明来源的,版权归原出处所有(无法查证版权的或未注明出处的均来源于网络搜集)。如有侵权,请联系我们删除或更改。内容的真实性、准确性和合法性由原作者负责。转载内容(视频、文章、广告等)只以信息传播为目的,仅供参考,不代表本平台认同其观点和立场。

The content published in the Bodhi Union of Things is original, and all original content is for communication purposes only and does not represent any position or viewpoint. A very small number of excellent talent articles indicate their source, and the copyright belongs to the original source (those that cannot be verified or whose source is not indicated are all collected online). If there is any infringement, please contact us to delete or make changes. The authenticity, accuracy, and legality of the content are the responsibility of the original author. The reprinted content (videos, articles, advertisements, etc.) is only for the purpose of information dissemination and is for reference only. It does not mean that this platform agrees with its views and positions.

焕开箱丨打不死的小强,奶不垮的OA,OpenaudiO女巫开箱简评

说到苟,应该除了OA之外,应该没有再比得上它的了,半年前说给我做破军私模,一口拍着胸脯说,放心,做出来包你满意,本着人与人之间最基本的信任,交给OA老板自己发挥,然后顺利做了一条超越RS10成为最丑私模的塞子,我真的怀疑这B是故意的;

本来标题是想起女巫的安利与劝退的,怕琦琦告我版权。。。所以没用;

相比我今天要说的这条女巫。。。虽然只有我破军十分之一的售价。。。但是得益于我破军巨丑的面板和腔体加特,看起来显得好像我破军更廉价;

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

而女巫看起来也开始走二刺螈画风了,只不过这纸片人画得倒是比较另类,起码看起来没有水月雨的老婆们有遐想空间。。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍 aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

配件方面,配了一个耳机包,不过最近几百块钱的妖魔鬼怪比较多,从400多的威泽HE01,到nm2,算是在这些价格比较有竞争力的,配件也比较丰富。因此,算合理吧;

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍 aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

腔体面板嘛。。。反正比我那丁丁8好看,深得qdc精髓啊,插头质感倒是一般;

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍 aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

插针也是类似qdc那种,不愧是靠致敬qdc起家的牌子(手动狗头),不过为啥破军莫名其妙就变成平口0.78了。。。这牌子咋一点统一性都木有。。。

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

好了,前面说了那么多,总归是要吹听感的。。。鉴于OA坑了我的破军,因此女巫的听感简单描述如下:

辣鸡,别买(手动狗头)。

好了,本次开箱简评到此结束,感谢大家观看!

emmm,一码归一码,正常的听感还是要说说的~~

一圈一铁的配置,从参数上看不算难推,毕竟几百块钱的小东西,就用小尾巴来听一发就行,当然,前面也说了,既然有劝退的点,说明女巫并不属于那种中正直白的监听塞,是有自身表现欲望的,那既然是带有色彩的,自然就有人喜欢有人不喜欢,作为一个没有感情的测评工具人,我只是把我的主观感觉写出来,大家自行判断:

aopen 【OpenCPU专区】ML307A OpenCPU丨FOTA介绍

低频方面,仍然是《尘鼓》先行,低频回弹的速度不算快,线条不硬,流行鼓的声音,量感适中或者说稍多一点也行(看和什么比,肯定比nm2多),有一定厚度,音色稍暖,尽管《尘鼓》里面并没有人声,但是从鼓的调性判断,女巫应该属于杂食偏流行的走向,下潜有,但爆发不强,给流行乐补氛围差不多应该是这样的口感;

中频方面,试听的是赵鹏老师——《乌兰巴托的夜晚》,跟和我听完尘鼓之后对中频的猜测大体接近,不过也稍有不同,接近的地方在于,音色仍然是稍暖,整体节奏相对舒缓,不同的地方在于,并没有像一般流行塞一样,把人声调得比较贴耳,或者调高亮度,加润来显得很抓耳,反之,人声距离并不算糊脸,而音色也稍暗,听赵鹏还好,比较沉稳,如果换成童丽或者邓丽君这样偏甜的音色则可能没有那么闪耀,好在低频的氛围不错,再加上不算很近的人声距离,所以整体场景感表现还是OK的;

而高频方面,其实高频的音色没有低频暖,至少刚开声是这样,也就是说圈铁的衔接问题是存在的,和其他博主有过沟通,基本上插台机上煲一晚上会有所改善。

和499的nm2相比,算是两个路数的产品,nm2声底干净,三频趋向于直白,而女巫则相对来说较为浑厚,量感堆积在中下盘;相比999的那个叫啥来着K什么玩意,也是OA家出的,其实999那东西,声音调调还行,不过前年就跟他们老板说了,没啥密度,而女巫至少中下盘的密度基本补起来了;

大推力方面,比如。。。大菠萝,能把女巫的瞬态拉起来一些,低频收得更干净,不过和原本的味道就不太一样了;

总的来说,女巫的定位偏向于中下盘流行向,男声表现优于女声表现,另外多说一句就是,在一些轻音乐的表现上,因为下盘线条加厚了,而音乐本身比较轻盈,感受就是有点往acg背景乐的既视感靠;

599的售价嘛,倒是不贵,而且其实入门塞,调音有个性一点,更容易让小白听出区别,这个思路倒是没错,就像nm2和女巫,如果都给一个小白听,他可能说不上谁更好听,但是他会觉得女巫变化比较大,而对于经验丰富一点的烧友来说,当个二奶机换个口味,也不是不可。

差不多女巫的听感就是这样了~~有兴趣的找个机会试听一下吧。

希望以上内容,能够对你有所帮助,未来本公众号还会更新一些普及类的知识以及各种测评,敬请关注!

相关问答

aopen显示器是什么牌子的?

aopen显示器是建碁的牌子。艾尔鹏国际贸易(上海)有限公司(建碁AOPEN)是建碁AOPEN中国总部,是提供工业计算机及显示器服务与技术平台的渠道运营商。建碁AOPEN...

opena_作业帮

[最佳回答]提起新话题

泰拉瑞亚1.4的aOpenDuplicationMenu怎么用?-小白白也...

泰拉瑞亚彩色荧光棒mod详解兰特剑。9杜兰特锭加13橡树果实合成26近战伤害4%暴击几率中等攻击速度中等击退威力附带杜兰特锭合成。2玻璃块加2仙人掌...

---Istheship_____now?---No,it's_____.()A.open,closeB.ope...

[最佳回答]b,open可作形容词,close为动词,closed为形容词

迅达电梯t3aopen故障如何处理?

迅达电梯报T3AOPEN故障,检查电梯安全回路以下开关:底坑缓冲器开关、机房限速器开关、轿厢安全钳开关、井道上下极限开关以及连接这些开关的电缆和插件保证回...

美的my-13ss505a电压力锅显示open?

13SS505A电压力锅显示OPEN,可能是因为锅盖未正确关闭或密封不良。请检查锅盖是否正确安装并确保密封圈没有变形或磨损。如果问题仍然存在,请联系美的客服或维...

pb中,在运行时,出现thisapplicationneedsascriptforitsopenevent?

报错原因是没找到这两个类,这两个类都是第三方类,所以要额外安装,最简单的方法是去cmd.exe运行pipinstallurllib3和pipinstallrequests,如果cmd.exe告...

opensdk是什么文件夹?

1.SDK的外语全称是SoftwareDevelopmentKit,中文为:软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时...

联想打印机出现:openthefrontcover,thenreplacetheto...

联想打印机出现2113:openthefrontcover,thenreplacethetonercartridgewithanewone意思是:1,激光器的传感5261器出现了问题。410打开前盖...

我最喜欢的习惯是读书英语作文?

Withdevelopmentofscienceandtechnology,newknowledgecomeseveryday.Ifyoustoplearningeven...