机顶盒软件升级方法及机顶盒与流程

文档序号:11628874阅读:919来源:国知局
机顶盒软件升级方法及机顶盒与流程
本发明涉及数字电视技术,尤其涉及一种机顶盒软件升级方法及机顶盒。

背景技术:
随着数字电视技术的发展,机顶盒已经成为很多家庭的主要家电产品,机顶盒生产厂商提供的机顶盒软件、硬件版本都在逐渐增多。为了满足数字电视用户不断增长的业务需求,在网络运营上,需要对机顶盒不断进行更新换代。而在机顶盒上开通新的业务、解决机顶盒软件缺陷等都需要对机顶盒软件进行升级,但由于机顶盒的多厂家、多软硬件版本,使得机顶盒软件升级存在很大的难度,机顶盒软件升级成为了数字电视网络运营商需要面临的重要问题之一。机顶盒的软件按照功能模块划分,可以划分为启动(Boot)模块、升级(Loader)模块以及应用(APP)软件模块。机顶盒为每一模块分配独立的闪存(Flash)分区,存储编译的可独立运行的模块文件。其中,启动模块,用于机顶盒的初始化和引导,在机顶盒启动后,首先执行烧录在Flash中的启动模块文件,加载系统软件;升级模块,用于对启动模块以及应用软件模块进行更新,即用于对机顶盒软件进行升级,其中,机顶盒软件包括系统软件、升级模块软件以及应用软件;应用软件模块,为机顶盒的功能模块,在启动模块启动机顶盒后,加载应用软件模块中的应用软件,执行相应功能。在升级模块对启动模块以及应用软件模块升级时,在接收到软件升级包后,将烧录至Flash中的升级模块文件读取至内存,在内存中运行升级模块文件,运行的升级模块文件对软件升级包进行解析,并将解析得到的软件信息更新对应烧录在Flash中的软件信息,从而完成软件的升级。实际应用中,随着机顶盒功能的日益扩展,升级模块也存在更新(升级)的需求,即需要对升级模块软件也进行升级。当升级模块出现问题,或进行功能扩充,或有调整需求,需要进行升级时,升级模块的升级流程如下:生产厂商或运营厂商根据需要升级的升级模块功能,制作用于对升级模块进行升级的只读存储器(ROM,Read-OnlyMemory)文件,即升级模块软件并下发至升级模块;机顶盒在启动后,升级模块接收ROM文件,在接收完成后,擦除烧录在Flash中升级模块对应的ROM文件数据,然后将接收的ROM文件写入Flash中擦除的空间,并将烧录至Flash中的ROM文件读取至内存,在内存中运行ROM文件,从而完成升级模块功能的升级。由上述可见,现有的机顶盒软件升级方法,在对升级模块进行功能升级时,接收到ROM文件后,需要先在Flash中擦除升级前升级模块对应的ROM文件数据,然后将接收的ROM文件写入该升级模块对应的Flash空间。这样,在擦除或写入的过程中,如果机顶盒断电,或者,擦除或写入时发生数据错误,将导致读取至内存的待升级ROM文件不完整,使得机顶盒不能完成对升级模块的升级,进而导致系统软件以及应用软件的升级不能正常进行,使得机顶盒不能正常运行,机顶盒软件升级效率低,降低了机顶盒运行的可靠性。

技术实现要素:
本发明的实施例提供一种机顶盒软件升级方法,提升机顶盒软件升级效率、提高机顶盒运行的可靠性。本发明的实施例还提供一种机顶盒,提升机顶盒软件升级效率、提高机顶盒运行的可靠性。为达到上述目的,本发明实施例提供的一种机顶盒软件升级方法,该方法包括:预先获取升级模块软件中的数据加载信息,将获取的数据加载信息封装为只读存储器ROM文件,然后烧录至机顶盒的闪存分区中;接收升级文件;读取烧录至机顶盒的闪存分区中的ROM文件,然后运行读取的ROM文件;触发运行的ROM文件解析接收的升级文件,获取升级文件中包含升级模块的可执行固件格式文件;运行解析的升级模块的可执行固件格式文件。其中,所述升级文件进一步包含有系统升级软件、和/或,应用升级软件。其中,在所述运行解析的升级模块的可执行固件格式文件的步骤之后,所述方法进一步包括:判断解析的升级文件中包含系统软件或应用软件的可执行固件格式文件,如果包含有,运行系统软件或应用软件的可执行固件格式文件。其中,所述封装的ROM文件中,进一步包括预先设置的私钥信息以及校验算法,在所述接收升级文件的步骤之前,所述方法进一步包括:采用预先设置的校验算法,对可执行固件格式文件进行签名,得到签名信息,并使用预先设置的生成私钥信息的加密算法生成的公钥,加密签名信息,将可执行固件格式文件、加密的签名信息以及系统升级软件和应用升级软件封装在升级文件中。其中,所述解析升级文件中包含升级模块的可执行固件格式文件包括:解析升级文件,获取可执行固件格式文件以及密文的签名信息;读取烧录在闪存分区中预先设置的私钥,对签名信息进行解密,得到明文的签名信息;采用预先设置的校验算法,对可执行固件格式文件进行校验,得到校验信息;判断明文的签名信息是否与校验信息一致,如果一致,执行所述运行解析的升级模块的可执行固件格式文件的流程,否则,结束流程。其中,所述校验算法为消息摘要算法第五版校验算法,所述预先设置的私钥信息采用数据加密算法生成。其中,所述机顶盒的操作系统为Linux操作系统,所述运行解析的升级模块的可执行固件格式文件包括:在当前父进程下开启新的Linux子进程,并为Linux子进程分配资源;调用新开启的Linux子进程,执行升级模块的可执行固件格式文件;父进程监控Linux子进程的执行状况,在监控到Linux子进程执行升级模块的可执行固件格式文件完毕,释放Linux子进程占用的资源。一种机顶盒,该机顶盒包括:启动模块、升级模块以及应用软件模块,其中,启动模块,用于在机顶盒启动后,引导和初始化机顶盒;应用软件模块,用于在启动模块启动机顶盒后,根据用户指令加载应用软件;升级模块,用于预先获取升级模块软件中的数据加载信息,将获取的数据加载信息封装为ROM文件,然后烧录至升级模块对应的闪存分区中;接收升级文件;读取烧录至机顶盒的闪存分区中的ROM文件,然后运行读取的ROM文件;触发运行的ROM文件解析接收的升级文件,获取升级文件包含升级模块的可执行固件格式文件;运行解析的升级模块的可执行固件格式文件。较佳地,所述升级模块进一步用于判断解析的升级文件中是否包含系统软件或应用软件的可执行固件格式文件,如果包含有,运行系统软件或应用软件的可执行固件格式文件。较佳地,所述升级模块包括:ROM文件存储单元、ROM文件运行单元、解析单元以及升级单元,其中,ROM文件存储单元,用于预先获取升级模块软件中的数据加载信息,将获取的数据加载信息封装为ROM文件,然后烧录至机顶盒的闪存分区中;ROM文件运行单元,用于接收升级文件;读取烧录至机顶盒的闪存中的ROM文件,然后运行读取的ROM文件;解析单元,用于触发运行的ROM文件解析接收的升级文件,获取升级文件中包含升级模块的可执行固件格式文件;升级单元,用于运行解析的升级模块的可执行固件格式文件。由上述技术方案可见,本发明实施例提供的一种机顶盒软件升级方法及机顶盒,通过预先将包含数据加载信息的ROM文件烧录至机顶盒的Flash分区中,因而,在接收到升级文件后,可以直接从Flash分区读取烧录的ROM文件,输出至内存,并在内存中运行ROM文件,以对接收的升级文件进行解析。无需对ROM文件进行擦除以及写入的操作,可以避免在擦除和写入过程中机顶盒断电或数据错误导致的升级模块不能正常运行的技术问题,进而保障系统软件以及应用软件升级的正常进行,有效提升了机顶盒软件的升级效率,并提高了机顶盒运行的可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,以下将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,还可以根据这些附图所示实施例得到其它的实施例及其附图。图1为本发明实施例机顶盒软件升级方法流程示意图。图2为本发明实施例机顶盒软件升级方法具体流程示意图。图3为本发明实施例的机顶盒结构示意图。具体实施方式以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。现有的机顶盒软件升级方法,如果需要对升级模块进行功能升级,需要在升级模块对应的Flash中执行擦除和写入处理,使得在擦除或写入处理的过程中发生断电或数据错误时,将导致无法对升级模块进行升级,进而导致系统软件以及应用软件的升级不能正常进行,造成机顶盒软件升级效率低,运行可靠性不高。实际应用中,在升级模块功能升级过程中,写入Flash中的升级模块软件信息中,只是利用到写入的一部分信息(非功能升级信息),用于在读取到内存后,解析升级模块软件中的功能升级信息,对于功能升级信息,在将该功能升级信息写入到Flash后,只是简单地将该功能升级信息从Flash中读出到内存中,在内存中,通过运行非功能升级信息,对读入的功能升级信息进行解析,从而实现升级模块的功能升级。因而,本发明实施例中,考虑对于同一生产厂商生产的机顶盒,在每一次升级模块功能更新时,由于封装功能升级信息的编码和格式一般不会发生变化,因而,用于解析功能升级信息的非功能升级信息实质上是无需更新的,升级模块软件中包含的更新信息为功能升级信息。基于上述考虑,本发明实施例中,在对升级模块软件进行升级时,将升级模块软件拆分为功能升级信息和数据加载信息两部分,其中,数据加载信息对应解析功能升级信息的非功能升级信息。功能升级信息封装为机顶盒操作系统可执行固件格式文件,例如,二进制格式文件,并将该可执行固件格式文件,与系统升级软件以及应用升级软件,打包到升级文件,传输至机顶盒;并在机顶盒出厂前,预先将数据加载信息烧录到Flash中,用于将接收到的升级文件中包含升级模块的可执行固件格式文件进行解析,并执行。这样,在机顶盒断电以及擦除或写入处理过程中发生数据错误时,不会导致Flash中的数据异常,保障升级模块的正常运行,进而保障系统软件以及应用软件升级的正常进行。图1为本发明实施例机顶盒软件升级方法流程示意图。参见图1,该流程包括:步骤101,预先获取升级模块软件中的数据加载信息,将获取的数据加载信息封装为ROM文件,然后烧录至机顶盒的Flash分区中;本步骤中,通过对升级模块软件的分析,提取升级模块软件中用于解析升级模块功能升级的数据加载信息,封装为ROM文件并烧录到机顶盒对应存储升级模块的Flash分区中。这样,在对升级模块进行功能升级时,无需擦除升级模块的Flash分区空间,再将升级模块软件中的数据加载信息写入擦除的Flash分区空间。关于如何从升级模块软件中提取数据加载信息,可根据本领域技术人员掌握的惯用计算机编程知识分析得到,在此略去详述。实际应用中,为了保障接收到的升级文件,即升级模块软件以及其他软件,例如,系统软件以及应用软件的完整性,封装的ROM文件中,还可以进一步包括预先设置的私钥信息以及校验算法。其中,私钥信息可以是通过公用密钥算法(RSA,Rivest-Shamir-Adlemanpublickeyalgorithm)生成的私钥,当然,在生成私钥的同时,还对应生成公钥。实际应用中,也可以通过其他密钥算法生成公钥和私钥,例如数据加密算法(DES,DataEncryptionStandard)、Diffie-Hellman算法等。关于公钥和私钥的生成方法为公知技术,在此略去详述。校验算法可以是消息摘要算法第五版(MD5,MessageDigestAlgorithm)校验算法,也可以是循环冗余校验码(CRC,CyclicRedundancyCheck)算法等。步骤102,接收升级文件,然后读取烧录至机顶盒的Flash分区中的ROM文件,然后运行读取的ROM文件;本步骤中,可以是通过在线的方式,接收来自存储有升级文件的服务器下发的升级文件;也可以是通过USB接口的方式,从与机顶盒相连的外部USB设备接收升级文件。升级文件中,包含有功能升级信息。功能升级信息用于实现升级模块的升级,功能升级信息通过编译和链接操作,生成操作系统可执行的二进制命令文件,即二进制的可执行固件格式文件。例如,生成后缀名为out的out文件。即.out文件就是扩展名为out的文件,为可执行文件。实际应用中,升级文件中,还可以进一步包括系统升级软件以及应用升级软件。当然,实际应用中,升级文件也可以采用现有的生成方式,即包括数据加载信息,并将数据加载信息封装为ROM文件,然后将out文件与ROM文件再封装在升级文件中。本发明实施例中,升级文件可以采用预先设置的标记进行标识。较佳地,为了保障升级文件的完整性以及安全性,可以对升级文件进行完整性校验以及加密。例如,采用预先设置的校验算法,例如,MD5对out文件进行签名,得到签名信息,并使用预先设置的生成私钥信息的加密算法,例如,RSA生成的公钥加密签名信息,最后,将生成的out文件、加密的签名信息以及系统升级软件和应用升级软件封装在升级文件中。当然,实际应用中,也可以对升级文件进行签名,或者,分别对out文件以及系统升级软件、和/或,应用升级软件进行签名。升级文件格式如下:Out文件长度(4字节)+out文件+密文(加密)的签名信息(128字节)+系统升级软件、和/或,应用升级软件。其中,以系统升级软件为例,系统升级软件中包含的信息内容,即系统升级软件格式为:待更新数据在Flash分区中的存储地址+待更新数据的大小+待更新数据的内容。其中,待更新数据在Flash分区中的存储地址是指Flash中对应存储系统升级软件的存储地址。本发明实施例中,升级模块在接收到升级文件后,从Flash分区中,读取烧录至机顶盒的升级模块对应的ROM文件,输出至内存,并在内存中运行ROM文件,以对接收的升级文件进行解析。由于包含数据加载信息的ROM文件已烧录在Flash分区中,因而,无需进行擦除以及写入的操作,可以避免在擦除和写入过程中机顶盒断电或数据错误导致的升级模块不能正常运行的技术问题,进而保障系统软件以及应用软件升级的正常进行,有效提升了机顶盒软件的升级效率,并提高了机顶盒运行的可靠性。也就是说,本发明实施例中,如果需要对升级模块进行功能升级,只要将升级模块的功能升级信息制作成out文件,并作为升级文件的一部分,而升级模块的数据加载信息部分,在机顶盒出厂前就烧录在机顶盒的Flash中,通过在内存中运行数据加载信息,自动将升级文件中的out文件剥离出来进行解析,并运行解析的out文件,以对升级模块进行升级,从而实现升级模块功能的自动更新,而无需重新对Flash执行擦除及写入处理,避免在更新升级模块时,因断电、数据写入错误引起的风险。步骤103,触发运行的ROM文件解析接收的升级文件,获取升级文件中包含升级模块的可执行固件格式文件;本步骤中,在内存中运行的数据加载信息,对传输至内存的升级文件进行解析。如前所述,如果烧录至Flash分区的ROM文件中,包含有预先设置的私钥信息以及校验算法,则解析升级文件中包含升级模块的可执行固件格式文件具体包括:解析升级文件,获取out文件以及密文的签名信息;读取烧录在Flash分区中预先设置的私钥,对签名信息进行解密,得到明文的签名信息;采用预先设置的校验算法,对out文件进行校验,得到校验信息;判断明文的签名信息是否与校验信息一致,如果一致,执行步骤104,否则,结束流程,即终止升级模块功能升级流程。步骤104,运行解析的升级模块的可执行固件格式文件。本步骤中,较佳地,操作系统为Linux操作系统。这样,利用Linux操作系统可创建新进程的功能,利用创建的新进程执行功能升级信息的固件程序(可执行固件格式文件),并可利用已执行的固件程序对其它软件进行升级。运行解析的升级模块的可执行固件格式文件具体包括:在当前父进程下开启新的Linux子进程,并为Linux子进程分配资源;调用新开启的Linux子进程,执行升级模块的可执行固件格式文件;父进程监控Linux子进程的执行状况,在监控到Linux子进程执行升级模块的可执行固件格式文件完毕,释放Linux子进程占用的资源。本步骤中,父进程监控Linux子进程,直到升级模块的功能升级结束。较佳地,在执行解析的升级模块的可执行固件格式文件完毕后,该方法还可以进一步包括:步骤105,判断解析的升级文件中是否包含系统软件或应用软件的可执行固件格式文件,如果包含有,运行系统软件或应用软件的可执行固件格式文件。本步骤中,运行系统软件或应用软件的可执行固件格式文件,以对系统软件或应用软件进行升级为公知技术,在此略去详述。图2为本发明实施例机顶盒软件升级方法具体流程示意图。参见图2,该流程包括:步骤201,从Flash中读取升级模块对应的数据加载信息,在内存中运行;本步骤中,机顶盒启动后,如果需要对升级模块进行功能升级,则将Flash中升级模块对应的数据加载信息,即ROM文件读取到内存中,并运行数据加载信息。步骤202,获取封装的升级文件;本步骤中,可以通过在线下载的方式或从外部设备有线导入的方式获取封装的升级文件。升级文件中可以包括:功能升级信息(out文件)、和/或,系统升级软件、和/或,应用升级软件。步骤203,解析封装的升级文件,获取out文件和加密的签名信息;本步骤中,以对升级模块进行功能升级为例,则封装的升级文件中,至少包含out文件。同时,为了确保out文件的完整性以及传输安全性,在封装的升级文件中,还包含有对out文件进行签名、且对签名信息进行加密的签名信息。步骤204,读取预先烧录在Flash中的私钥,对加密的签名信息进行解密,得到解密后的签名信息;本步骤中,对签名信息进行加密的公钥与预先烧录在Flash中的私钥基于同一加密算法生成。在网络侧的升级文件中,采用公钥对签名信息进行加密,在用户侧的机顶盒中,采用公钥对应的私钥对签名信息进行解密。步骤205,采用预先设置的校验算法,对out文件进行校验,得到校验信息;本步骤中,采用MD5对out文件进行签名校验,得到校验信息。步骤206,判断解密后的签名信息与校验信息是否一致,如果一致,执行步骤207,否则,结束流程;本步骤中,如果解密后的签名信息与校验信息一致,表明接收到的out文件是完整的、且传输是安全的。步骤207,利用Linux操作系统的分叉(fork)命令创建子进程;步骤208,子进程执行out文件;步骤209,父进程监控子进程的执行情况,监控到out文件执行完毕,回收子进程资源。本步骤中,父进程在监控到子进程执行out文件完毕后,回收子进程资源,升级模块的功能升级结束。后续流程中,如果升级文件中还包含有系统升级软件或应用升级软件,则对系统软件或应用软件进行升级。图3为本发明实施例的机顶盒结构示意图。参见图3,该机顶盒包括:启动模块301、升级模块302以及应用软件模块303,其中,启动模块301,用于在机顶盒启动后,引导和初始化机顶盒;本发明实施例中,启动模块在机顶盒中对应有独立的Flash分区。引导和初始化机顶盒,即执行烧录在Flash中的启动模块文件,加载系统软件。应用软件模块303,用于在启动模块301启动机顶盒后,根据用户指令加载应用软件;本发明实施例中,应用软件模块在机顶盒中也对应有独立的Flash分区,存储相应的应用软件。在用户指令需要执行应用功能时,从应用软件模块对应的Flash分区中,加载应用软件,从而执行相应功能。升级模块302,用于预先获取升级模块302软件中的数据加载信息,将获取的数据加载信息封装为ROM文件,然后烧录至升级模块302对应的Flash分区中;接收升级文件;读取烧录至机顶盒的Flash分区中的ROM文件,然后运行读取的ROM文件;触发运行的ROM文件解析接收的升级文件,获取升级文件中包含升级模块302的可执行固件格式文件;运行解析的升级模块302的可执行固件格式文件。本发明实施例中,升级模块的升级功能启动后,数据加载信息软件开始运行,即升级模块启动后,从升级模块对应的Flash分区中读取ROM文件并运行,在运行后,解析升级文件并运行解析的升级文件。其中,解析升级文件并运行解析的升级文件的具体流程如下:按照预先设置的格式实现升级文件的解析,获取升级文件中包含的out文件以及密文的签名信息,从而将升级文件内的功能升级信息(out文件)和密文签名信息剥离出来。然后,利用固化在Flash分区中的私钥,对密文签名信息其进行解密,得到明文的签名信息。同时,对整个out文件进行md5校验,将得到的校验信息与解密得到的签名信息对比,从而保证加载正确的功能升级信息且保证没有错误。验证out文件后,开启新的Linux子进程,并在子进程内执行out文件,同时,父进程监控子进程的执行状况,直到升级功能结束。这样,如果在升级模块执行升级功能时发生断电,由于升级模块所需的数据加载信息软件没有进行更新,因而,不会影响升级模块的正常运行,在下次开机后,升级模块的数据加载信息软件还会自动运行,并按照上述描述流程完成升级功能。较佳地,升级模块还可以进一步用于判断解析的升级文件中是否包含系统软件或应用软件的可执行固件格式文件,如果包含有,运行系统软件或应用软件的可执行固件格式文件。其中,升级模块包括:ROM文件存储单元、ROM文件运行单元、解析单元以及升级单元(图中未示出),其中,ROM文件存储单元,用于预先获取升级模块软件中的数据加载信息,将获取的数据加载信息封装为ROM文件,然后烧录至机顶盒的Flash分区中;ROM文件运行单元,用于接收升级文件;读取烧录至机顶盒的Flash中的ROM文件,然后运行读取的ROM文件;本发明实施例中,升级文件中包含有功能升级信息对应的可执行固件格式文件、和/或,系统升级软件、和/或,应用升级软件。解析单元,用于触发运行的ROM文件解析接收的升级文件,获取升级文件中包含升级模块的可执行固件格式文件;升级单元,用于运行解析的升级模块的可执行固件格式文件。本发明实施例中,如果在网络侧,采用预先设置的校验算法,对可执行固件格式文件进行签名,得到签名信息,并使用预先设置的生成私钥信息的加密算法生成的公钥,加密签名信息,将可执行固件格式文件、加密的签名信息以及系统升级软件和应用升级软件封装在升级文件中。则升级模块还可以进一步包括:完整性校验单元,用于解析升级文件,获取可执行固件格式文件以及密文的签名信息;读取烧录在Flash分区中预先设置的私钥,对签名信息进行解密,得到明文的签名信息;采用预先设置的校验算法,对可执行固件格式文件进行校验,得到校验信息;判断明文的签名信息是否与校验信息一致,如果一致,执行所述运行解析的升级模块的可执行固件格式文件的流程,否则,结束流程。显然,本领域技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1