一种差分升级的方法、装置及系统与流程

文档序号:17488841发布日期:2019-04-23 20:14阅读:391来源:国知局
一种差分升级的方法、装置及系统与流程

本申请涉及通信技术领域,特别是涉及一种差分升级的方法、装置及系统。



背景技术:

空中下载技术(over-the-airtechnology,ota),是一种通过互联网下载升级包进行系统升级的技术。采用上述ota技术进行系统升级的终端设备,例如手机,平板电脑,智能手表,以及智能电视等,通过互联网从服务器下载系统的升级包,利用所下载的升级包对该终端设备的系统进行升级。

采用ota技术进行系统升级时,存在两种升级方式。一种升级方式是全量升级,另一种升级方式是差分升级。采用全量升级方式时,终端设备从服务器下载全量升级包,该全量升级包中包括系统升级后的目标版本的所有的数据,该全量升级包的数据量大,下载该全量升级包所需的时间长;并且,根据该全量升级包对系统进行升级后,终端设备的硬件可能无法支持升级后的系统,导致终端设备存在安全问题。

采用差分升级方式时,终端设备从服务器下载差分升级包,该差分升级包能够体现升级前的原版本的系统,与升级后的目标版本的系统之间的差异。该差分升级包的数据量小,下载该差分数据包所需的时间短;并且,该终端设备的硬件不能支持的数据,也不会存在该差分数据包中,避免终端设备升级后存在安全性问题。

但是,采用差分升级方式,要求原版本的系统中,与目标版本的系统存在数据差异的部分的数据没有被修改过,与原版本的系统中的原始数据一致,若存在数据差异的部分的数据被修改过,则该差分升级方式则无法使用。



技术实现要素:

本申请解决的技术问题在于提供一种差分升级的方法、装置和系统,从而,在终端设备中存在数据差异的部分被修改过时,先对终端设备的系统进行修复,在对修复后的终端设备的系统进行差分升级。

第一方面,本申请提供了一种差分升级的方法,包括:

终端设备获取差分升级包和差分升级包和升级对象的修复数据,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象,修复数据是升级对象在原版本的系统中的原始数据;

终端设备利用修复数据修复终端设备的系统,获得修复后的系统,修复后的系统与原版本的系统一致;

终端设备利用差分升级包,将系统从原版本升级到目标版本。

可选地,终端设备获取升级对象的修复数据包括:

终端设备获取升级对象的校验数据,校验数据对应于原始数据;

终端设备根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据是否一致;

当前数据与原始数据不一致时,终端设备获取升级对象的修复数据。

可选地,终端设备获取升级对象的修复数据包括:

终端设备将升级对象的标识信息发送至服务器;

终端设备接收服务器根据标识信息返回的升级对象的修复数据。

可选地,升级对象的标识信息包括文件的标识或块block的标识。

可选地,校验数据是原始数据的哈希值,终端设备根据校验数据,校验升级对象在终端设备中的当前数据,与升级对象在原版本的系统中的原始数据是否一致包括:

终端设备获取当前数据的哈希值;

终端设备校验当前数据的哈希值与校验数据是否一致;

若当前数据的哈希值与校验数据一致,则终端设备确定当前数据与原始数据一致;若当前数据的哈希值与校验数据不一致,则终端设备确定当前数据与原始数据不一致。

第二方面,本申请还提供了一种差分升级方法,包括:

服务器获取终端设备升级前的原版本的系统,以及升级后的目标版本的系统;

服务器根据原版本的系统和目标版本的系统确定升级对象,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象;

服务器获取差分升级包和升级对象的修复数据,修复数据是升级对象在原版本的系统中的原始数据;

服务器向终端设备发送差分升级包和升级对象的修复数据。

可选地,服务器获取升级对象的修复数据包括:

服务器获取升级对象的校验数据,校验数据对应于原始数据;

服务器将升级对象的校验数据发送至终端设备;

当终端设备根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据不一致时,服务器接收终端设备发送的升级对象的标识信息;

服务器根据升级对象的标识信息,获取升级对象的修复数据。

可选地,升级对象的校验数据是原始数据的哈希值。

第三方面,本申请还提供了一种差分升级的装置,应用于终端设备,包括:

第一获取模块,用于获取差分升级包和升级对象的修复数据,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象,修复数据是升级对象在原版本的系统中的原始数据;

修复模块,用于利用修复数据修复终端设备的系统,获得修复后的系统,修复后的系统与原版本的系统一致;

升级模块,用于利用差分升级包,将系统从原版本升级到目标版本。

可选地,包括:

第一获取单元,用于获取升级对象的校验数据,校验数据对应于原始数据;

第一校验单元,用于根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据是否一致;

第二获取单元,用于当前数据与原始数据不一致时,获取升级对象的修复数据。

可选地,第一获取模块,包括:

发送单元,用于将升级对象的标识信息发送至服务器;

接收单元,用于接收服务器根据标识信息返回的升级对象的修复数据。

可选地,升级对象的标识信息包括文件的标识或块block的标识。

可选地,校验数据是原始数据的哈希值,校验单元,包括:

获取子单元,用于获取当前数据的哈希值;

校验子单元,用于校验当前数据的哈希值与校验数据是否一致;若当前数据的哈希值与校验数据一致,则终端设备确定当前数据与原始数据一致;若当前数据的哈希值与校验数据不一致,则终端设备确定当前数据与原始数据不一致。

第四方面,本申请还提供了一种差分升级装置,应用于服务器,装置包括:

第二获取模块,用于获取终端设备升级前的原版本的系统,以及升级后的目标版本的系统;

确定模块,用于根据原版本的系统和目标版本的系统确定升级对象,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象;

第三获取模块,用于获取差分升级包和升级对象的修复数据,修复数据是升级对象在原版本的系统中的原始数据;

发送模块,用于向终端设备发送差分升级包和升级对象的修复数据。

可选地,第三获取模块,包括:

第三获取单元,用于获取升级对象的校验数据,校验数据对应于原始数据;

发送单元,用于将升级对象的校验数据发送至终端设备;

第二校验单元,用于根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据不一致时,服务器接收终端设备发送的升级对象的标识信息;

第四获取单元,用于根据升级对象的标识信息,获取升级对象的修复数据。

可选地,升级对象的校验数据是原始数据的哈希值。

第五方面,本申请提供了一种差分升级系统,包括:

终端设备,终端设备包括:上述第三方面提供的装置;

服务器,服务器包括:上述第四方面提供的装置。

由上述内容可知,本申请存在以下有益效果:

终端设备采用差分升级将系统由原版本升级到目标版本之前,将原版本的系统中,与目标版本的系统存在差异的对象作为升级对象,获取该升级对象的修复数据,利用该修复数据对终端设备的系统进行修复,获得终端设备的修复后的系统,该终端设备的修复后的系统与原版本的系统一致,再对该终端设备的修复后的系统进行差分升级,从而将修复后的系统从原版本升级到目标版本。利用修复数据对终端设备的系统进行修复,确保终端设备的修复后的系统,与原版本的系统一致,从而,能够确保该终端设备可以使用差分升级方式对系统进行升级。

附图说明

为了更清楚地说明本申请的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本申请实施例提供的一种差分升级的系统结构示意图;

图2为本申请实施例提供的一种差分升级的方法的流程图;

图3为本申请实施例提供的另一种差分升级的方法的流程图;

图4为本申请实施例提供的一种差分升级的方法场景实施例流程图;

图5为本申请实施例提供的应用于终端设备的一种差分升级的装置的结构图;

图6为本申请实施例提供的应用于服务器的一种差分升级的装置的结构图;

图7为本申请实施例提供的一种差分升级的系统的示意图;

图8为本申请实施例提供的相关的手机的部分结构的框图。

具体实施方式

为了给出确保终端设备能够采用差分升级的实现方案,本申请实施例提供了一种差分升级的方法、装置和系统,以下结合说明书附图对本申请所提供的实施例进行说明。

为了使本申请技术方案的描述便于理解,下面先对本申请涉及的名称概念进行介绍。

原版本的系统,是指在终端设备更新前,该终端设备上安装的系统,例如,emui5.0。

目标版本的系统,是指在终端设备更新后,该终端设备上安装的系统,例如,emui8.0。

实际使用的系统,是指在终端设备更新前,该终端设备上实际正在使用的系统。实际使用的系统与原版本的系统对应的系统版本相同,例如,均为emui5.0。如果在终端设备上安装了原版本系统后,在使用的过程中,对该系统中的数据进行了修改,产生了实际使用的系统;如果在终端设备上安装了原版本系统后,在使用的过程中,对该系统没有进行任何修改,那么,实际使用的系统与原版本的系统一致。

系统的升级,是指终端设备使用的系统从原版本更新到目标版本的过程。

差分升级,是指根据升级前原版本的系统与升级后目标版本的系统的数据差异,实现系统的过程。

升级对象,是指在原版本的系统中,与目标版本的系统存在数据差异的对象。服务器中存储有终端设备升级前的原版本的系统,还存储有该终端设备升级后的目标版本的系统,将原版本的系统和目标版本的系统进行比较,确定出原版本的系统中,与目标版本的系统存在数据差异的对象,即为此次终端设备进行系统差分升级的升级对象。具体的,升级对象可以是文件,也可以是block。

原始数据,是指原版本系统在安装时系统中的数据。

当前数据,是指实际使用的系统中的数据。

修复数据,是指升级对象在原版本的系统中的原始数据。

修复数据包,是指差分升级前,由服务器发送给终端设备的,用于修复实际使用的系统的数据包,修复后的系统中升级对象对应的数据与原版本的系统安装时的系统中该部分数据完全一致。

差分升级包,是指由服务器发送给终端设备的,用于实现终端设备的差分升级的数据包。

ota差分升级技术,是根据升级前原版本的系统,与升级后目标版本的系统的数据差异,实现系统升级的技术。采用ota差分升级时,服务器仅给终端设备发送差分升级包,该差分升级包能体现原版本的系统与目标版本的系统之间的数据差异,例如,原版本的系统包括数据a,b,c,目标版本的系统包括数据a,b,c’,则差分升级包包括数据c’。也就是说,ota差分升级是以原版本的系统为基础进行升级,因此,对终端设备采用ota差分升级时,要求终端设备的升级对象没有被修改过,该升级对象指的是终端设备所采用的原版本的系统中,与目标版本的系统存在数据差异的部分,例如原版本的系统包括文件a、文件b和文件c,目标版本的系统包括文件a、文件b和文件c’,则升级对象为文件c。若终端设备所采用的系统,曾被破解,或者发生过emmc(embeddedmultimediacard)数据跳变,会导致该终端设备所采用的原版本的系统数据发生改变,若该终端设备的升级对象的数据发生改变,则ota差分升级的数据基础发生变化,则无法采用该差分升级包进行差分升级。

为了解决上述问题,本申请实施例提供了差分升级的实现方案,终端设备获取升级对象的修复数据,该修复数据是该升级对象在终端设备的原版本的系统中的原始数据,利用上述修复数据修复终端设备实际使用的系统,获得修复后的系统,该修复后的系统与原版本的系统一致,对上述修复后的系统进行差分升级,将修复后的系统从原版本升级到目标版本。本申请实施例中,先对终端设备的系统进行修复,将终端设备的系统修复至与原版本的系统一致,再对修复后的终端设备的系统进行差分升级,确保采用差分升级方式对系统升级的有效性。

下面先对本申请实施例的系统进行介绍,具体参见图1,该系统包括:服务器100,终端设备110。其中,服务器100,包含终端设备110的原版本的系统和目标版本的系统,服务器100可以比较原版本的系统以及目标版本的系统,确定出升级对象,并从原版本的系统中,获取升级对象的修复数据,将该升级对象的修复数据发送至终端设备110。终端设备110利用该升级对象的修复数据,对系统进行修复,再对修复后的系统进行差分升级。具体的,服务器100可以是应用程序服务提供商或者终端设备提供商;终端设备110可以是手机、平板电脑、智能手表、智能电视等pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑、tv、可穿戴设备、ar、vr设备等。

下面结合附图对本申请实施例进行详细说明。

图2为本申请实施例提供的一种差分升级的方法流程图,包括以下步骤:

步骤201,服务器获取终端设备升级前的原版本的系统,以及升级后的目标版本的系统。

步骤202,服务器根据原版本的系统和目标版本的系统确定升级对象,其中,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象。

在终端设备的系统中,为了不断满足终端用户的需求,以及修改一些bug,系统的版本会不断更新,更新前的该终端设备的系统的版本称为原版本,更新后的该终端设备的系统的版本称为目标版本。终端设备的系统从原版本更新到目标版本的过程,即为系统的升级。系统的升级消息可以是服务器推送给用户的,也可以是终端设备查询服务器获得的。

服务器中存储有终端设备升级前的原版本的系统,还存储有该终端设备升级后的目标版本的系统,将原版本的系统和目标版本的系统进行比较,确定出原版本的系统中,与目标版本的系统存在数据差异的对象,即为此次终端设备进行系统差分升级的升级对象。

如果升级对象的升级类型为替换,即,该升级对象在原版本的系统和目标版本的系统中都存在,但是该升级对象中的数据,在原版本的系统和目标版本的系统中存在差异。例如,服务器通过比较,发现在某终端设备的原版本的系统中包含对象a,目标版本的系统中也包含对象a,对象a中的数据不同,则确定出对象a为升级对象,且升级对象a的升级类型为替换。

如果升级对象的类型为删除,即,该升级对象在原版本的系统中存在,而在目标版本的系统中不存在。例如,服务器通过比较,发现在某终端设备的原版本的系统中包含对象a,目标版本的系统中不包含对象a,则确定出对象a为升级对象,且升级对象a的升级类型为增加。

此外,还有一种可能的情况:升级的升级类型为增加,即,目标版本的系统中存在的对象,在原版本的系统中不存在。也就是说,该种差分升级是在原版本的系统的基础上增加对象,该增加的对象,不是原版本的系统中的对象,故不能作为升级对象。例如,服务器通过比较,发现在某终端设备的目标版本的系统中包含对象a,但是在原版本的系统中不包含对象a,则可以确定出升级的类型为增加,但是因为对象a在原版本的系统中不存在,对象a不能作为升级对象。

在具体实现时,升级对象可以是文件,也可以是文件中的block,其中,block一般为4k=4096字节,是文件中的最小逻辑存储单元。终端设备的系统在升级前后,升级对象的标识不发生变化,但是升级对象中的数据可能发生改变。其中,如果升级对象是文件,则升级对象的标识指文件的标识。例如,升级对象为文件时,升级对象的标识是该文件的文件标识abc,升级之后,目标版本的系统中还存在文件标识为abc的文件,但是标识为abc的文件中的数据已经发生了改变。如果升级对象是block,则升级对象的标识指block的标识。例如,升级对象为block时,升级对象的标识是该block的文件标识blockx,升级之后,目标版本的系统中还存在block标识为blockx的block,但是标识为blockx的block中的数据已经发生了改变。

步骤203,服务器向终端设备发送升级对象的修复数据,该修复数据可以是升级对象在原版本的系统中的原始数据。

步骤204,终端设备利用该修复数据修复终端设备的系统,获得修复后的系统。

修复数据是升级对象在原版本的系统中的原始数据,当升级对象是文件时,修复数据是被确定为升级对象的文件在原版本的系统中的原始数据;当升级对象是block时,修复数据是被确定为升级对象的block在原版本的系统中的原始数据。

服务器在步骤202中确定出升级对象后,确定该升级对象在原版本的系统中的原始数据,例如,可以根据该升级对象的标识确定该原始数据的存储地址,再根据该存储地址确定一个存储区域,从该存储区域中获得该升级对象在原版本的系统中的原始数据,将该升级对象在原版本的系统中的原始数据,记作升级对象的修复数据。升级对象的修复数据,包括升级对象的存储地址等标识与该升级对象在原版本的系统中的原始数据的对应关系。服务器将升级对象的修复数据发送给终端设备,终端设备根据接收到的升级对象的修复数据,确定需要修复的对象。

当升级对象是文件时,文件的修复数据中,文件的标识可以是文件名称等,修复数据为文件在原版本的系统中的原始数据。终端设备根据接收到的文件名称或者文化存储地址,确定将要修复的文件,利用该文件的修复数据覆盖终端设备中该文件的数据,完成修复。

当升级对象是block时,block的修复数据中,block的标识包括block偏移地址、block所属的文件的存储地址,block数据总长度,起始block编号,以及结束block编号,修复数据为block在原版本的系统中的原始数据。终端设备根据接收到的block偏移地址、block所属的文件的存储地址、block数据总长度、起始block编号以及结束block编号,确定将要修复的block,利用该block的修复数据覆盖终端设备中该block的数据,完成修复。需要说明的是,升级对象为block时,除了block起始编号以外,还依据block数据总长度和结束block编号中的任意一项,都可以确定出将要修复的block,block的标识可以仅包括block数据总长度和结束block编号中的任意一个,也可以同时包括block数据总长度和结束block编号,在本申请中不作限定。

这里需要说明的是,升级对象是block时,该升级对象包括多个block,并且多个block在文件中是连续的。起始block编号指的是在文件中排列在最靠前位置的block的编号,结束block编号指的是在文件中排列在最后位置的block的编号。

例如,某终端设备接收到服务器发送的升级对象的修复数据,其中,升级对象为block,block的标识为:block所属的文件的存储地址:1000,block偏移地址:120,block数据总长度:555,起始block编号:1364,结束block编号:1368。首先,终端设备根据block所属的文件的存储地址1000,找到block所属的文件;然后按照block偏移地址120,确定起始block,即起始block编号对应的block;接着,从起始block编号1364到结束block编号1368,连续的5个block均为升级对象,这5个block中数据总长度为555。利用所接收的5个block的修复数据,替换终端设备中上述5个block中的数据,完成对上述5个block的修复。

对于一个终端设备来说,修复前所使用的系统与修复后所使用的系统都是原版本,但是该终端设备修复前实际使用的系统的数据,与原版本最初所使用的系统的数据可能存在数据差异。定义该终端设备修复前实际使用的系统的数据为当前数据,原版本最初所使用的系统的数据为原始数据。

在修复过程中,若终端设备的系统的当前数据中存在升级对象,则利用升级对象的修复数据,覆盖该当前数据中升级对象对应的当前数据。例如,某终端设备修复前实际使用的系统的当前数据中包括升级对象a,升级对象a中的当前数据为xxy,则利用升级对象a的修复数据,即升级对象a在该系统的原始数据xy,覆盖当前数据xxy,覆盖后,终端设备的系统中升级对象a中的当前数据与原始数据一致,均为xy。

若终端设备的系统的当前数据中不存在升级对象,则添加该升级对象的修复数据。例如,某终端设备修复前实际使用的系统的当前数据中不包括升级对象a,即升级对象a中的当前数据为空,则将升级对象a的修复数据,即升级对象a对应于所使用的系统的原始数据xy,添加到当前数据中升级对象a应该处于的位置,添加后,终端设备的系统中升级对象a中的当前数据与原始数据一致,均为xy。

修复后的系统与原版本的系统一致,是终端设备的系统进行差分升级的基础。终端设备的原版本的系统中的原始数据,是指该原版本最初发布时,升级对象对应的没有被修改过的数据,终端设备在该原版本的原始数据的基础上,才能采用差分升级方式,从原版本升级到目标版本。无论终端设备原版本的升级对象的原始数据发生任何改变,都将造成差分升级包无法使用,无法采用差分升级方式进行升级。因此,本申请实施例中,在进行差分升级之前,先获取所要升级的升级对象的修复数据,对终端设备的原版本的系统进行修复,确保终端设备中该升级对象的数据,与原版本的系统的原始数据一致,进而确保采用差分升级的有效性。

举例来说,对于原版本的系统中存在对象:文件123,文件123包含数据a、b1,目标版本的系统中也存在文件123,包含数据a’、b’,则升级对象就是文件123。在原版本的系统中,可知文件123的原始数据为a、b,则修复数据是文件123对应的原始数据a、b;终端设备利用文件123中的原始数据a、b,覆盖文件123中的当前数据a、b1,完成修复,且修复后升级对象文件123中的当前数据与原始数据一致,均为数据a、b,即修复后的系统与原版本系统一致。

举例来说,对于原版本的系统中存在对象:block1000,block1000包含数据a1、b、c,目标版本的系统中也存在block1000包含数据a’、b’、c’,则升级对象就是block1000。在原版本的系统中,可知block1000的原始数据为a、b、c,则修复数据是block1000对应的原始数据a、b、c;终端设备利用block1000中的原始数据a、b、c,覆盖block1000中的当前数据a1、b、c,完成对block1000的修复,且修复后升级对象block1000中的当前数据与原始数据一致,均为a、b、c,即修复后的系统与原版本系统一致。

需要说明的是,上述当前数据和原始数据,均为升级对象对应的当前数据和原始数据,进行修复时,只是针对升级对象,利用升级对象的修复数据对该升级对象的当前数据进行修复,使升级对象对应的当前数据与升级对象对应的原始数据一致,至于系统的其他非升级对象部分,进行修复与否,修复后的数据与原版本的数据是否一致,本申请并不关注。

步骤205,终端设备利用服务器发送的差分升级包,将系统从原版本升级到目标版本。通过步骤204,终端设备得到修复后的系统,确保终端设备中当前数据与原版本的系统的原始数据一致,满足差分升级的前提条件。

终端设备接收到服务器发送的差分升级包,利用该差分升级包,对升级对象进行差分升级。该差分升级可以是基于文件的差分升级,文件差分升级是以文件为单位进行的升级;也可以是基于block的差分升级,block差分升级是以文件中的block为单位的升级。

由上述技术方案可知,本申请实施例提供的差分升级的方法中,包含修复数据和差分升级包。在升级时,首先利用修复数据对终端设备的系统进行修复,确保终端设备中的升级对象对应的当前数据与原版本的系统中该处的原始数据一致;在此基础上,再采用差分升级包进行差分升级,升级完成之后,终端设备的系统从原版本升级为目标版本。

本申请实施例提供的差分升级方法,为了避免由于终端设备所使用的原版本的原始数据被修改导致的差分升级失败,在终端设备采用差分升级之前,获取原版本的系统中,与目标版本的系统存在差异的升级对象,并利用该升级对象的修复数据对终端设备的系统进行修复,修复到与原版本的系统一致,再对该修复后的系统进行差分升级。先修复,再差分升级,能够确保该终端设备使用差分升级方式的有效性。

在上述本申请实施例中,终端设备进行差分升级前,需要对该终端设备的系统进行修复。上述实例中,为了更好的理解本申请技术方案的优点,所举的例子,都是默认升级对象的修复数据,与终端设备实际使用的系统中升级对象的当前数据不一致。上述提供的实现方式的实际应用场景下,无论升级对象的修复数据,与终端设备实际使用的系统中升级对象的当前数据是否一致,都要从服务器获取所有升级对象的修复数据,利用修复数据对升级对象的当前数据进行修复,然后才采用差分升级包进行差分升级,确保了使用差分升级方式进行升级的有效性。

但是,在实际进行差分升级时,可能升级对象的修复数据,与终端设备实际使用的系统中升级对象的当前数据是完全一致的,此时就不需要对终端设备的系统进行修复,即可直接利用差分升级包进行差分升级;也可能存在部分升级对象的修复数据,与终端设备实际使用的系统中升级对象的当前数据不一致,而不是所有的都不一致,则只需要对当前数据与原始数据不一致的升级对象进行修复,然后利用差分升级包进行差分升级。故,为了能进一步减少修复数据的数据量和修复次数,可以增加校验步骤,以确定是否需要对升级对象进行修复,具体参见本申请下面一个实施例提供的差分升级方法。

如图3所示,在一个例子中,本申请实施例提供的差分升级的方法,包括:

步骤301,终端设备获取升级对象的校验数据,该校验数据与升级对象的原始数据对应。

校验数据与升级对象在终端设备的原版本的系统中的原始数据相对应,一种情况下,一个升级对象的校验数据为该升级对象的原始数据本身;另一种情况下,一个升级对象的校验数据,是该升级对象的原始数据的哈希值。在具体实现时,服务器在获悉终端设备的原版本的系统后,将原版本的系统与目标版本的系统进行比较,得到升级对象;服务器在原版本的系统中,获取升级对象对应的原始数据;将原始数据直接作为升级对象的校验数据,或者,利用哈希算法,计算该原始数据的哈希值,将该哈希值作为升级对象的校验数据。

需要说明的是,校验数据采用原始数据的哈希值表示,实际上实现了对原始数据的压缩,缩小了校验数据的数据量,节约了校验数据占用的存储空间,进而减少了传输校验数据的时间。步骤302,终端设备根据上述校验数据,校验升级对象在终端设备中的当前数据,与原始数据是否一致,如果否,执行步骤303;如果是,执行步骤305。

当前数据,是指在终端设备实际使用的系统上,升级对象对应的当前数据。在发生emmc数据跳变或者被破解等情况下,可能会导致终端设备中升级对象对应的当前数据,与升级对象的原始数据不一致,因此,终端设备先要对升级对象进行校验,校验该升级对象的原始数据是否发生过改变。

在一种实现方式中,校验数据为升级对象的原始数据本身,此时,将升级对象的原始数据,与终端设备中该升级对象的当前数据进行比较,若原始数据和当前数据完全一致,则表示该升级对象的原始数据没有发生改变;若原始数据与当前数据不完全一致,则表示该升级对象的原始数据曾被修改。

当升级对象是文件时,原始数据为终端设备的原版本的系统中,该文件对应的文件中的原始数据;而当前数据为终端设备上实际使用的原版本的系统中,该文件对应的文件中的当前数据。校验的过程就是比较每个文件对应的原始数据和当前数据是否一致,如果某个文件的当前数据在原始数据的基础上进行了修改,那么,对该文件的校验结果为不一致;如果某个文件的当前数据还是在原版本系统安装时的原始数据,没有被修改过,那么,对该文件的校验结果为一致。

当升级对象是block时,原始数据为终端设备的原版本的系统中,该block对应的block中的原始数据;而当前数据为终端设备上实际使用的原版本的系统中,该block对应的block中的当前数据。校验的过程就是比较每个block对应的原始数据和当前数据是否一致,如果某个block的当前数据在原始数据的基础上进行了修改,那么,对该block的校验结果为不一致;如果某个block的当前数据还是在原版本系统安装时的原始数据,没有被修改过,那么,对该block的校验结果为一致。

在另一种实现方式中,当校验数据为原始数据的哈希值时,步骤302包括:

终端设备获取当前数据的哈希值,校验该当前数据的哈希值与校验数据是否一致。

当校验数据为升级对象的原始数据的哈希值时,终端设备将获取升级对象的当前数据,然后,利用相同的哈希算法,计算出当前数据的哈希值,与获取到的该升级对象的原始数据的哈希值进行比较,若原始数据的哈希值和当前数据的哈希值完全一致,则表示该升级对象的原始数据与当前数据也是一致的,即该升级对象的原始数据没有发生改变;若校验数据与当前数据的哈希值不一致,则表示该升级对象的原始数据与当前数据是不完全一致的,即该升级对象的原始数据曾被修改。

当升级对象是文件时,校验数据为终端设备的原版本的系统中,该文件对应原始数据通过哈希算法,计算得到的原始数据的哈希值;而在获取到该文件对应的当前数据后,需要按照相同的哈希算法,计算得到当前数据的哈希值。校验的过程就是比较每个文件对应的校验数据和当前数据的哈希值是否一致,如果某个文件的当前数据在原始数据的基础上进行了修改,那么,该文件中校验数据与当前数据的哈希值不一致,即对该文件的校验结果为不一致;如果某个文件的当前数据还是在原版本系统安装时的原始数据,那么,该文件中校验数据与当前数据的哈希值一致,即对该文件的校验结果为一致。

当升级对象是block时,校验数据为终端设备的原版本的系统中,该block对应原始数据通过哈希算法,计算得到的原始数据的哈希值;而在获取到该block对应的当前数据后,需要按照相同的哈希算法,计算得到当前数据的哈希值。校验的过程就是比较每个block对应的校验数据和当前数据的哈希值是否一致,如果某个block的当前数据在原始数据的基础上进行了修改,那么,该block中校验数据与当前数据的哈希值不一致,即对该block的校验结果为不一致;如果某个block的当前数据还是在原版本系统安装时的原始数据,那么,该block中校验数据与当前数据的哈希值一致,即对该block的校验结果为一致。

步骤303,终端设备获取升级对象的修复数据。

当升级对象的当前数据与升级对象的原始数据不一致时,说明终端设备实际使用的原版本的系统中,有升级对象对应的原始数据被修改过,需要终端设备获取被修改过的升级对象对应的修复数据。

当一个升级对象的当前数据与原始数据不一致时,需要对该升级对象进行修复,确保该升级对象的当前数据与原始数据一致,才能对该升级对象使用差分升级,此时,需要从服务器获取该升级对象的修复数据。当一个升级对象的当前数据与原始数据一致时,则不需要对该升级对象进行修复,直接对该升级对象升级即可。由此可知,终端设备从服务器获取升级对象的修复数据时,只需要获取当前数据与原始数据不一致的升级对象的修复数据即可,无需获取当前数据与原始数据一致的升级对象的修复数据。

若只存在一部分升级对象的当前数据与原始数据不一致,则无需获取所有升级对象的修复数据,只需要获取部分升级对象的修复数据,在这种实现场景下,与图2所示的实施例相比,减少获取升级对象的修复数据的数量。

当升级对象的当前数据与升级对象的原始数据不一致时,终端设备获取升级对象的修复数据包括:

步骤303a,终端设备将升级对象的标识信息发送至服务器;

步骤303b,服务器根据上述标识信息,返回升级对象的修复数据给终端设备。

升级对象的标识信息,是指能够标识该升级对象的信息。当升级对象为文件时,升级对象的标识信息是文件的标识,如:文件名称等;当升级对象为block时,升级对象的标识信息是block的标识,如:block偏移地址、block所属的文件的存储地址、block数据总长度、起始block编号以及结束block编号等。

对于当前数据与原始数据不一致的升级对象的情况,终端设备将该升级对象的标识信息发送给服务器;服务器接收到升级对象的标识信息后,通过标识信息,从服务器侧获取原版本的系统中该标识信息对应的原始数据,作为修复数据,返回给终端设备。

例如,对于升级对象为文件,当文件x对应的当前数据与原始数据不一致时,该文件的名称x为文件的标识,终端设备将x发送给服务器,服务器根据标识x找到在原版本的系统中对应的名称为x的文件,并将该文件x中的数据作为修复数据返回给终端设备;对于升级对象为block,当blockn对应的当前数据与原始数据不一致时,该block的编号n为该block的标识,终端设备将n发送给服务器,服务器根据标识n找到在原版本的系统中对应的名称为n的block,并将该blockn中的数据作为修复数据返回给终端设备。

步骤304,终端设备利用上述修复数据,修复终端设备的系统,获得修复后的系统。步骤304对终端设备的实际使用的系统的修复,与本申请图2所示的实施例中步骤204的描述一致,这里不再赘述。

步骤305,终端设备利用服务器发送的差分升级包,将系统从原版本升级到目标版本。

步骤305中对终端设备进行差分升级,与本申请图2所示的实施例中步骤205的描述一致,这里不再赘述。

举例说明,当升级对象为block时,对于某个终端设备原版本的系统中,存在升级对象:block1000、block1001、block1002、block1003,其中,block1000包含数据a1、b,block1001包含数据c、d,block1002包含数据e1、f1,block1003包含数据g、h。终端设备获取到的校验数据为带block标识的原始数据,具体为:block1000的校验数据为a、b,block1001的校验数据为c、d,block1002的校验数据为e、f,block1003的校验数据为g、h;终端设备根据上述校验数据,比较每个升级对象的当前数据与原始数据是否一致,具体为:block1000的当前数据为a1、b,block1001的当前数据为c、d,block1002的当前数据为e1、f1,block1003的当前数据为g、h,得到当前数据与原始数据不一致的升级对象的标识为block1000、block1002;终端设备block1000、block1002的标识信息发送到服务器,服务器依据block的标识信息,将该标识信息对应的block1000的原始数据a、b,以及block1002的原始数据e、f,作为修复数据返回给终端设备;终端设备利用接收到的修复数据,对终端设备的系统中,block1000、block1002的当前数据进行修复,获得修复后的系统;利用服务器发送的差分升级包对上述升级对象进行升级,升级后的目标版本中,对应的升级对象的数据为:a’、b’、c’、d’、e’、f’、g’、h’。

可见:由于block1001和block1003这两个升级对象中的数据没有被修改,仍然是原始数据,因此通过校验操作之后,将不会对block1001和block1003再进行修复的过程,直接利用差分升级包进行差分升级即可;只对于block1000和block1002这样的校验不一致的升级对象,进行针对性的进行修复和差分升级。

当升级对象为文件时,对于某个终端设备原版本的系统中,存在升级对象:文件123、文件234、文件345,其中,文件123包含数据a、b,文件234包含数据c、d,文件345包含数据e、f。终端设备获取到的校验数据为带文件名称的原始数据,具体为:文件123的校验数据为a、b,文件234的校验数据为c、d,文件345的校验数据为e、f;终端设备根据上述校验数据,比较每个升级对象的当前数据与原始数据是否一致,具体为:文件123当前数据a、b与原始数据a、b,文件234的当前数据c、d与原始数据c、d,文件345的当前数据e、f与原始数据e、f,得到当前数据与原始数据全部一致;此时,终端设备将直接利用服务器发送的差分升级包,对上述升级对象进行升级,升级后的目标版本中,对应的升级对象的数据为:a’、b’、c’、d’、e’、f’。

可见:由于文件123、文件234、文件345三个升级对象中的当前数据,相对于原始数据,都没有发生改变,因此通过校验操作之后,不必对任意的升级对象进行修复,直接利用服务器发送的差分升级包进行差分升级即可。

这里需要说明的是,上述实例中,升级对象的校验数据,以该升级对象的原始数据为例进行说明,升级对象的校验数据,为该升级对象的原始数据的哈希值的实现方式类似,这里不再赘述。

在上述本申请实施例中,为了避免由于终端设备的版本数据发生改变导致的升级失败,在终端设备采用差分升级之前,获取升级对象,对升级对象对应的当前数据和原始数据进行校验,将校验不一致的升级对象的原始数据作为修复数据,对终端设备实际使用的原版本的系统进行修复。通过上述校验,减少了修复的数据量和修复次数,进一步减少了差分升级过程的数据量,针对性的提升了差分升级的效率和有效性。

参见图4,在一个应用场景中,本申请实施例提供的差分升级的方法,包括:

步骤401,服务器100根据升级对象对应的原始数据,生成该升级对象的校验数据。

步骤402:将该升级对象的校验数据发送至终端设备110。

具体实现时,服务器100向终端设备110索要该终端设备110当前实际使用的系统的版本号。服务器100根据该终端设备110的版本号,获得该版本号对应的原版本的系统的原始数据,服务器获取目标版本的系统的目标数据,将原始数据与目标数据进行比对,获得该原版本的系统中,与目标版本的系统存在数据差异的对象,作为升级对象。

服务器100确定升级对象后,获取该升级对象在原版本的系统中对应的原始数据,对每个升级对象的原始数据进行哈希运算,获得该升级对象对应的哈希值,作为该升级对象的校验数据。将所得的升级对象的校验数据,发送至终端设备110。

步骤403,终端设备110根据升级对象的校验数据,确定待修复的升级对象。

终端设备110获取升级对象在终端设备110实际使用的系统中对应的当前数据,计算当前数据的哈希值,校验同一升级对象对应的校验数据与当前数据的哈希值是否一致,如果不一致,则将该升级对象作为待修复的升级对象。

步骤404,终端设备110将待修复的升级对象发送至服务器100。

此处待修复的升级对象,是指当前数据与原始数据不一致的升级对象,可以是在终端设备110中发生改变的文件,也可以是在终端设备110中发生改变的block。

步骤405,服务器100将修复升级包和差分升级包发送至终端设备110,该修复升级包包括待修复的升级对象在原版本的系统中对应的原始数据;该差分升级包包括差分升级时所需的所有升级对象对应的目标数据。

差分升级技术的主要技术思想是:通过比较终端设备上的系统版本与服务器上的系统目标版本的数据差异,针对数据差异的部分,以文件或者block为单位进行升级。因此,差分升级包类似于补丁包的结构,不涉及两个不同版本的系统中相同的数据部分,可以最大程度较少升级包的体积。

差分升级的前提条件是:实际使用的系统与原始系统中对应的升级对象的数据一致。故,需要对实际使用的系统先进行修复,将升级对象对象的当前数据修复到与升级对象的原始数据一致。

其中,修复升级包包含修复数据,修复数据即标识信息对应的升级对象的原始数据。

举例来说,对于升级对象为block,在服务器100的原版本系统中存在数据:

imgdiff2988193532207507257845300946f991021812b9df8cf68

3b898296759f6d169c18ca868e7e1f8324f58eb12,411364,41136622,411364,411366

其中加粗的数据为起始block编号与结束block编号,根据起始block编号与结束block编号,从原版本系统中提取出升级对象对应的原始数据,并生成对应的修复升级包,具体为:recover("/dev/block/bootdevice/by-name/system","3181","555",”411364”,”411366”),第一个参数代表需要修复的block偏移地址,第二个参数代表block所属的文件的存储地址,第三个参数代表block数据总长度,最后两个参数表示修复数据对应的起始block编号和结束block编号;表示修复数据是从block编号为411364到block编号为411366共三个block中的数据。

不管是差分升级包还是修复升级包,在本申请实施例中都不对其结构做具体限定,任意形式的升级包结构,只要能够清楚、简捷的指导终端设备完成指定升级对象的升级和修复,都在本申请实施例描述的范围之内。

对于差分升级包,是指由升级对象在目标版本的系统中对应的数据打包成的数据包,相对于升级对象,差分升级包中的对象的数据内容,体现该升级对象的升级类型,具体的升级类型可以是:替换、增加、删除等。

在另一个实例中,可以仅执行步骤405,不执行步骤401-404。仅执行步骤405时,该修复升级包包括所有升级对象在原版本的系统中对应的原始数据。无论升级对象对应的当前数据与原始数据是否存在差异,都对该升级对象进行修复。

步骤406,终端设备110利用修复升级包进行数据修复。

修复的过程,具体可参见图2所述的实施例的描述,这里不再赘述。

步骤407,终端设备110利用差分升级包完成差分升级。

对于某个差分升级包中的对象,如果该对象的升级类型为替换,则升级的过程为:用差分升级包中的该对象替换终端设备原版本的系统中的该对象。举例来说:对于某个终端设备中,原版本的系统与目标版本的系统都存在对象:block1000、block1001、block1002、block1003,其中,block1000包含数据a、b,block1001包含数据c、d,block1002包含数据e、f,block1003包含数据g、h。差分升级包中包含对象block1000、block1001、block1002、block1003,且上述对象中的数据为:block1000的数据为a’、b’,block1001的数据为c’、d’,block1002的数据为e’、f’,block1003的数据为g’、h’。利用差分升级包进行差分升级,具体的差分升级过程为:对于对象block1000,用差分升级包中的数据为a’、b’替换原始数据a、b;对于对象block1001,用差分升级包中的数据为c’、d’替换原始数据c、d;对于对象block1002,用差分升级包中的数据为e’、f’替换原始数据e、f;对于对象block1003,用差分升级包中的数据为g’、h’替换原始数据g、h。差分升级后,目标版本的系统中对应的数据为:a’、b’、c’、d’、e’、f’、g’、h’,完成差分升级。

对于某个差分升级包中的对象,如果该对象的升级类型为增加,则升级的过程为:将差分升级包中的该对象对应增加到终端设备原版本的系统中对应的位置。需要说明的是,增加的对象只存在与目标版本的系统中,在原版本的系统中并不存在。举例来说:对于某个终端设备原版本的系统中存在block1000、block1001、block1002,其中,block1000包含数据a、b,block1001包含数据c、d,block1002包含数据e、f;差分升级包中包含升级类型为增加的对象:block1003,增加的位置为:与block1002相邻且在block1002之后,block1003中的数据为:g’、h’。利用差分升级包进行差分升级,具体的差分升级过程为:对于对象block1003,将差分升级包中的数据为g’、h’增加到block1002的数据e、f之后。差分升级后,目标版本的系统中对应的数据为:a、b、c、d、e、f、g’、h’,完成差分升级。

对于某个差分升级包中的对象,如果该对象的升级类型为删除,则升级的过程为:用差分升级包中的该对象的删除指令,删除终端设备原版本的系统中对应的对象。举例来说:对于某个终端设备原版本的系统中存在:block1000、block1001、block1002、block1003,其中,block1000包含数据a、b,block1001包含数据c、d,block1002包含数据e、f,block1003包含数据g、h。差分升级包中包含对象block1000以及一个“delete”的指令。利用差分升级包进行差分升级,具体的差分升级过程为:对于对象block1000,依据差分升级包中block1000对应的“delete”指令,将原始数据a、b删除。差分升级后,目标版本的系统中对应的数据为:c、d、e、f、g、h,完成差分升级。

在具体实现时,一个差分升级包中包含的所有对象对应的差分升级的类型,可能只有增加、删除、替换中的一种,也可能有增加、删除、替换中的任意两种或者三种,在这里不作限定,具体进行差分升级的过程中,针对差分升级包中的每个对象,按照该对象对应的升级类型进行升级即可。

,通过本申请实施例的方法,在差分升级之前,先对终端设备实际使用的系统进行校验,对于校验结果不一致的升级对象,进行修复,然后对修复后的系统进行差分升级;对于校验结果一致的升级对象,直接进行差分升级。一方面,提高了使用差分升级方式进行系统升级的有效性,另一方面,进一步减少了修复数据量和修复次数,使升级对象的修复更有针对性,从总体上减小了差分升级过程的数据量。

对于大部分的差分升级包,体积不到相同版本的全量升级包的10%,即使加上对应的修复数据,升级包的体积也远小于全量升级包的体积,因此,本申请实施例的差分升级方法,可以减少终端设备的下载数据量,缩短升级包下载时间,并且提升了差分升级的效率和有效性,提升用户体验。

本申请实施例还提供了一种差分升级装置,下面结合附图对其进行详细说明。

图5为本申请实施例提供的一种差分升级装置的结构图,应用于终端设备,该装置包括:第一获取模块501,用于获取差分升级包和升级对象的修复数据,其中,升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象,修复数据是升级对象在原版本的系统中的原始数据。

修复模块502,用于利用修复数据修复终端设备的实际使用的系统,获得修复后的系统,该修复后的系统与原版本的系统一致。

升级模块503,用于利用差分升级包,将系统从原版本升级到目标版本。

可选地,上述第一获取模块501,包括:

第一获取单元,用于获取升级对象的校验数据,该校验数据对应于所述原始数据;

第一校验单元,用于根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据是否一致;

第二获取单元,用于当当前数据与原始数据不一致时,获取升级对象的修复数据。

可选地,上述第一获取模块501,包括:

发送单元,用于将升级对象的标识信息发送至服务器;

接收单元,用于接收服务器根据标识信息返回的升级对象的修复数据。

其中,升级对象的标识信息包括文件的标识或块block的标识。

在具体实现时,校验数据是原始数据的哈希值时,上述校验单元,包括:

获取子单元,用于获取当前数据的哈希值;

校验子单元,用于校验当前数据的哈希值与校验数据是否一致;若当前数据的哈希值与校验数据一致,则终端设备确定当前数据与原始数据一致;若当前数据的哈希值与校验数据不一致,则终端设备确定当前数据与原始数据不一致。

此外,本申请实施例还提供了另一种差分升级装置,应用于服务器,如图6所示,为该装置的结果图,该装置包括:

第二获取模块601,用于获取终端设备升级前的原版本的系统,以及升级后的目标版本的系统。

确定模块602,用于根据原版本的系统和目标版本的系统确定升级对象,该升级对象是原版本的系统中,与目标版本的系统存在数据差异的对象。

第三获取模块603,用于获取差分升级包和升级对象的修复数据,其中,修复数据是升级对象在原版本的系统中的原始数据。

发送模块604,用于向终端设备发送差分升级包和升级对象的修复数据。

可选地,上述第三获取模块603,包括:

第三获取单元,用于获取升级对象的校验数据,该校验数据对应于原始数据;

发送单元,用于将升级对象的校验数据发送至终端设备;

第二校验单元,用于根据校验数据,校验升级对象在终端设备中的当前数据,与原始数据不一致时,服务器接收终端设备发送的升级对象的标识信息;

第四获取单元,用于根据升级对象的标识信息,获取升级对象的修复数据。

在具体实现时,升级对象的校验数据是原始数据的哈希值。

以上是对本申请实施例提供的差分升级装置的介绍,具体实现方式可以参见上文所示方法实施例中的描述,达到的效果与上述方法实施例一致,这里不再赘述。

与上述本申请实施例提供的方法相对应,本申请实施例还提供了一种差分升级系统。请参阅图7,为本申请实施例所提供的差分升级系统的示意图,该系统包括:

终端设备701,包括:上述图5所示的差分升级装置;

服务器702,包括:上述图6所示的差分升级装置。

对本申请实施例提供的差分升级系统的具体介绍,可以参见上文图5和图6所示装置实施例中的描述,达到的效果与上述方法实施例一致,这里不再赘述。

本申请实施例涉及一种终端设备,该终端设备可以包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等。

以终端设备是手机为例,图8示出的是与本申请实施例相关的手机800的部分结构的框图。参考图8,手机800包括、rf(radiofrequency,射频)电路810、存储器820、其他输入设备830、显示屏840、传感器850、音频电路860、i/o子系统870、处理器880、以及电源890等部件。本领域技术人员可以理解,图8中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。本领领域技术人员可以理解显示屏840属于用户界面(ui,userinterface),且手机800可以包括比图示或者更少的用户界面。

下面结合图8对手机800的各个构成部件进行具体的介绍:

rf电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器880处理;另外,将设计上行的数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、lna(lownoiseamplifier,低噪声放大器)、双工器等。此外,rf电路810还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于gsm(globalsystemofmobilecommunication,全球移动通讯系统)、gprs(generalpacketradioservice,通用分组无线服务)、cdma(codedivisionmultipleaccess,码分多址)、wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)、lte(longtermevolution,长期演进)、电子邮件、sms(shortmessagingservice,短消息服务)等。

存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行手机800的各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图象播放功能等)等;存储数据区可存储根据手机800的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其他输入设备830可用于接收输入的数字或字符信息,以及产生与手机800的用户设置以及功能控制有关的键信号输入。具体地,其他输入设备830可包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)等中的一种或多种。其他输入设备830与i/o子系统870的其他输入设备控制器871相连接,在其他设备输入控制器871的控制下与处理器880进行信号交互。

显示屏840可用于显示由用户输入的信息或提供给用户的信息以及手机800的各种菜单,还可以接受用户输入。具体的显示屏840可包括显示面板841,以及触控面板842。其中显示面板841可以采用lcd(liquidcrystaldisplay,液晶显示器)、oled(organiclight-emittingdiode,有机发光二极管)等形式来配置显示面板841。触控面板842,也称为触摸屏、触敏屏等,可收集用户在其上或附近的接触或者非接触操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板842上或在触控面板842附近的操作,也可以包括体感操作;该操作包括单点控制操作、多点控制操作等操作类型。),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板842可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位、姿势,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成处理器能够处理的信息,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板842,也可以采用未来发展的任何技术实现触控面板842。进一步的,触控面板842可覆盖显示面板841,用户可以根据显示面板841显示的内容(该显示内容包括但不限于,软键盘、虚拟鼠标、虚拟按键、图标等等),在显示面板841上覆盖的当触控面板842上或者附近进行操作,触控面板842检测到在其上或附近的触摸操作后,通过i/o子系统870传送给处理器880以确定触摸事件的类型以确定用户输入,随后处理器880根据触摸事件的类型在显示面板根据用户输入通过i/o子系统870在显示面板841上提供相应的视觉输出。虽然在图8中,触控面板842与显示面板841是作为两个独立的部件来实现手机800的输入和输入功能,但是在某些实施例中,可以将触控面板842与显示面板841集成而实现手机800的输入和输出功能。

手机800还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在手机800移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机800还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路860、扬声器861,麦克风862可提供用户与手机800之间的音频接口。音频电路860可将接收到的音频数据转换后的信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,麦克风862将收集的声音信号转换为信号,由音频电路860接收后转换为音频数据,再将音频数据输出至rf电路808以发送给比如另一手机,或者将音频数据输出至存储器820以便进一步处理。

i/o子系统870用来控制输入输出的外部设备,可以包括其他设备输入控制器871、传感器控制器872、显示控制器873。可选的,一个或多个其他输入控制设备控制器871从其他输入设备830接收信号和/或者向其他输入设备830发送信号,其他输入设备830可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)。值得说明的是,其他输入控制设备控制器871可以与任一个或者多个上述设备连接。所述i/o子系统870中的显示控制器873从显示屏840接收信号和/或者向显示屏840发送信号。显示屏840检测到用户输入后,显示控制器873将检测到的用户输入转换为与显示在显示屏840上的用户界面对象的交互,即实现人机交互。传感器控制器872可以从一个或者多个传感器850接收信号和/或者向一个或者多个传感器850发送信号。

处理器880是手机800的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行手机800的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器880可包括一个或多个处理单元;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。

手机800还包括给各个部件供电的电源890(比如电池),优选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

尽管未示出,手机800还可以包括摄像头、蓝牙模块等,在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1