发明内容
本发明的一方面,提供一种节省客户端设备可用空间的软件升级方法,所述软件升级方法包括下载阶段和升级阶段。所述下载阶段在下载升级包的同时进行升级包的分包处理,直接基于所接收的升级包的数据包产生用于升级的差分包,即,不需要像传统的升级方法那样先组包在分包。所述升级阶段直接使用所述差分包进行升级,即,不需要像传统的升级方法那样先组包后分包。
在一个优选实施例中,所述下载阶段具体包括:接收升级包的数据包,所述数据包包括头信息和/或数据;根据所述头信息获取差分包信息;根据所述头信息、差分包信息、所述数据的偏移位置,解析出所述数据的归属;根据所述数据的归属,直接将所述数据存储到对应的文件的对应位置。
在一个优选实施例中,所述下载阶段的接收过程具有缓冲机制,用于缓冲所接收的头信息。
在一个优选实施例中,所述下载阶段包括断点续传机制,所述断点续传机制包括缓存已接收的头信息。
在一个优选实施例中,所述软件升级方法为基于OMA DM协议的软件升级方法,所述差分包包括固件差分包、系统软件差分包和/或应用程序差分包。
在一个优选实施例中,所述软件升级方法还包括下载流程判定步骤,所述下载流程判断步骤用于判断是否需要在所述下载阶段在下载升级包的同时进行升级包的分包处理。
本发明的另一方面,提供一种节省客户端设备可用空间的软件升级系统。该软件升级系统包括下载模块和升级模块。所述下载模块包括数据接收模块、数据解析模块和数据存储模块。所述接收模块用于接收升级包的数据包。所述数据解析模块和数据存储模块用于分包处理,直接基于所接收的升级包的数据包产生用于升级的差分包。所述升级模块直接使用所述差分包进行升级。
在一个优选实施例中,所述数据包包括头信息和/或数据。所述数据解析模块与数据接收模块连接,根据所述头信息获取差分包信息,根据所述头信息、差分包信息、所述数据的偏移位置,解析出所述数据的归属。所述数据存储模块根据所述数据的归属,直接将所述数据存储到对应的文件的对应位置。
在一个优选实施例中,所述数据接收模块具有缓冲机制,用于缓冲所接收的头信息;所述下载模块还具有包头缓存模块,用于缓存已接收的头信息以实现断点续传。
在一个优选实施例中,所述软件升级系统为基于OMA DM协议的软件升级系统,所述差分包包括固件差分包、系统软件差分包和/或应用程序差分包。
实施本发明,在下载阶段就完成了升级包的分包处理,不需要像传统的升级方法那样,先组包再分包,降低了对客户端设备的空用空间的需求。
【具体实施方式】
下面详细阐述本发明的工作方式。
本发明针对的是进行FOTA升级的移动终端设备,这类设备包含智能手机、智能平板、便携式Mp3、Mp4播放器等产品。本实例中以智能手机为例进行描述。
为便于理解,先介绍如图1所示的现有标准升级流程。进行版本升级先要发起DM的会话,发起过程根据DM协议的定义可以由服务器端通过推送(wap push)通知也可以由客户端主动发起。
服务器端进行相关的鉴权,判断连接的终端设备是否合法。
鉴权成功,下一步设备端发送自己的版本,产品型号,厂商名称等信息给服务器端,服务器根据这些信息对比服务器上升级包的版本检查是否有合适对应机型的升级包,如果有会通知终端设备允许下载。
如果没有有效升级包则通知终端设备没有对应的更新版本。
步骤S101:设备接到通知有更新包,下载前会判断当前设备的剩余空间是否满足下载要求。
步骤S102:此处判断满足后即会进入下载流程,完成下载完毕。
步骤S103:分包模块需对升级包文件解析并分离出对应的文件系统差分包和固件差分包;如果没有足够的空间供分包模块使用,则这一步将直接导致整个升级流程的失败。
步骤S104:上面分包动作成功则进入升级。
为克服现有升级方法的不足,本发明的软件升级方法,包括下载阶段和升级阶段。所述下载阶段在下载升级包的同时进行升级包的分包处理,直接基于所接收的升级包的数据包产生用于升级的差分包,不像传统的升级方法那样先组包在分包。这样,升级阶段就可以直接使用所述差分包进行升级。实施本发明,可以节省客户端的存储空间,避免因为空间不足而导致升级流程失败。
软件目的升级包分为复合升级包和单独升级包两类。这两种升级包的结构稍有不同,下面分别描述:
如图2即为复合升级包的结构,复合升级包头标志、差分包标志、差分包1大小、差分包2大小这四个连续的部分组成了复合升级包的包头。复合升级包头标志是一个4字节的数据0x0A022400;差分包标志用于标识差分包1的类型是4字节长度的数据(0x00000001代表文件系统类型;0x00000000代表固件类型);差分包1大小是个4字节数据记录了第一个差分包的数据大小;差分包2大小也是个4字节数据记录了第二个差分包的数据大小。
如图3即为单独升级包的结构,单独升级包头标志、包类型标志、差分包大小这三个连续的部分组成了单独升级包的包头。单独升级包标志是一个4字节的数据0x0A011800; 差分包标志用于标识差分包的类型是4字节长度的数据;差分包大小是个4字节数据记录了差分包的数据大小。
因此,本发明需要正确识别升级包的类型,以实现在下载阶段进行分包处理,以得到升级所需的差分包。
本实施例的下载模块如图6所示,下载阶段由下载模块完成。下载模块包含数据接收模块601、数据解析模块602、包头缓存模块603、数据存储模块604。
数据接收模块601,基于超文本传输协议(http)栈实现接收数据内容供数据解析模块处理。
数据解析模块602,拿到数据后需区分数据属于哪一部分,包头部分交给包头缓存模块603,差分包内容部分交给数据存储模块604,下面详细介绍过程。
首先获取文件头信息,由于单独升级包和复合升级包的文件格式有所区别,所以需要先通过头信息确定是什么样的升级包;由于下载数据受当时网络状况影响很大,头信息不一定在收到第一组数据时就已经齐备,需要数据接收模块601加入缓冲机制,当接收到的数据达到文件头信息长度时通知数据解析模块602,从头信息中解析升级包的格式;未接收完成前等待接收剩余的文件头信息直到完毕。
数据解析模块602当头信息接收完毕后,通过比较文件头4字节判断出升级包是哪种更新包(单独升级包或是复合升级包),由此确定包头属于哪种类型,以相应类型的格式分别读取出差分包类型,差分包1大小,差分包2大小这些信息。
包头缓存模块603然后将其保存在设备flash中,包头缓存模块603的作用是当终端在下载过程中发生中断,再次下载升级包时头信息不会重传,通过缓存的信息内容从而实现断点续传,识别当前升级包的格式。
数据解析模块602通过头信息和接收数据的偏移位置,计算出当前数据属于哪一部分,将数据交给数据存储模块并告知其对应保存的文件名。
下面介绍下复合升级包和单独升级包,通过数据偏移位置,如何定位对应当前接收数据属于什么内容
复合升级包的定位如下所述(参考图2):
复合升级包包头大小 = 复合升级包头标志字段 + 差分包标志字段 + 差分包1大小字段 + 差分包2大小字段。
假设差分包标志字段值为0x00000001则差分包1是文件系统类型,差分包2是固件类型。
若数据偏移位置 < 复合升级包包头大小,此数据属于包头部分的数据;
若数据偏移位置 > 复合升级包包头大小 && 数据偏移位置 < (复合升级包包头大小 + 差分包1大小), 此数据属于文件系统差分包的数据。
若数据偏移位置 > (复合升级包包头大小 + 差分包1大小),此数据属于固件差分包的数据。
单独升级包的定位如下所述(参考图3):
单独升级包包头大小 = 单独升级包头标志字段 + 差分包标志字段 + 差分包大小字段。
假设差分包标志字段值为0x00000000则差分包是固件类型。
若数据偏移位置 < 单独升级包包头大小,此数据属于包头部分的数据;
若数据偏移位置 > 单独升级包包头大小,此数据属于固件差分包的数据。
数据存储模块604将数据存储在终端的存储设备中,在存储时判断要存储的文件是否存在,不存在的话新建文件,否则通过附加(append)的方式增加数据到对应文件,这样,就是本发明所述的“直接基于所接收的数据分包生成了差分包”,不需要像传统的升级方法一样先组包在分包。
这样,在升级阶段,就可以直接使用所述差分包进行升级,不需要先组包在分包,降低了对客户端可用存储空间的需求。
参考图5,本发明一个实施例中,软件升级的步骤包括:
步骤S501:开始操作后先记录下载流程的标记用于后续进入下载处理流程来判别下载类型。DM协议用于设备管理,其中包含很多功能点例如软件模块升级、远端参数配置、版本升级等等,版本升级只是用到下载功能的其中一个模块,也就是说本实施例的下载功能能够兼容其它多种应用模式。
步骤S502:此处依然需要判断设备剩余空间大小,如果客户端设备空间不足,则升级过程提前结束。否则,流程进入步骤S503。
步骤S503:下载处理流程会鉴别不同的下载需求选择合适的方式,如果是软件升级,则在下载阶段进行分包处理,直接基于所接收的数据包生成用于升级的差分包。
步骤S504:当所有数据传输完毕时,进入进行升级阶段,此处对设备存储空间已无过多要求,将直接进行升级。至此整个更新流程已经跑完。
参考图4在进入下载流程前
步骤S401:需要判别当前下载流程的标记,通过读取存储在终端设备内存的标志获取。
步骤S402:比较得出当前的下载类型。
步骤S403:如果符合版本升级类型需要进入版本升级的下载分包流程中,然后流程结束。否则,流程进入步骤S404。
步骤S404:采用标准流程;然后继续流程直到下载完成。
本发明升级下载升级包流程及所依赖的服务器皆实现于OMA DM协议基础之上与标准DM协议兼容,其它基于DM协议的设备皆可移植此功能提高下载升级包的效率。
本发明提出的DM下载流程扩展方式,可针对不同的下载场景定义不同的下载流程,最大限度的满足各应用模式的特殊需求,增加定制化的能力
本发明所述的升级包格式仅是其中一种可能的组包实施方案,在不脱离本发明构思的前提与之有类似组包形式的升级包在下载过程中进行分包的处理,均包括在本发明的专利保护范围内。
对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。