专利名称:一种机顶盒的软件升级方法及机顶盒的制作方法
技术领域:
本发明涉及数字电视技术领域,尤其涉及一种机顶盒的软件升级方法及机顶盒。
背景技术:
随着数字技术的深入发展和数字化的普及,广播电视的数字化发展成为必然趋势,也是有线电视发展的必然选择,而数字电视接收器(机顶盒)则是目前数字化平移的主流模式。随着机顶盒整体平移的发展,机顶盒的软件功能日益增强,软件升级和更改已成为不可避免的事。每个运营商都要追求地区特性,存在功能、应用等方面的差异,每个市场的需求都是单独定制的,所以对机顶盒厂商来讲,每个市场都要重新设计一套系统,包括硬件和软件,硬件系统一旦试验成熟,可以基本稳定下来,但是软件需求差异性很大。从软件工程上讲,任何一个新开发的软件从设计到生产都要有一个稳定的过程。生产厂商要经过样机试制、30台、200台小批试用,直到批量,是一个长期稳定和完善的过程。这个过程主要是软件的不断维护的过程,软件的维护更新如果通过人工挨家挨户的更换或升级,需要的时间长,人力成本也很高,不能满足市场需求。所以,机顶盒必需具备自动升级功能,一般软件不可能满足用户不断的需求以及设备、服务的更新升级,而机顶盒升级的稳定可靠性又是升级系统安全的关键。目前市场上机顶盒的升级方式不规范,有些机顶盒没有自动升级功能,一旦发现问题就需要返厂维修。传统的升级方法则是由升级服务器维护,当机顶盒软件需要升级时, 机顶盒生产商将经过生产商签名的软件升级包交付运营商,运营商加入运营商签名认证后发布到升级服务器,机顶盒通过网络从升级服务器获取升级包,完成软件升级。相关流程图如图1所示,由图1可知,一般机顶盒软件升级可以分两级进行,第一级是升级操作系统,第二级是升级业务软件,升级程序启动后先验证操作系统是否需要升级,如果需要则升级操作系统;如果操作系统不需要升级,则验证业务软件是否需要升级,如果需要则升级业务软件。升级包配置文件中包含了厂商定义的版本描述信息,机顶盒下载后解析得到升级包的软硬件版本信息,和本地软硬件的版本相对比即可知道是否需要升级。由于操作系统内核一般在短时间内不会更新得太快,在有些升级方案中,并没有升级操作系统这一过程。传统升级方法采用的是在线升级,是一种远程升级。升级过程无法得到安全性和完整性的保证。运营商无法保证升级过程中不出现由于各种意外导致升级失败的情况,并且原有操作系统以及软件无法使用,需要返厂维修。这样就大大提高了成本。对于运营商来说,为了保持市场及价格的稳定,一般都会选择几个机顶盒厂商同时供货,随着机顶盒厂商的不断增多,在前端必须为每个厂商配备Loader服务器,并消耗大量带宽资源才能满足同时升级各种机顶盒的应用的目的,从而实现部署新应用的目的。这样不利于升级和节省成本、资源。另外,目前现有的升级方法由于受到各种芯片方案的约束,无法实现跨平台,各个厂商必须应用满足自己芯片方案的升级方法,大大降低了升级的灵活度和自由度。
发明内容
本发明的目的在于克服现有技术的不足,本发明提供了一种机顶盒的软件升级方法及机顶盒,可以提高机顶盒软件升级的灵活度和自由度,并确保升级的可靠性和稳定性。为了解决上述问题,本发明提出了一种机顶盒的软件升级方法,所述方法包括检测并获取升级触发信息;判断所述升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;若是,则下载与所述软件版本相应的升级数据; 根据所述升级数据对所述机顶盒自身的软件进行更新。优选地,所述检测并获取升级触发信息的步骤包括获取包含链接描述符的网络信息表;根据所述链接描述符判断是否存在需要更新的软件;若是,则将所述升级触发信息的升级标志设置成“是”;若否,则将所述升级触发信息的升级标志设置成“否”。优选地,在所述检测并获取升级触发信息的步骤之前,还包括校验主LOADER模块是否损坏;若否,则启动主LOADER模块;若是,则校验备用LOADER模块是否损坏;当所述备用LOADER模块正确时,则将所述备用LOADER模块的内容拷贝到所述主 LOADER模块中。优选地,在所述下载与所述软件版本相应的升级数据的步骤之后,还包括通过CRC32校验算法对所述升级数据进行校验。优选地,所述下载与所述软件版本相应的升级数据的步骤具体包括根据所述网络信息表跳转到相应频点;从所述频点获取升级数据。优选地,所述从所述频点获取升级数据的步骤具体包括通过网络获取与所述软件版本相应的升级数据。优选地,所述链接描述符包含软件升级信息,包括厂家代码、硬件版本、软件类型、 软件版本。相应地,本发明实施例还公开了一种机顶盒,所述机顶盒包括检测模块,用于检测并获取升级触发信息;判断模块,用于判断所述检测模块所获取的升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;下载模块,用于当判断模块的判断结果为是时,下载与所述软件版本相应的升级数据;更新模块,用于根据所述下载模块所下载的升级数据对所述机顶盒自身的软件进行更新。优选地,所述检测模块包括获取单元,用于获取包含链接描述符的网络信息表;判断单元,用于根据所述获取单元所获取链接描述符判断是否存在需要更新的软件;设置单元,用于当所述判断单元的判断结果为是时,将所述升级触发信息的升级标志设置成“是”;还用于当所述判断单元的判断结果为否时,将所述升级触发信息的升级标志设置成“否”。优选地,所述机顶盒还包括校验模块,用于校验主LOADER模块是否损坏;启动模块,则启动主LOADER模块;所述校验模块还用于当主LOADER模块损坏时,校验备用LOADER模块是否损坏;拷贝模块,用于当所述备用LOADER模块正确时,将所述备用LOADER模块的内容拷贝到所述主LOADER模块中。实施本发明实施例,通过多种方式确保升级的可靠性和稳定性,可以节约成本,并可以统一现有的前端和终端应用,使机顶盒软件的升级不受各种芯片方案的约束,实现跨平台升级,任何机顶盒厂家和前端广电运营商都可以应用,提高了机顶盒软件升级的灵活度和自由度。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是现有技术中机顶盒软件升级方法的流程示意图;图2是本发明实施例的机顶盒中的双Loader模块的结构示意图;图3是本发明实施例的机顶盒的软件升级方法的流程示意图;图4是本发明实施例中的NIT表的检测触发流程示意图;图5是本发明实施例的机顶盒的软件升级的具体流程示意图;图6是本发明实施例的机顶盒软件的自动更新流程示意图;图7是本发明实施例的机顶盒软件的手动升级的流程示意图;
图8是本发明实施例的机顶盒模块校验流程示意图;图9是本发明实施例的机顶盒的结构组成示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在这里对本发明的机顶盒的升级方法的升级原理进行阐述。嵌入式系统的软件部分主要包括BootLoader、内核和文件系统。BootLoader 是硬件系统加电所运行的第1段软件代码,但由于嵌入式系统中一般没有像个人电脑 (Personal Computer, PC)中的BIOS那样的固件,因此整个系统的加载过程全部是由BootLoader来完成的。BootLoader的主要任务包括初始化最基本的硬件;将BootLoader 本身拷贝到RAM中运行;将内核拷贝到RAM中并调用内核等。BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境运行到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。由于一般的嵌入式系统都只有一个固定的BootLoader模块,而BootLoader在嵌入式系统启动的过程中又扮演了非常重要的角色,一旦BootLoader模块被破坏,系统将不能正常启动。为了避免这一问题,本发明将BootLoader分为两个部分,一部分是最基本的 Boot模块,用于引导程序启动;另一部分是用于升级的Loader模块。Boot模块本身是固定不变的,这一部分不会损坏,而Loader模块可能会因为原功能不能满足要求,需要不断的升级或者改进而产生变动,一旦该模块下载升级文件的过程中损坏或者新下载的Loader 模块有问题,就会造成系统不能升级,这可能会造成该系统无法继续使用。因此,本发明设计为双Loader模块,当一个Loader模块破坏的时候可以从另一个Loader模块恢复。双 Loader模块的结构如图2所示。图3是本发明实施例的机顶盒的软件升级方法的流程示意图,如图3所示,该方法包括S301,检测并获取升级触发信息;S302,判断升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;若是,则执行S303,若否,则不自动更新;S303,下载与软件版本相应的升级数据; S304,根据升级数据对机顶盒自身的软件进行更新。进一步地,S301包括获取包含链接描述符的网络信息表;根据链接描述符判断是否存在需要更新的软件;若是,则将升级触发信息的升级标志设置成“是”;若否,则将升级触发信息的升级标志设置成“否”。本发明所采用的自动升级触发条件是检测网络信息表(Network Information Table, NIT)(简称NIT表)的触发标识,机顶盒开机过程中判断有新版本或者上次升级失败,都会触发升级过程。软件更新通过触发NIT表中的链接描述符的相关条件,实现方式为通过在NIT表中插入链接描述符作为软件升级的触发标识,链接描述符中带有软件升级的相关信息,包含软件升级信息,包括厂家代码、硬件版本、软件类型、软件版本等信息。机顶盒开机后锁定频点,实时检测NIT表的变化,提取升级描述信息,比较对应的软件版本信息,有新版本才启动相应的数据下载更新流程。NIT表的检测触发流程图如图4所示。升级的触发也可以通过其它表格。本发明采用NIT表是考虑到通用性,可实施性更强,各有线前端基本都用NIT表发送网络信息,并且基本上会在每个频点都播发NIT表, 所以采用NIT表作为升级触发表格最实用,可以不需要用户干预自动下发。本发明采用的自动升级触发条件是检测NIT表的触发标识。但是触发标识也可以使用其它表格。MPEG-2协议传输层定义了多种表格,用来进行数据的传送。本发明中,也可用MPEG-2协议传输层定义的其它表格,结合DVB中的SI或者其他表,来代替NIT表,形成
7一个新的升级触发条件,从而得到一个有针对性的升级方案。手动升级触发可通过串口或者USB、网络等进行手动升级时,当机顶盒开机时, 会接收一个组合控制触发命令,Loader启动过程中检测到触发命令,按顺序读取串口、USB、 网络数据,只要握手成功,则从对应的外部接口读取升级数据进行软件升级。手动大网升级与大网自动升级的唯一差别是开机时通过前面板按键直接进入手动升级界面,手动设置升级的频点参数,提取升级数据进行升级流程。具体实施中,当机顶盒需要升级时可采用自动升级和手动升级两种方式,本发明通过Loader模块可实现机顶盒Loader程序和应用程序以及图片、字库的升级,支持指定单个机顶盒序列号分批的在线升级。机顶盒的Flash内存储存升级所需要的各种升级描述信息。图5是本发明实施例的机顶盒的软件升级的具体流程示意图,下面根据图5对该流程进行说明启动机顶盒;检测到升级触发信息;依次判断升级触发信息中的厂商代码、硬件版本、软件类型与本机顶盒的相关信息是否一致;(若采用手动升级则不需要判断软件版本,而强制升级到指定版本)当前面的判断条件都满足时,根据控制码指明的不同升级类型来判断本机顶盒是否满足升级条件;当机顶盒的软件版本满足升级要求时,根据升级类型判断是自动升级还是手动升级;当升级类型为自动升级时,直接启动Loader应用程序,按照更新信息所提供的信息,调谐到相应频点,下载更新数据;当升级类型为手动升级时,机顶盒提示是否进行软件更新的提示;用户通过遥控器可以使机顶盒选择立即更新软件或者下次再进行更新;选择立即更新后,启动Loader应用程序,按照更新信息所提供的信息,调谐到相应频点,下载更新数据;选择下次更新后,则在下一次重新开机前不再进行更新提示;对下载的更新数据进行数据校验;数据校验无误后,进行机顶盒的软件更新。机顶盒在软件更新过程中出现断电、信号中断等异常情况时,如果原应用程序已经擦除,则开机自动进入Loader继续升级。下面对本发明的机顶盒的升级方法中的自动升级流程进行进一步的说明。由于 NIT表是通用表格,各地有线前端都通过OTT表下发频点信息,而在OTT表中插入升级信息, 自动升级可通过NIT检测触发,机顶盒解析当前数字信道的NIT表,根据NIT表找到该机顶盒厂商的链接描述符,根据链接描述符中的软件版本、硬版版本和序列号范围等决定是否需要升级,并根据NIT表跳转到相应频点,获取对应的升级数据。当网络中发送的更新信息与机顶盒更新要求相符时,机顶盒则能检测到升级触发信息,并进行判断,完成机顶盒的软件的更新,机顶盒软件的自动更新流程示意图如图6所示。图7是本发明实施例的机顶盒软件的手动升级的流程示意图。手动升级方式是通过USB、串口以及手动大网进行升级,具体实施中可以在开机时通过机顶盒前面板按键触发,Loader检测到按键信息,按照串口、USB、网口的顺序读取握手信号,从相应接口获取升级数据更新Flash ;手动大网强制升级不检测NIT表直接进入手动升级界面,手动输入频点参数信息,锁定指定频点提取升级数据。
串口升级、USB升级与手动大网升级不同之处只有数据获取路径不同,其它版本比较、校验、擦写过程均相同。具体实施中,在S301之前,还包括校验主LOADER模块是否损坏;若否,则启动主 LOADER模块;若是,则校验备用LOADER模块是否损坏;当备用LOADER模块正确时,则将备用LOADER模块的内容拷贝到主LOADER模块中。如果数据未下载完成时系统断电,由于未对Flash进行改写,因此不影响可靠性; 如果在Flash改写时系统断电,则下次开机时应重新进入升级界面。机顶盒模块校验流程示意图8所示。开机校验主Loader模块是否正确,若主Loader模块正确,则引导主Loader模块启动;若主Loader模块损坏,则校验备份Loader模块是否正确,若备份Loader模块正确, 将备份Loader模块的内容拷贝到主Loader,弓丨导主Loader启动;若Loader模块需要升级, 则主Loader模块开始执行升级过程,升级完成后更新升级信息,重新启动系统;若Loader 模块不需要升级,则开始调转应用程序启动。若主Loader程序和备份Loader程序的版本不相同,则将版本高的加载程序覆盖版本低的加载程序。若升级过程未完成被强制中断,记录未完成的升级信息,下次机顶盒启动后继续升级。这样能够保证主Loader是可以恢复的, 进而减少机顶盒的维护工作。具体实施中,在S303之后,还包括通过CRC32校验算法对升级数据进行校验。本发明采用CRC32校验算法来确保升级数据的完整性。CRC校验采用多项式编码方法。多项式乘除法运算过程与普通代数多项式的乘除法相同,多项式的加减法运算以2 为模,加减时不进,错位,如同逻辑异或运算。本发明采用按字节查表快速计算CRC32的方法,按字节计算CRC,计算本字节后的CRC码等于上一字节余式CRC码的低8位左移8位后, 再加上上一字节CRC右移8位(取高8位)和本字节之和后所求得的CRC码,把8位二进制序列数的CRC全部计算出来,放在一个表里,采用查表法,可以大大提高计算速度。采用上述校验方法,可以提高升级的可靠性和稳定性,节约成本及资源。在本发明实施例中,把程序代码分块存储在Flash中,把程序代码分成Boot、 Loader、字库、图片、应用程序等独立块,在Flash中独立存储。这样根据Flash只能整块擦除的擦写特性,可以单独升级某一部分或者组合升级并且不会相互影响,又可以加快升级速度,降低意外中断造成失败的概率。实施本发明实施例,通过多种方式确保升级的可靠性和稳定性,可以节约成本,并可以统一现有的前端和终端应用,使机顶盒软件的升级不受各种芯片方案的约束,实现跨平台升级,任何机顶盒厂家和前端广电运营商都可以应用,提高了机顶盒软件升级的灵活度和自由度。相应地,本发明实施例还公开了一种机顶盒,如图9所示,该机顶盒包括检测模块90,用于检测并获取升级触发信息;判断模块91,用于判断检测模块所获取的升级触发信息中的厂家代码、硬件版本、 软件类型、软件版本与机顶盒自身对应的信息是否一致;下载模块92,用于当判断模块的判断结果为是时,下载与软件版本相应的升级数据;更新模块93,用于根据下载模块所下载的升级数据对机顶盒自身的软件进行更新。具体实施中,该检测模块90还进一步包括获取单元,用于获取包含链接描述符的网络信息表;判断单元,用于根据所述获取单元所获取链接描述符判断是否存在需要更新的软件;设置单元,用于当所述判断单元的判断结果为是时,将所述升级触发信息的升级标志设置成“是”;还用于当所述判断单元的判断结果为否时,将所述升级触发信息的升级标志设置成“否”。进一步地,该机顶盒还包括校验模块,用于校验主LOADER模块是否损坏;启动模块,则启动主LOADER模块;校验模块还用于当主LOADER模块损坏时,校验备用LOADER模块是否损坏;拷贝模块,用于当备用LOADER模块正确时,将备用LOADER模块的内容拷贝到主 LOADER模块中。本发明实施例的机顶盒的NIT表检测触发、自动升级、手动升级、模块校验、升级数据的校验等实现过程及原理可参见本发明方法实施例中的相应描述,这里不再赘述。以上对本发明实施例所提供的机顶盒的软件升级方法及机顶盒进行了详细介绍, 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种机顶盒的软件升级方法,其特征在于,所述方法包括 检测并获取升级触发信息;判断所述升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;若是,则下载与所述软件版本相应的升级数据; 根据所述升级数据对所述机顶盒自身的软件进行更新。
2.如权利要求1所述的机顶盒的软件升级方法,其特征在于,所述检测并获取升级触发信息的步骤包括获取包含链接描述符的网络信息表; 根据所述链接描述符判断是否存在需要更新的软件;若是,则将所述升级触发信息的升级标志设置成“是”;若否,则将所述升级触发信息的升级标志设置成“否”。
3.如权利要求1或2所述的机顶盒的软件升级方法,其特征在于,在所述检测并获取升级触发信息的步骤之前,还包括校验主LOADER模块是否损坏;若否,则启动主LOADER模块; 若是,则校验备用LOADER模块是否损坏;当所述备用LOADER模块正确时,则将所述备用LOADER模块的内容拷贝到所述主 LOADER模块中。
4.如权利要求1所述的机顶盒的软件升级方法,其特征在于,在所述下载与所述软件版本相应的升级数据的步骤之后,还包括通过CRC32校验算法对所述升级数据进行校验。
5.如权利要求2所述的机顶盒的软件升级方法,其特征在于,所述下载与所述软件版本相应的升级数据的步骤具体包括根据所述网络信息表跳转到相应频点; 从所述频点获取升级数据。
6.如权利要求5所述的机顶盒的软件升级方法,其特征在于,所述从所述频点获取升级数据的步骤具体包括通过网络获取与所述软件版本相应的升级数据。
7.如权利要求2所述的机顶盒的软件升级方法,其特征在于,所述链接描述符包含软件升级信息,包括厂家代码、硬件版本、软件类型、软件版本。
8.一种机顶盒,其特征在于,所述机顶盒包括 检测模块,用于检测并获取升级触发信息;判断模块,用于判断所述检测模块所获取的升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;下载模块,用于当判断模块的判断结果为是时,下载与所述软件版本相应的升级数据;更新模块,用于根据所述下载模块所下载的升级数据对所述机顶盒自身的软件进行更新。
9.如权利要求8所述的机顶盒,其特征在于,所述检测模块包括获取单元,用于获取包含链接描述符的网络信息表;判断单元,用于根据所述获取单元所获取链接描述符判断是否存在需要更新的软件; 设置单元,用于当所述判断单元的判断结果为是时,将所述升级触发信息的升级标志设置成“是”;还用于当所述判断单元的判断结果为否时,将所述升级触发信息的升级标志设置成“否”。
10.如权利要求8或9所述的机顶盒,其特征在于,所述机顶盒还包括 校验模块,用于校验主LOADER模块是否损坏; 启动模块,则启动主LOADER模块;所述校验模块还用于当主LOADER模块损坏时,校验备用LOADER模块是否损坏; 拷贝模块,用于当所述备用LOADER模块正确时,将所述备用LOADER模块的内容拷贝到所述主LOADER模块中。
全文摘要
本发明实施例公开了一种机顶盒的软件升级方法及机顶盒,其中,该方法包括检测并获取升级触发信息;判断所述升级触发信息中的厂家代码、硬件版本、软件类型、软件版本与机顶盒自身对应的信息是否一致;若是,则下载与所述软件版本相应的升级数据;根据所述升级数据对所述机顶盒自身的软件进行更新。实施本发明实施例,通过多种方式确保升级的可靠性和稳定性,可以节约成本,并可以统一现有的前端和终端应用,使机顶盒软件的升级不受各种芯片方案的约束,实现跨平台升级,任何机顶盒厂家和前端广电运营商都可以应用,提高了机顶盒软件升级的灵活度和自由度。
文档编号H04N21/43GK102222011SQ20111017790
公开日2011年10月19日 申请日期2011年6月28日 优先权日2011年6月28日
发明者李苗, 殷伟, 罗笑南, 许国栋 申请人:云浮新智电子科技有限公司, 广东中大讯通软件科技有限公司, 广州鼎宇电子科技有限公司