一种机顶盒Loader模块升级方法及其机顶盒的制作方法

文档序号:7754858阅读:318来源:国知局
专利名称:一种机顶盒Loader模块升级方法及其机顶盒的制作方法
技术领域
本发明涉及数字电视机顶盒,尤其是涉及一种机顶盒Loader模块升级方法及其 机顶盒。
背景技术
通常,机顶盒软件架构一般由两大部分构成。其一,系统引导和程序升级部分,我 们称之为Loader模块,主要负责在机顶盒开机启动时,完成系统初始化和应用程序的加 载,并负责对机顶盒内置应用程序或者Loader本身进行升级更新,这部分功能是机顶盒启 动运行和升级更新的基础,通常要求其设计考虑全面、运行稳定可靠;其二,应用程序部分, 我们称之为主程序,主要负责与用户进行交互,完成用户所请求的各种服务。这部分功能跟 用户的使用联系较为紧密,机顶盒增值业务的开发和完善,都是通过对应用程序的升级来 完成,因此该部分的升级更新较为频繁。开发人员在设计机顶盒软件架构时,一般力求降低Loader模块的升级频率。这是 因为,当Loader模块对自身进行升级时,需要对其所在的FLASH空间进行擦 写操作。在此 过程中,如果发生断电或者类似情况时,原有的Loader模块已经被部分或者全部擦除,而 新版本的Loader尚未完成写入。那么在机顶盒下次开机启动后,Loader模块将无法正常 使用,应用程序也无法正常加载运行和升级更新,Loader模块也无法再次通过其自带的升 级功能进行自我恢复或者在线升级。尽管开发人员在设计Loader模块时,凭借经验积累和充分考虑在一定程度上确 保了 Loader模块的相对稳定性。但是,在机顶盒的实际使用过程中,对Loader模块的升级 更新,在下述几种情况下是非常必要的。其一,通过应用程序的修改无法弥补Loader模块 中存在的缺陷;其二,新增功能后,FLASH存储空间不足,需要对FLASH布局进行重新规划调 整,造成当前Loader模块的升级功能无法适应这种新的布局;其三,客户提出新的升级需 求,比如增加通过USB或者网络等途径进行升级的方式,或者在Loader加载过程中增加音 视频播放功能;其四,开发人员通过不断的优化和探讨,完善了原有版本的Loader模块,可 以提升机顶盒的启动速度、软件升级速度等性能指标。在这些情况下,对机顶盒中的Loader 模块进行升级更新是非常必要的。目前,机顶盒Loader模块的升级功能设计方案可大致概况为以下两种1,将 Loader模块永久常驻FLASH,机顶盒产品一旦投产使用后,即使发现当前版本的Loader 存在设计缺陷,也尽量避免对机顶盒中的Loader模块进行升级,即便开发了新版本的 Loader,也仅限于将其应用在新生产批次的机顶盒中;2,通过自身来完成Loader模块升级 更新。方案一中,由于Loader模块永久常驻FLASH,长期无法得到版本更新,而机顶盒中的 Loader模块对提升机顶盒的启动速度和软件升级速度以及扩展机顶盒的升级方式等方面 有着重要的作用,使得机顶盒在这些方面的提升和扩展无法进行,与此同时,也限制了客户 提出的某些新功能的开发空间。方案二中,由于现有的Loader模块升级方案缺少有效的保 护措施,对于突发断电等异常现象导致的升级失败情况,机顶盒无法进行自我恢复或者继续完成升级任务。由此产生的坏机,也只能将其返还厂商进行维修,给机顶盒厂商带来了较 多的压力和麻烦。因此,如何开发设计一种既能够使得Loader模块进行按需升级,又能够确保 Loader模块的安全和稳定的升级方案,已成为目前急需解决的技术难题之一。

发明内容
本发明的目的在于提出一种机顶盒Loader模块升级方法及具有这种升级方法的 机顶盒,以解决Loader模块升级缺少保护措施的技术问题。为解决上述技术问题,本发明公开了一种机顶盒Loader模块的升级方法,包括下 列步骤(1)机顶盒启动后进入辅助升级模块,并从Loader模块的升级状态标示区获取升 级状态;(2)当升级状态标示区的状态为“(a)发现新版本,请求升级”时,辅助升级模块直 接跳转到Loader模块,Loader模块立刻将升级状态标示区修改为状态“ (b)升级进行中”, 并优先启动自身升级功能;(3)当Loader模块自身升级失败时,则升级状态标示区的状态“(b)升级进行中” 保持不变,当机顶盒再次启动后,辅助升级模块根据状态b判定为Loader模块升级失败,便 启动其辅助升级功能,由辅助升级模块完成升级任务,并将升级状态标示区的状态修改为 “ (c)升级完成”;(4)机顶盒启动后,当升级状态标示区的状态为“(c)升级完成”时,Loader模块 监控是否有新的升级请求,若有则将升级状态标示区的状态修改为“(a)发现新版本,请求 升级”并跳转到步骤(2),若无则跳转到应用程序进行节目播放。所述的状态为(a)时,Loader模块自身进行升级的步骤包括获取升级数据并校 验、修改标示区为升级中、将升级数据写入FLASH、升级成功时修改升级状态标示区状态为 升级完成,若操作过程中升级失败,则结束操作,保持状态(b)不变。所述的状态为(b)时,启动辅助升级模块执行下列步骤启动辅助升级功能、获取 升级数据并校验、将升级数据写入FLASH、修改标示区为升级完成,重启机顶盒、升级结束。所述的状态为(c)时,则由Loader模块完成机顶盒的系统初始化,或者根据前端 下发的NIT描述信息,选择性的对应用程序或者自身进行升级更新,如果没有升级请求,则 正常加载并跳转到应用程序。所述升级参数信息由应用程序在机顶盒开机启动后,通过解析TS流携带的NIT表 来获取。本发明还公开了一种机顶盒,包括Loader升级模块及应用程序升级模块,所述的 Loader模块设置有一辅助升级模块和一升级状态标示区,所述的辅助升级模块在Loader 模块自身不能完成升级时,主动对Loader模块完成辅助升级;所述的升级状态标示区用于 存放前端下发的升级参数信息和记录Loader模块升级进展情况。所述的升级参数信息包括待升级模块标志、前端正在播发升级流的频点、符号 率、调制方式、待升级的机顶盒所在区域标示、序列号、Loader模块版本号以及硬件版本号。所述辅助升级模块常驻Loader模块中,所占的空间为64KB。
所述的升级状态标示区设置在Loader模块的最尾部,所占的空间为64KB。与现有技术相比,本发明通过增设辅助升级模块,有效解决了对Loader模块升 级时存在的安全隐患。从而改变了 Loader模块长期无法得到更新的现状,使得机顶盒的 Loader模块可以随时按需进行安全升级,从而为机顶盒的软件升级更新和性能提升以及功 能扩展等方面提供了更广阔、更灵活的空间。


下面结合实施例和附图对本发明进行详细说明,其中图1是本发明机顶盒Loader模块和应用程序模块的结构图;图2是本发明机顶盒Loader模块安全升级方案的流程图。
具体实施例方式请参见图1,机顶盒具有一 Loader模块和一应用程序模块,所述Loader模块增设 一辅助升级模块和一升级标示区。所述辅助升级模块用于确保Loader模块的安全升级,主 要针对Loader模块在对自身进行升级过程中,由于发生断电或者类似异常情况而导致升 级失败时,主动对Loader模块完成辅助升级的任务。因此,辅助升级模块可以作为Loader 模块自身升级失败时的重要补救助手常驻机顶盒的FLASH中,为机顶盒Loader模块的安全 升级提供强有力的保障,而对机顶盒整个系统本身不会造成任何影响。所述升级标示区中存放前端下发的升级参数信息和记录Loader模块升级进展情 况,用于方便辅助升级模块准确获取Loader模块本身的升级完成状态,以便及时启动其辅 助升级功能。本一实施例中,在Loader模块的最尾部开辟一个64KB的FLASH空间作为升 级标示区。其中,升级参数信息由应用程序在机顶盒开机启动后,通过解析TS流携带的NIT 表来获取,其内容包括待升级模块(Loader模块、应用模块或者所有模块)标志、前端正在 播发升级流的频点、符号率、调制方式、待升级的机顶盒所在区域标示、序列号、Loader模块 版本号以及硬件版本号等。Loader模块升级进展情况由三种状态构成(a)请求升级发现新的版本,请求对Loader进行升级,采用字符串“Find New LoaderVersion,,进行标不。(b)升级进行中开始写FLASH,正在对Loader进行升级,采用字符串“Updating LoaderNow,,进行标示。(c)升级完成写FLASH完成,Loader升级顺利完成,采用字符串“Loader Update Finish”进行标示。这三种状态分别由应用程序、Loader模块以及辅助升级模块根据具体情况进行修 改或者读取,它们是确保Loader模块能够安全升级的桥梁。本发明机顶盒Loader模块的升级原理为机顶盒启动后进入辅助升级模块,并 从Loader模块的升级标示区获取升级状态;当升级标示区的状态为请求升级时,跳转到 Loader模块由Loader模块自身进行升级,在Loader模块自身不能完成升级时,升级标示区 置为升级进行中;机顶盒重启后进入辅助升级模块,从Loader模块的升级标示区获取升级 状态为升级进行中,辅助升级模块从升级标示区获取前端下发的升级参数信息,将升级数据写入FLASH中完成Loader模块的升级并在完成升级后修改升级标示区的升级状态为升 级完成。下面详细介绍本发明Loader模块安全升级流程。请参考图2。(1)升级参数信息获取。机顶盒上电启动后,在引导程序的控制下进入辅助升级 模块,并从Loader模块最尾部的升级标示区获取升级进展情况。如果Loader模块为状态 c( “ LoaderUpdate Finish")时,则表示Loader模块的升级已经顺利完成,程序可以直接 跳转到Loader模块,由Loader模块完成机顶盒的系统初始化,或者根据前端下发的NIT描 述信息,选择性的对应用程序或者自身进行升级更新,如果没有升级请求,则正常加载并跳 转到应用程序。当应用程序正常加载运行后,由应用程序锁定主频点,并分析TS流携带的 NIT表,获取所述的升级参数信息,并将升级参数信息与当前机顶盒中已存储的特征参数进 行匹配,当升级条件满足时,可以判定前端请求终端对其Loader模块进行升级。此时,应用 程序将升级参数信息的部分内容(播发升级流的频点、符号率以及调制方式)写入Loader 模块最尾部的升级标示区,并将升级标示区修改为状态a( "Find New Loader Version"), 然后由应用程序重启机顶盒;(2)Loader模块自身升级。机顶盒再次启动后,在引导程序的控制下进入辅助升 级模块,并从Loader模块最尾部的升级标示区获取到Loader模块为状态a( "Find New LoaderVersion"),便直接跳转到Loader模块,将升级任务优先交给Loader本身完成。 Loader模块加载运行后,同样首先对自身尾部的升级标示区进行检测,当发现升级标示区 为状态a( “Find New Loader Version")时,判定前端请求对本身进行升级,便从升级标 示区获取由应用程序已经写入的前端升级流正在播发的频点、符号率和调制方式这些升级 参数,锁定频点,解析TS流,获取升级数据包,并对升级数据包进行CRC校验。若未通过 校验,则不对FLASH做任何写操作,直接跳转到应用程序,升级标示区保持状态a( "Find New LoaderVersion")不变,机顶盒下次启动后,仍然能够跳过辅助升级模块,优先选择由 Loader模块完成自身的升级任务。如果通过了 CRC校验,Loader模块便将升级标示区改为 状态b( “Updating Loader Now,,),开始将升级数据分块写入FLASH。在写入FLASH的过程 中可能有如下两种情况发生。其一,正常写入,待所有升级数据确认写完后,Loader模块将 升级标示区修改为状态c (“Loader Update Finish”),表示Loader模块顺利完成了自身升 级,下次开机后Loader可以正常使用;其二,在写入FLASH的过程中发生断电或者类似的异 常情况,那么升级标示区将保持状态b( "Updating Loader Now")不变。Loader模块对本 身的升级宣告失败,同时原有的Loader模块本身也受到了擦除破坏,下次开机后,Loader 无法正常加载运行。必须由辅助升级模块对Loader模块进行辅助升级;(3) Loader模块不能自身完成升级,辅助升级模块辅助Loader模块完成升级。当 供电正常,机顶盒重启后,在引导程序的控制下进入辅助升级模块,并从Loader模块最尾 部的升级标示区获取到Loader模块为状态b( “Updating Loader Now”),由此可以判定 Loader模块在对自身进行升级时遇到了异常情况,未能正常完成对自身的升级任务。辅 助升级模块便主动从Loader升级标示区获取由应用程序已经写入的前端正在播发升级流 的频点、符号率和调制方式等参数信息。锁定频点,解析TS流,获取升级数据包,并对升级 数据包进行CRC校验。若未通过校验,则不对FLASH做任何写操作,升级标示区保持状态 b( "Updating Loader Now”)不变,当再次重启机顶盒后,进入辅助升级模块,并从升级标示区获取到Loader模块仍然为状态b( “Updating Loader Now")时,辅助升级模块再次对 Loader模块做升级尝试;如果通过了 CRC校验,辅助升级模块将升级数据分块写入FLASH 中。在写入FLASH的过程中仍然可能有如下两种情况发生,其一,正常写入,待所有升级数 据确认写完后,辅助升级模块将升级标示区修改为状态c ( “Loader Update Finish”),这 种情况,标示辅助升级模块顺利完成了对Loader模块的升级,下次开机后Loader模块可以 正常加载运行;其二,在写入过程中又一次发生断电等类似情况,那么Loader模块尾部的 升级标示区将会保持状态bPUpdatingLoader Now")不变。辅助升级模块对Loader模块 的升级宣告失败,Loader仍然无法能够正常使用,但辅助升级模块并未因此受到任何破坏, 始终保持下次开机启动时能够正常进入。当恢复供电后,重启机顶盒,重复过程(3),直至辅 助Loader模块升级成功为止。升级成功完成后,由辅助升级模块将Loader模块尾部的升 级标示区修改为状态c( "Loader UpdateFinish”)。当再次重启机顶盒后,回到过程(1)。
将本发明应用到机顶盒的软件架构设计后,通过增设辅助升级模块,有效解决了 对Loader模块升级时存在的安全隐患。从而改变了 Loader模块长期无法得到更新的现 状,使得机顶盒的Loader模块可以随时按需进行安全升级,从而为机顶盒的软件升级更新 和性能提升以及功能扩展等方面提供了更广阔、更灵活的空间。
权利要求
一种机顶盒Loader模块的升级方法,其特征在于包括下列步骤(1)机顶盒启动后进入辅助升级模块,并从Loader模块的升级状态标示区获取升级状态;(2)当升级状态标示区的状态为“(a)发现新版本,请求升级”时,辅助升级模块直接跳转到Loader模块,Loader模块立刻将升级状态标示区修改为状态“(b)升级进行中”,并优先启动自身升级功能;(3)当Loader模块自身升级失败时,则升级状态标示区的状态“(b)升级进行中”保持不变,当机顶盒再次启动后,辅助升级模块根据状态b判定为Loader模块升级失败,便启动其辅助升级功能,由辅助升级模块完成升级任务,并将升级状态标示区的状态修改为“(c)升级完成”;(4)机顶盒启动后,当升级状态标示区的状态为“(c)升级完成”时,Loader模块监控是否有新的升级请求,若有则将升级状态标示区的状态修改为“(a)发现新版本,请求升级”并跳转到步骤(2),若无则跳转到应用程序进行节目播放。
2.如权利要求1所述的升级方法,其特征在于,所述的状态为(a)时,Loader模块 自身进行升级的步骤包括获取升级数据并校验、修改标示区为升级中、将升级数据写入 FLASH、升级成功时修改升级状态标示区状态为升级完成,若操作过程中升级失败,则结束 操作,保持状态(b)不变。
3.如权利要求1所述的升级方法,其特征在于,所述的状态为(b)时,启动辅助升级模 块执行下列步骤启动辅助升级功能、获取升级数据并校验、将升级数据写入FLASH、修改 标示区为升级完成,重启机顶盒、升级结束。
4.如权利要求1所述的升级方法,其特征在于所述的状态为(c)时,则由Loader模 块完成机顶盒的系统初始化,或者根据前端下发的NIT描述信息,选择性的对应用程序或 者自身进行升级更新,如果没有升级请求,则正常加载并跳转到应用程序。
5.如权利要求1-4中任一项所述的升级方法,其特征在于所有步骤进行中,或完成 时,均在升级状态标示区进行标记。
6.如权利要求2或3所述的机顶盒升级方法,其特征在于所述升级参数信息由应用 程序在机顶盒开机启动后,通过解析TS流携带的NIT表来获取。
7.一种机顶盒,包括Loader升级模块及应用程序升级模块,其特征在于所述的 Loader模块设置有一辅助升级模块和一升级状态标示区,所述的辅助升级模块在Loader 模块自身不能完成升级时,主动对Loader模块完成辅助升级;所述的升级状态标示区用于 存放前端下发的升级参数信息和记录Loader模块升级进展情况。
8.如权利要求7所述的机顶盒,其特征在于,所述的升级参数信息包括待升级模块 标志、前端正在播发升级流的频点、符号率、调制方式、待升级的机顶盒所在区域标示、序列 号、Loader模块版本号以及硬件版本号。
9.如权利要求7所述的机顶盒,其特征在于所述辅助升级模块常驻Loader模块中, 所占的空间为64KB。
10.如权利要求7所述的机顶盒,其特征在于所述的升级状态标示区设置在Loader 模块的最尾部,所占的空间为64KB。
全文摘要
本发明公开一种机顶盒升级方法,包括机顶盒启动后进入辅助升级模块,并从Loader模块的升级标示区获取升级状态;当升级标示区的状态为“请求升级”时,跳转到Loader模块由Loader模块自身进行升级,在Loader模块自身不能成功完成升级时,升级标示区的状态置为“升级进行中”;机顶盒再次重启后进入辅助升级模块,辅助升级模块从Loader模块的升级标示区获取升级状态为“升级进行”中,辅助升级模块由此状态判定为上次开机启动后Loader模块升级时发生失败,辅助升级模块从升级标示区获取前端下发的升级参数信息,将升级数据写入FLASH中,辅助Loader模块完成升级并在完成升级后修改升级标示区的状态为“升级完成”。本发明解决Loader模块升级时的安全问题。
文档编号H04N5/00GK101895671SQ201010233258
公开日2010年11月24日 申请日期2010年7月21日 优先权日2010年7月21日
发明者田超 申请人:深圳创维数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1