一种基于模块的无线固件升级扩展方法和装置
技术领域
本发明涉及一种基于模块的无线固件升级扩展方法和装置。
背景技术
FOTA(FirmwareOverTheAir),是通过无线网络来升级无线终端侧固件。随着新功能的需求以及软件自身缺陷的存在,往往需要通过升级固件来解决,而无线升级则是固件升级的最佳方式。由于资费及网络稳定性等原因,需要尽可能将减小升级包的大小,所以FOTA最常用是差分升级方式。
在传统的FOTA应用中,通常需要一个应用服务器和应用客户端。传统的FOTA应用在手机领域由于对用户来说简单、实用并因此得到了很广泛发展。然而四个因素制约着传统FOTA升级在模块应用场景下的使用:一、专有网络下模块无法与应用服务器进行通信;二、预置FOTA应用服务器需要额外成本;三、用户更依赖于自己的管理服务器;四、升级过程耗时长。因此,由于上述局限性因素使得传统的FOTA无线固件升级方式在模块应用场景下并没有得到广泛的应用。
发明内容
本发明的主要目的在于提出一种基于模块的无线固件升级扩展方法和装置,旨在解决FOTA技术在模块应用场景下无法与服务器通信,无线固件升级被局限的问题。
为实现上述目的,本发明提供的一种基于模块的无线固件升级扩展方法,包含以下步骤:
获取软件升级差分包放置于用户服务器端;
通过UDP方式将差分包从服务器下载到用户MCU;
通过专有FOTA接口的AT指令将用户MCU上的差分包数据分包传输到模块;
对每包数据进行大小及内容的校验;
如果校验成功,则将每包数据写入模块的文件系统,进入模块的固件升级模式。
进一步还包含,将文件系统中的差分包复制到模块FLASH中预留的差分固件备份区,复制成功,则重启模块。
进一步还包含,模块切换到BOOT进行差分固件与原始固件的合成,生成新固件;如果合成新固件成功,则以新固件运行模块;如果合成新固件失败,则恢复原始固件运行模块。
进一步还包含,删除文件系统中的差分包,退出FOTA升级模式。
进一步还包含,所述的软件升级差分包由模块厂商制作并发布。
此外,为实现上述目的,本发明还提出一种基于模块的无线固件升级扩展装置,包含:
升级包获取单元,用于获取软件升级差分包放置于用户服务器端;
下载单元,用于通过UDP方式将差分包从服务器下载到用户MCU;传输单元,通过专有FOTA接口的AT指令将用户MCU上的差分包数据分包传输到模块;
校验单元,用于对每包数据内容进行大小及内容的校验;
升级单元,用于在校验成功时,则将每包数据写入模块的文件系统,进入模块的固件升级模式。
进一步的,还包含复制单元,用于将文件系统中的差分包复制到模块FLASH中预留的差分固件备份区,复制成功,则重启模块。
进一步的,还包含合成单元,用于模块切换到BOOT进行差分固件与原始固件的合成,生成新固件;如果合成新固件成功,则以新固件运行模块;如果合成新固件失败,则恢复原始固件运行模块。
进一步的,还包含删除单元,用于删除文件系统中的差分包,退出FOTA升级模式。
进一步的,所述的软件升级差分包由模块厂商制作并发布。
本发明提出的基于模块的无线固件升级扩展方法和装置,解决了现有技术中模块不能与差分包发布方通讯的问题,且提高了固件升级过程的响应速度与正确率、满足模块在不同应用场景下可以灵活使用无线固件升级,提高模块产品的稳定性与长期性,降低了用户在模块产品的维护成本。
附图说明
图1为实现本发明实施例一提供的基于模块的无线固件升级扩展方法流程示意图;
图2为实现本发明实施例二提供的基于模块的无线固件升级扩展方法流程示意图;
图3为实现本发明实施例三提供的基于模块的无线固件升级扩展装置结构示意图;
图4为实现本发明实施例四提供的基于模块的无线固件升级扩展装置结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的模块。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
实施例一
如图1所示,本发明实施例一提出的一种基于模块的无线固件升级扩展方法,包括:
S101,获取软件升级差分包放置于用户服务器端;
具体的,模块厂商制作并发布软件版本的差分包,用户获取模块厂商制作并发布的软件升级版本差分包并放置在用户的服务器端,以备用户从服务器端下载所述的软件差分包。
S102,通过UDP方式将差分包从服务器下载到用户MCU;
具体的,用户通过其无线通讯单元以UDP方式将软件差分包从其服务器端下载到用户MCU。
S103,通过专有FOTA接口的AT指令将用户MCU上的差分包数据分包传输到模块;
具体的,用户设备端MCU将获取到的软件差分包的数据内容,通过模块提供的专用接口AT指令,采用分包的方式传输到模块端。
S104,对每包数据进行大小及内容的校验;
具体的,模块对每包数据内容进行大小及内容的校验,以确认数据的正确性。
S105,判断是否校验成功,如果校验成功,则执行S106,如果校验不成功,则执行S107;
具体的,如果校验不成功,有可能是差分包下载不正确,所以无法完成升级。
S106,将每包数据写入模块的文件系统,进入模块的固件升级模式。
S107,结束。
具体的,如果校验确认数据的内容和大小都正确,则将每包数据写入模块的文件系统,当所有数据包传输完毕后,差分包就完整地写入文件系统中;
然后进入模块的固件升级模式。文件系统中的差分包复制到模块FLASH中预留的差分固件备份区;复制成功则重启模块;模块切换到BOOT进行差分固件与原始固件的合成,产生新固件;判断是否成功合成新固件,成功则以新固件运行模块,失败则恢复原始固件运行模块;删除文件系统中的差分包,退出FOTA升级模式,执行新的固件。
以上实现的基于模块的无线固件升级扩展方法,解决了模块与差分包发布方不能直接通讯导致模块无法通过FOFTA方式升级软件的问题,从而使模块能够采用差分包的方式进行升级,大大提升了模块的升级效率。
实施例二
如图2所示,本发明实施例二提出的一种基于模块的无线固件升级扩展方法,包括:
S201,获取软件升级差分包放置于用户服务器端;
具体的,模块厂商制作并发布软件版本的差分包,用户获取模块厂商制作并发布的软件升级版本差分包并放置在用户的服务器端,以备用户从服务器端下载所述的软件差分包。
S202,通过UDP方式将差分包从服务器下载到用户MCU;
S203,通过专有FOTA接口的AT指令将用户MCU上的差分包数据分包传输到模块;
S204,对每包数据进行大小及内容的校验;
S205,判断是否校验成功,如果校验成功,则执行S206;如果不成功,则执行S210;
S206,将每包数据写入模块的文件系统,进入模块的固件升级模式;
S207,将文件系统中的差分包复制到模块FLASH中预留的固件差分固件备份区,复制成功,则重启模块;
S208,模块切换到BOOT进行差分固件与原始固件的合成,生成新固件;如果合成新固件成功,则以新固件运行模块;如果合成新固件失败,则恢复原始固件运行模块;
S209,删除文件系统中的差分包,退出FOTA升级模式;
具体的,新固件合成成功后,删除文件系统中的差分包,退出固件升级模式,执行新的固件。
S210,结束。
实施例三
如图3所示,本发明实施例三提出的一种基于模块的无线固件升级扩展装置,所述系统包括:升级包获取单元10、下载单元20、传输单元30、校验单元40、升级单元50。
升级包获取单元10,用于获取软件升级差分包放置于用户服务器端;
具体的,模块厂商制作并发布软件版本的差分包,用户获取模块厂商制作并发布的软件升级版本差分包并放置在用户的服务器端,以备用户从服务器端下载所述的软件差分包。
下载单元20,用于通过UDP方式将差分包从服务器下载到用户MCU;
具体的,模块通过其无线通讯单元以UDP方式将软件差分包从其服务器端下载到用户MCU。
传输单元30,通过专有FOTA接口的AT指令将用户MCU上的差分包数据分包传输到模块;
具体的,用户MCU使用专有FOTA接口的AT指令将差分包的数据内容分包传输到模块。
校验单元40,用于对每包数据内容进行大小及内容的校验;
具体的,模块对每包数据内容进行大小及内容的校验,以确认数据的正确性。
升级单元50,用于在校验成功时,则将每包数据写入模块的文件系统,进入模块的固件升级模式。
具体的,如果校验单元40确认数据的内容和大小都正确,则升级单元50将每包数据写入模块的文件系统,然后进入模块的固件升级模式。文件系统中的差分包复制到模块FLASH中预留的固件差分固件备份区;复制成功则重启模块;模块切换到BOOT进行差分固件与原始固件的合成,生产新固件;判断是否成功合成新固件,成功则以新固件运行模块,失败则恢复原始固件运行模块;删除文件系统中的差分包,退出FOTA升级模式。
以上实现的基于模块的无线固件升级扩展装置,解决了模块与差分包发布方不能直接通讯的问题,从而使模块能够采用差分包的方式进行升级,大大提升了模块的升级效率。
实施例四
如图4所示,本发明实施例四提出的一种基于模块的无线固件升级扩展装置,所述系统包括:升级包获取单元10、下载单元20、传输单元30、校验单元40、升级单元50、复制单元60、合成单元70、删除单元80。
其中升级包获取单元10、下载单元20、传输单元30、校验单元40、升级单元50与实施例三相同,在此不赘述。
其中,
复制单元60,设置为将文件系统中的差分包复制到模块FLASH中预留的差分固件备份区,复制成功,则重启模块。
合成单元70,设置为模块切换到BOOT进行差分固件与原始固件的合成,生成新固件;如果合成新固件成功,则以新固件运行模块;如果合成新固件失败,则恢复原始固件运行模块。
删除单元80,设置为删除文件系统中的差分包,退出FOTA升级模式。
以上实现的基于模块的无线固件升级扩展方法和装置,提高了固件升级过程的响应速度与正确率、满足模块在不同应用场景下可以灵活使用无线固件升级,提高模块产品的稳定性与长期性,降低了用户在模块产品的维护成本。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。