一种机顶盒升级方法以及机顶盒与流程

文档序号:11437617阅读:306来源:国知局
一种机顶盒升级方法以及机顶盒与流程

本发明涉及通信技术领域,特别涉及一种机顶盒升级方法。本发明同时还涉及一种机顶盒。



背景技术:

数字视频变换盒通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备。它可以将压缩的数字信号转成电视内容,并在电视机上显示出来。信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。机顶盒接收的内容除了模拟电视可以提供的图像、声音之外,更在于能够接收数字内容,包括电子节目指南、因特网网页、字幕等等。使用户能在现有电视机上观看数字电视节目,并可通过网络进行交互式数字化娱乐、教育和商业化活动。

安卓是一种基于linux的自由及开放源代码的操作系统,由于其具有丰富的扩展性以及贴近用户的易用性,越来越多的机顶盒选择搭载安卓系统,并据此向用户提供多样性的便捷服务。为了保证机顶盒中能够与当前最新版本的安卓系统保持一致,机顶盒中的安卓系统都会设置有相应的升级功能。

目前,搭载安卓系统的机顶盒的在需要升级时,均是在通过boot启动后根据存储的标识或特定按键来引导和启动存储在缓存flash中的recovery程序,再由recovery读取存储在u盘或者其他分区(通常为cache分区)的升级包完成升级功能。然而,发明人在实现本发明的过程中发现,当recovery程序由于客观因素出现损坏(例如坏块所导致的损坏或升级recovery过程中出现掉电而导致的损坏)或是recovery程序本身存在功能缺陷(如新驱动设备不支持原有的recovery程序)时,即无法通过该方式完成机顶盒的升级操作,技术人员此时需要通过其他方式(例如刷机)来完成针对机顶盒的升级,从而给技术人员带来了不必要的操作上的麻烦。



技术实现要素:

本发明提供一种机顶盒升级方法以及机顶盒,通过将升级镜像预置在升级包中,然后利用该升级镜像引导升级包对机顶盒进行升级,用以解决现有技术中的因自身的recovery程序故障以及无法根据用户的指令进行操作而导致升级失败的问题,提高了机顶盒升级成功的概率,进而提高用户的使用体验。

为了达到上述技术目的,本发明实施例提出了一种机顶盒升级方法,该方法包括:

机顶盒对已存储的第一恢复镜像进行校验;

当所述第一恢复镜像的校验值与预设值不同时,解压升级包并获取所述升级包中包含的第二恢复镜像;

引导所述第二恢复镜像启动所述机顶盒,以使所述第二恢复镜像通过所述升级包对所述机顶盒进行升级。

相应的,本发明实施例还提出了一种机顶盒,包括:

校验模块,用于机顶盒对已存储的第一恢复镜像进行校验;

处理模块,用于当所述第一恢复镜像的校验值与预设值不同时,解压升级包并获取所述升级包中包含的第二恢复镜像;

升级模块,用于引导所述第二恢复镜像启动所述机顶盒,以使所述第二恢复镜像通过所述升级包对所述机顶盒进行升级。

综上所述,与现有技术相比,本发明实施例所提出的技术方案的有益技术效果包括:

本发明公开了一种机顶盒升级方法以及机顶盒,机顶盒对已存储的第一恢复镜像进行校验,当第一恢复镜像的校验值与预设值不同时,解压升级包并获取升级包中包含的第二恢复镜像,引导第二恢复镜像启动机顶盒,以使第二恢复镜像通过升级包对机顶盒进行升级。本发明在机顶盒自身的recovery程序出现故障以及无法根据用户的指令直接进行升级或更新时,可以根据升级包中预置的恢复镜像来引导升级包对机顶盒进行更新或升级,提高了机顶盒升级成功的概率,有效的避免了因自身的recovery程序故障以及无法根据用户的指令进行操作而导致升级失败的问题。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提出的一种机顶盒升级方法的流程示意图;

图2为本发明具体实施例所提出的一种机顶盒升级方法的流程示意图;

图3为本发明实施例所提出的一种机顶盒的结构示意图。

具体实施方式

如背景技术所述,由于现有的机顶盒在需要升级时,均是在通过boot启动后根据存储的标识或特定按键来引导和启动存储在flash中的recovery程序,再由recovery读取存储在u盘或者其他分区(通常为cache分区)的升级包完成升级功能。这样一来,当recovery程序由于客观因素出现损坏或是recovery程序本身存在功能缺陷时,也即无法通过该方式完成机顶盒的升级操作,技术人员此时便需要通过其他方式(例如刷机)来完成针对机顶盒的升级,从而给技术人员带来了不必要的操作上的麻烦,降低了用户体验。

有鉴于以上现有技术中的问题,本申请提出了一种机顶盒升级方法。该方法通过将升级镜像预置在升级包中,然后利用该镜像引导升级包对机顶盒进行升级,用以解决现有技术中的recovery程序出现故障而导致升级失败,从而降低了用户体验的问题。

如图1所示,为本发明实施例所提出的一种机顶盒升级方法的流程示意图,包括以下步骤:

步骤s101、机顶盒对已存储的第一恢复镜像进行校验。

如背景技术所述,现有技术中使用的机顶盒,在更新或升级时,均是利用boot启动后再根据存储的标识或特定按键来引导和启动存储的recovery程序,最后再由recovery读取升级包中的数据来完成升级的。由于recovery程序是存储在缓存flash中的,当缓存flash不可用亦或是recovery程序本身故障时,就会造成升级失败的问题,因此,本发明的核心技术思想是将recovery程序预置在升级包中,当需要进行升级时,便可以直接从升级包中调用,可以有效的避免因缓存flash不可用或recovery程序本身故障导致升级失败的情况出现,具体的实现过程将在后续的论述中详尽阐述。

在本发明的优选实施方式中,在当检测到机顶盒已存储的第一恢复镜像发生损坏或接收到用户的跳过指示时,在机顶盒的内存中挂载并读取升级包,具体为:判断时间阈值内是否接收到与指定操作匹配的用户操作;若判断结果为否,对第一恢复镜像进行校验,并在校验结果为不同时确认第一恢复镜像发生损坏,以在机顶盒的内存中挂载并读取升级包;若判断结果为是,根据用户操作生成跳过指示,以在机顶盒的内存中挂载并读取升级包。这样一来,本发明首先判断是否存在用户的指定操作指令,当存在制定操作指令时,以使程序跳过对第一恢复镜像的验证,而直接执行对升级包中预置的第二恢复镜像进行读取操作;然后在判断第一恢复镜像是否存在故障,来确定是否执行对升级包中预置的第二恢复镜像进行读取操作。可见,本发明通过两次有效的判断来确定是否对升级包中预置的第二恢复镜像进行解压和读取操作,使得对第一恢复镜像的故障判断更加可靠。

需要注意的是,在具体的实施方式中,本申请在检测第一恢复镜像是否发生损坏时,是通过将第一恢复镜像读取至内存,然后对第一恢复镜像进行校验并得到校验值,当该校验值与预设值不同时(这里的不同表示的是该第一恢复镜像读取错误、出错、失败或无法使用的意思;当校验值与预设值相同时,这里的相同表示的是该第一恢复镜像读取正确、准确,可以进行后续的升级操作),对预设的升级包进行解压,并从解压得到的文件中找到目标文件(当然,文件名是可自定义的,目标文件就是申请中的第二恢复镜像),然后将目标文件读取至内存;进一步的重复上述检测过程,即对目标文件进行校验,当校验值与预设值相同时,采用第二恢复镜像进行升级。

还需要说明的是,本发明采用的先判断是否存在用户的指定操作指令,仅是本发明的一个优选实施方案,在一些具体使用场景中,也可以是先针对第一恢复镜像进行验证,这些变化都在本发明的保护范围之内。

在这里,本领域的技术人员所熟知的是,机顶盒的缓存flash中有多个存储位置,例如:boot/bootargs/cfg/recovery/kernel/system/data/cache等分区来存储不同的模块。其中,分区boot是机顶盒启动的第一个运行程序,用来加载基本设备驱动,然后读取bootargs分区的内容,并根据cfg分区内的标记信息,来完成启动内核或者启动recovery程序的操作。因此,在本发明的优选实施方式中,在判断出需要对升级包中预置的第二恢复镜像进行读取操作后,需要在机顶盒的内存中挂载并读取升级包,具体为:在机顶盒的指定分区内获取升级包的标记信息;根据标记信息确定升级包的存储位置,并在机顶盒的内存中设置第一空间以及第二空间;将升级包从存储位置挂载至第一空间;在第一空间对升级包进行读取。这里,主要是获取升级包的具体位置信息,并将升级包挂载到机顶盒的内存中,后续的操作便都是在机顶盒的内存中进行的,可以保证操作不会被背景技术中所提到的客观因素干扰。

步骤s102、当所述第一恢复镜像的校验值与预设值不同时,解压升级包并获取所述升级包中包含的第二恢复镜像。

通过步骤s101,针对已存储的第一恢复镜像进行校验,会得到关于第一恢复镜像的校验值,然后将该校验值与系统预设的预设值进行对比,当对比结果不同时,确定需要对预置升级包中的第二恢复镜像进行解压和读取操作,并进一步的将包含第二恢复镜像的升级包挂载到机顶盒的内存中,本步骤则主要是对挂载之后的升级包进行解压和读取操作。由上可知,本发明在机顶盒的内存中设置了第一空间和第二空间,分别用于存储升级包和从升级包中读取的升级程序,具体的解压和读取方式将在后续的说明中详尽阐述。

具体的,从升级包中提取第二恢复镜像的方式为:将第一空间中的数据进行解压;判断是否能根据指定路径在解压后的文件目录中加载第二恢复镜像;若加载成功,将第二恢复镜像读取到第二空间,并在第二恢复镜像的完整性校验通过之后将第二空间内的数据传入指定的引导接口,以引导第二恢复镜像启动;若加载失败,终止升级机顶盒。

需要说明的是,本发明在机顶盒的内存中设置了两个分别用于存储的空间,主要是考虑到读取到的第二恢复镜像的重要性,所以要将其单独进行存储,当然,在另一些实施场景中,也可以不设置单独的存储空间,而将读取到的第二恢复镜像与升级包存储在同一个空间内。

步骤s103、引导所述第二恢复镜像启动所述机顶盒,以使所述第二恢复镜像通过所述升级包对所述机顶盒进行升级。

该步骤中,主要是利用读取到的第二恢复镜像来引导升级包对机顶盒进行更新和升级,从而解决因recovery程序出现故障而导致升级失败的问题,进而提高了用户体验。

具体的,根据步骤s102中,在第二恢复镜像的完整性校验通过之后将第二空间内的数据传入指定的引导接口,具体为:根据第二恢复镜像中完整性校验值的位置确定起始位置;根据起始位置以及第二恢复镜像的镜像长度在第二空间内获取对比数据;对对比数据进行完整性校验;若对比数据的完整性校验值与第二恢复镜像中完整性校验值一致,确认第二恢复镜像的完整性校验通过,并将第二空间内的数据传入引导接口;若对比数据的完整性校验值与第二恢复镜像中完整性校验值不一致,终止升级机顶盒。这里,主要是对读取的第二恢复镜像进行校验,判断其完整性以及正确性,只有完整且正确的第二恢复镜像才能够对机顶盒进行升级,从而保证机顶盒在更新或升级的过程中不会因第二恢复镜像的问题而导致失败。

由此可见,与现有技术相比,本发明实施例所提出的技术方案的有益技术效果包括:

本发明公开了一种机顶盒升级方法以及机顶盒,机顶盒对已存储的第一恢复镜像进行校验,当第一恢复镜像的校验值与预设值不同时,解压升级包并获取升级包中包含的第二恢复镜像,引导第二恢复镜像启动机顶盒,以使第二恢复镜像通过升级包对机顶盒进行升级。本发明在机顶盒自身的recovery程序出现故障以及无法根据用户的指令直接进行升级或更新时,可以根据升级包中预置的恢复镜像来引导升级包对机顶盒进行更新或升级,提高了机顶盒升级成功的概率,有效的避免了因自身的recovery程序故障以及无法根据用户的指令进行操作而导致升级失败的问题。

为了进一步阐述本发明的技术思想,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如上所述,现有技术中对机顶盒的升级或更新方法均是利用缓存flsh中的recovery程序来实现的,具体为:boot启动时,根据存储的标识或特定按键,来引导和启动存储在flash中的recovery程序,再由recovery读取存储在u盘或者其他分区(通常为cache分区)的升级包完成升级功能。但是在某些情况下,可能出现recovey损坏(比如坏块导致损坏或升级ecovery过程中出现掉电损坏时),或recvoery本身存在功能缺陷(如新驱动设备的支持),这样就无法再完成升级功能。

因此,本发明针对该技术问题,通过将升级镜像预置在升级包中,然后利用该镜像引导升级包对机顶盒进行升级,用以解决recovery程序出现故障而导致升级失败的问题,从而提高了用户体验。

在介绍本发明的技术方案之前,还需要先介绍一下现有技术中利用recovery程序对机顶盒进行升级或更新的步骤,通常情况下,机顶盒的flash中存储boot/bootargs/cfg/recovery/kernel/system/data/cache等分区来存储不同的模块。其中boot是机顶盒启动的第一个运行程序,用来加载基本设备驱动,读取bootargs(启动系统的环境变量信息)内容,并根据cfg分区(通常存储升级文件路径,升级标识等。原生android里面命名为misc分区。我们自己的系统中,扩展了很多内容,格式也有所不同)内的标记信息,来完成启动内核,或者启动recovery。

当cfg分区内有标记为启动recovery时,则boot会先读取bootargs分区内的数据,并根据bootargs内存储的信息(例如recovery存储在flash中的位置,大小。)来把flash中的recovery镜像读取到内存,并引导recovery启动。

recovery启动后,会读取cfg分区内标记,找到升级包所在位置,完成升级功能。

如图2所示,为本发明具体实施例所提出的一种机顶盒升级方法的流程示意图,本发明的方案提出了一种从升级包中取出recovery镜像的方法,并利用一系列有效措施,使boot能直接引导并启动升级包中的recovery来完成升级的方法,具体如下:

(1)boot读取cfg分区内的信息,查找升级包所在位置。升级包通常在u盘或者catch目录。在boot中开辟两块内存空间a和b。

(2)在boot内,按照升级包目录,挂载并读取升级包到内存a。

(3)boot内使用zip解压算法,对内存a中的数据进行解压,并直接尝试加载其中指定路径内(通常为system/recovery.bin)的recovery镜像,如果成功,则将recovery镜像读取到内存b。

(4)recovery镜像是使用mkimgs制作的标准linux镜像,在镜像前部有64字节头信息,包含了镜像长度l和其crc校验值等。将boot中内存b+64为其实位置,总长度为l的数据做crc校验,结果与镜像头中的crc值比对,判断镜像是否获取、解压成功。

(5)释放a区域内存。将内存中b的数据,以及有效数据长度l,传入到boot中的引导镜像函数接口,boot引导此recovery启动,recovery开始接管机顶盒运行状态,并完成升级功能

基于以上论述可知,围绕本发明所提供的技术方案在结合产品的具体使用场景,还针对boot启动的流程做出了改进,具体如下:

(1)在boot根据cfg值,准备启动recovery时,先读取存储在flash中的recovery,通过recovery镜像本身的格式来是否有损坏。如果损坏,则执行本方案,从升级包中取出最新的recovery。这样可以避免flash中的recovery损坏导致升级功能无法执行。

(2)在boot启动时,判断特定按键输入,如果有特定按键,则会跳过读取flash中的recovery的步骤,直接执行本方案的方法,从升级包中取出最新的recovery。这样可以避免flash中的recovery有功能缺陷或兼容问题,直接使用升级包中最新版本完成升级

由此可见,与现有技术相比,本发明实施例所提出的技术方案的有益技术效果包括:

本发明公开了一种机顶盒升级方法以及机顶盒,机顶盒对已存储的第一恢复镜像进行校验,当第一恢复镜像的校验值与预设值不同时,解压升级包并获取升级包中包含的第二恢复镜像,引导第二恢复镜像启动机顶盒,以使第二恢复镜像通过升级包对机顶盒进行升级。本发明在机顶盒自身的recovery程序出现故障以及无法根据用户的指令直接进行升级或更新时,可以根据升级包中预置的恢复镜像来引导升级包对机顶盒进行更新或升级,提高了机顶盒升级成功的概率,有效的避免了因自身的recovery程序故障以及无法根据用户的指令进行操作而导致升级失败的问题。

相应的,本发明还提出了一种机顶盒,如图3所示,为本发明实施例所提出的一种机顶盒的结构示意图,该机顶盒至少包括:

校验模块31,用于机顶盒对已存储的第一恢复镜像进行校验;

处理模块32,用于当所述第一恢复镜像的校验值与预设值不同时,解压升级包并获取所述升级包中包含的第二恢复镜像;

升级模块33,用于引导所述第二恢复镜像启动所述机顶盒,以使所述第二恢复镜像通过所述升级包对所述机顶盒进行升级。

在一些实施方式中,本发明的所述处理模块32还用于在所述机顶盒对已存储的第一恢复镜像进行读取之前,判断是否接收到跳过指示,并在存储空间中挂载并解压升级包,具体为:

判断时间阈值内是否接收到与指定操作匹配的用户操作;

若判断结果为否,对所述第一恢复镜像进行校验,并在校验结果为不同时确认所述第一恢复镜像不可用,以在所述机顶盒的存储空间中挂载并解压升级包;

若判断结果为是,根据所述用户操作生成所述跳过指示,以在所述机顶盒的存储空间中挂载并解压升级包。

在一些实施方式中,本发明的所述处理模块32解压升级包,具体为:

在所述机顶盒的指定分区内获取所述升级包的标记信息;

根据所述标记信息确定所述升级包的存储位置,并在所述机顶盒的内存中设置第一空间以及第二空间;

将所述升级包从所述存储位置挂载至所述第一空间;

在所述第一空间对所述升级包进行解压。

在一些实施方式中,本发明的所述处理模块32从所述升级包中提取所述第二恢复镜像,具体为:

将所述第一空间中的数据进行解压;

判断是否能根据指定路径在解压后的文件目录中加载所述第二恢复镜像;

若加载成功,将所述第二恢复镜像读取到所述第二空间,并在所述第二恢复镜像的完整性校验通过之后将所述第二空间内的数据传入指定的引导接口,以引导所述第二恢复镜像启动;

若加载失败,终止升级所述机顶盒。

在一些实施方式中,本发明的所述升级模块33在所述第二恢复镜像的完整性校验通过之后将所述第二空间内的数据传入指定的引导接口,具体为:

根据所述第二恢复镜像中完整性校验值的位置确定起始位置;

根据所述起始位置以及所述第二恢复镜像的镜像长度在所述第二空间内获取对比数据;

对所述对比数据进行完整性校验;

若所述对比数据的完整性校验值与所述第二恢复镜像中完整性校验值一致,确认所述第二恢复镜像的完整性校验通过,并将所述第二空间内的数据传入所述引导接口;

若所述对比数据的完整性校验值与所述第二恢复镜像中完整性校验值不一致,终止升级所述机顶盒。

由此可见,与现有技术相比,本发明实施例所提出的技术方案的有益技术效果包括:

本发明公开了一种机顶盒升级方法以及机顶盒,机顶盒对已存储的第一恢复镜像进行校验,当第一恢复镜像的校验值与预设值不同时,解压升级包并获取升级包中包含的第二恢复镜像,引导第二恢复镜像启动机顶盒,以使第二恢复镜像通过升级包对机顶盒进行升级。本发明在机顶盒自身的recovery程序出现故障以及无法根据用户的指令直接进行升级或更新时,可以根据升级包中预置的恢复镜像来引导升级包对机顶盒进行更新或升级,提高了机顶盒升级成功的概率,有效的避免了因自身的recovery程序故障以及无法根据用户的指令进行操作而导致升级失败的问题。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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