机顶盒软件空中升级数据下载的方法

文档序号:6440987阅读:480来源:国知局
专利名称:机顶盒软件空中升级数据下载的方法
技术领域
本发明涉及机顶盒的维护方法,尤其涉及机顶盒的软件升级的方法。
背景技术
数字机顶盒是典型嵌入式产品中的一种,几乎所有的嵌入式产品都会涉及到产品软件升级的问题。不同的产品有可能不同的升级方式,参见图1,机顶盒可以使用的升级方式有空中升级、串口升级、USB存储设备升级以及机顶盒对机顶盒的升级等。其中的空中升级,是指前端通过相应的信道,如:DVB-S (Digital Video Broadcast-Satellite,卫星数字视频广播)使用卫星发射无线电波、DVB-C (Digital Video Broadcast-Cable,有线数字视频广播)采用线缆传输信号等,将升级数据发送到终端设备,也就是机顶盒。终端设备接收并解析数据,校验确认数据被完整接收到后,更新软件到新的版本。对于机顶盒来说,空中升级功能是在产品投放市场之前必须具备的基本功能之一,在机顶盒的软件升级的过程中,主要的时间开销在于下载数据和擦写Flash存储器。下载数据主要涉及到传输流解复用过程。在数字机顶盒技术中,是将视频信息、音频信息、控制状态信息等在模拟世界时连续的信息转换成数字信息之后被拆分成一小块一小块然后再将这些小块的数据打包成TS (Transport Stream,传输流)包。每一个TS包的大小固定为188个字节,每一个包都会有一个13位的身份编号,称为PID (PacketIdentifier,包识别码)。另外还有表识别码TablelD、扩展表识别码TableID_Ext和数据段编号Section Number等,这几个参数通常用来做为筛选数据的条件。在机顶盒软件空中升级中,通常是将升级文件拆分成若干个TS包,每个TS包都使用同一个PID和同一个TablelD。在机顶盒的DEMUX (Demultiplex 解复用)模块只要设置了这两个值就可以正确获取到所有的升级数据。根据传输流的传输特点:数据循环轮播,也就是说,错过了这一次还可以在下次同样的数据到来的时候接收, 轮播的数据的最小单位是TS包。比TS包更上一级的传输单位是Section (数据段),一个Section最多为4096个字节。一个Section可以被分成若干个TS包。升级数据可以拆分成很多个Section,可以给每个Section进行编号
。如此,在升级传输流文件中,每一个Section都有一个统一的PID和TablelD。根据DEMUX的特点,如果设置的筛选条件只有PID和TableID的话,那么每个Section将被随机的接收,而如果将Section的编号也做为数据筛选条件的话,那么DEMUX就会接收到这个完整的Section数据。但是由于数据包是采用循环轮播的方式,如果指定接收某个Section的话,那就会需要一定的随机等待时间。假设:升级文件被拆分成2000个数据块Section,任意接收一个Section的时间为0.01秒,即每秒可以接收到100个Section,那么每个Section的平均等待时间为20秒。实际应用中,通过DEMUX中所采用的一些技术,实际每个Section的等待时间大约为2-3秒,那么升级文件的全部接收完成需要2000*2=4000秒,超过I小时。由于在升级的过程中机顶盒不能播放电视节目,因此该过程要求以尽可能短的时间完成,现在通常要求控制在数分钟以内。可见,实有必要对现有的空中升级的数据下载速度进行优化。

发明内容
本发明要解决的技术问题在于克服上述现有技术存在的不足,而提出一种机顶盒软件空中升级数据下载的方法,可以有效地优化升级数据下载速度。本发明针对上述技术问题而提出的技术方案包括,提出一种机顶盒软件空中升级数据下载的方法,包括:将升级数据组合成一文件,将该文件在逻辑上切分为若干个数据块,将这些数据块连续编号,并将有关该文件的描述信息封装到起始块中;将各数据块分别对应于一个数据段,并 使数据段的扩展表ID号及段号与数据块的编号相对应;将该升级数据以数据段的形式传输;从数据流中捕获到对应于起始块的数据段,通过解析起始块中的块描述信息,获取数据总长度和块的总数;以数据段的形式解析各数据块,直至所有的数据块接收完成。所述的以数据段的形式解析各数据块,直至所有的数据块接收完成的过程,具体包括:依数据块的编号次序,一块一块地解析各数据块,直至所有的数据块接收完成的过程,以实现数据块的顺序接收。所述的以数据段的形式解析各数据块,直至所有的数据块接收完成的过程,具体包括:创建一个数组来记录每个数据块的接收情况,该数组的长度与升级数据的块的总数相等,数组的每个元素对应一个数据块,每个元素的值可用以标记该元素所对应的数据块是否已经接收完成,以实现数据块的随机接收。每个元素均是以I表示数据块已经接收完成并以O表示数据块未接收完成的。如果在接收到一些数据块之后重复出现已经接收完成的数据块的情形,则重置数据块的编号,使其从头开始,依数据块的编号次序,一块一块地解析各数据块,直至所有的、先前未接收完成的数据块全部接收完成,以实现数据块的顺序接收。所述的将这些数据块连续编号的过程,具体包括:按
的顺序进行数据块的编号,所述的起始块对应编号为0,起始块之外的各数据块为[1,2,3,…N]。所述的使数据段的扩展表ID号及段号与数据块的编号相对应,具体包括:数据段的扩展表ID号=数据块的编号/256,数据段的段号=数据块的编号%256。所述的从数据流中捕获到对应于起始块的数据段的过程,具体包括:将针对数据段的筛选器的扩展表ID号项设置为O。起始块之外的各数据块的接收完成,具体包括:将针对数据段的筛选器的扩展表ID号项设置为数据块所对应的数据段的扩展表ID号,将针对数据段的筛选器的数据段的段号项设置为数据块所对应的数据段的段号。每个数据块的大小是可设置的,每个数据块的最大值不超过一个数据段的最大值。与现有技术相比,本发明的机顶盒软件空中升级数据下载的方法,通过将升级数据进行逻辑分块并对分块赋予连续编号,可以有效地优化升级数据下载速度。


图1是机顶盒软件空中升级的流程示意。
图2是本发明的机顶盒软件空中升级数据下载的方法第一实施例的流程示意。图3a和图3b是本发明的机顶盒软件空中升级数据下载的方法第二实施例的流程示意,其中,图3a是主流程,图3b是分支流程。
具体实施例方式以下结合附图,以机顶盒为例,对本发明予以进一步地详尽阐述。本发明的构思是:将升级数据组合成一文件,将该文件在逻辑上切分为若干个数据块,将这些数据块连续编号,并将有关该文件的描述信息封装到起始块中;将各数据块分别对应于一个数据段,并使数据段的扩展表ID号及段号与数据块的编号相对应;将该升级数据以数据段的形式传输;从数据流中捕获到对应于起始块的数据段,通过解析起始块中的块描述信息,获取数据总长度和块的总数;以数据段的形式解析各数据块,直至所有的数据块接收完成。本发明,引入了一个数据块Block的概念:把需要升级的程序文件使用一个PC工具打包成一个文件,然后将这一个文件在逻辑上切分成若干个数据块,每个数据块的大小可以设置。并且将这些数据块进行连续的编号
,并且定义块号为O的块为该文件的一些描述信息,比如:文件的长度、每一个块的大小、总的块数、文件校验和等。先接收到编号为O的数据块。然后根据该数据块的解析结果继续接收后面的数据。要筛选出来编号为O的数据块可以设置扩展表ID即TableID_Ext为O。剩余的数据TableID_Ext为I到65535,而Section Number为O到255循环。也即:块号为I的时候,TableID_Ext 值为 1、Section Number 为 O ;块号为 2 的时候,TableID_Ext 为 1、SectionNumber为I ;块号为3的时候,TableID_Ext为l、Section Number为2 ;块号为256的时候,TableID_Ext 为 USection Number 为 255 ;块号为 257 的时候,TableID_Ext 为 2、SectionNumber为O ;块号为258的时候,TableID_Ext为2、Section Number为I ;因此总共可以编号的数据块数目为65535*256=16776960,而一个块的最大值为一个Section的最大值:4096个字节。这样可以被拆分的文件的最大容量为16776960*4096=68718428160个字节,显然目前根本不可能有这么大的文件做为升级文件。解包是数据打包的逆过程,只要解析出这个随机接收到的Section的TableID_Ext和Section Number的值,就可以计算出该Section是文件中的第几块数据。根据这个索引再结合对数据块O的解析中数据块的大小,就可以将该数据块拷贝到目标内存数据的相应位置。同时在此之前,根据对数据块O的解析可以知道总的块数,可以创建一个总块数大小的数组,用该数组的每个元素的值表示该数据块是否已经接收完成,如果为O表示没有接收,如果为I表示已经接收,所以每接收到一个完整的数据块,只需要简单地将一个数组元素赋值为I即可,同时将记录已经接收到数据块的总数加I。这样就可以通过比较已经接收到数据块的总数和对数据块O的解析得到总的块数的数目进行一个大小比较以判断是否接收完成。与此同时,可以通过遍历前面的接收状态数组就获悉有哪些数据块没有接收到。综上,本发明的机顶盒软件空中升级数据下载的方法具有以下几个特点。1、使用一个数组来记录每一个数据块的接收情况,在接收前将所有的数组值设置为0,当某个数据块成功接收之后,将其对应的数组元素的值设置为1,因此在后续的任意时段可以通过查询该数组元素的值就可以知道某个数据块是否已经接收,也可以通过遍历该数组对未接收到的数据块重新接收。2、进一步地,可以由顺序接收Section变为随机接收,随机接收的实现原理是升级文件从头至尾被拆分为编号连续的数据块。因为每个数据块的大小为一个确定的值,这样根据接收到的数据块的编号就可以知道该数据块在文件中的位置,这样就可以实现即使是随机接收数据块也可以还原文件的全部数据。3、如果由于码流的播放速度或者DEMUX的驱动的原因不能够一次性全部接收完所有的数据块,也就是在所有的数据块接收完成之前有已经接收过的数据块再次被接收至IJ。那么就通过遍历上述的数组,对没有接收到的Section进行针对于特定数据块的接收处理。参见图2,本发明的机顶盒软件空中升级数据下载的方法第一实施例,具体流程大致包括以下步骤:
5101:设置 Channel (通道)的 PID ;
5102:设置 Filter (筛选器)的 TableID ;
5103:设置 Filter 的 TableID_Ext=0,该 Section 为块描述信息;
5104:解析块描述信息,获取数据总长度和块的总数Total ;
S105:依数据块的编号次序,一块一块地解析各数据块,直至所有的数据块接收完成的过程,以实现数据块的顺序接收。

其中,步骤S105可进一步细分为以下子步骤:
51051:判断当前接收的数据块的块号BlockNo是否〈Total ,是的话,转S1052,否则,转 S1054 ;
51052:设置 Filter 的 TableId_Ext=BlockNo/256,
Filter 的 SectionNum=BlockNo%256 ;
51053:解析 Section 数据,然后 BlockNo 加 1,返回 S1051 ;
51054:所有数据接收完成,结束。参见图3a和图3b,本发明的机顶盒软件空中升级数据下载的方法第二实施例,具体流程大致包括以下步骤:
5201:设置 Channel 的 PID ;
5202:设置 Filter 的 TableID ;
5203:设置 Filter 的 TableID_Ext=0,该 Section 为块描述信息;
5204:解析块描述信息,获取数据总长度和块的总数Total ;
5205:只设置 Channel 的 PID 和 Filter 中的 TableId ;
5206:通过一个数组来记录每个数据块的接收情况,该数组的长度与升级数据的块的总数相等,数组的每个元素对应一个数据块,每个元素的值可用以标记该元素所对应的数据块是否已经接收完成,以实现数据块的随机接收;
5207:当出现接收重复时,即出现ReCe[Bl0CkN0]=l的情形时,数据块的编号,使其从头开始,也就是=BlockNo从I开始直到等于Total,依数据块的编号次序,一块一块地解析各数据块,直至所有的、先前未接收完成的数据块全部接收完成,以实现数据块的顺序接收,需要说明的是,期间遇到先前已经接收完成的数据块时,是可以直接跳过、无须再次接收的。
需要说明的是,如果实际应用中每次随机接收到的Section都不会重复,直到全部接收完成,那么就只需要进行上述的图3a所示的主流程。但是实际测试可以发现:当接收到一定数据的Section之后,就会出现重复接收到前面已经接收过的Section的现象,出现重复接收的时间和码流的播放速度和DEMUX模块的驱动有关,由于这部分内容与本发明的相关性不大,在此不予进一步展开论述。针对于这种现象,本发明相应地提出了一种均衡的解决办法,也就是,图3b所示的分支流程,对应于上述的步骤S207。其中,步骤S206可进一步细分为以下子步骤:
52061:判断当前已接收的数据块数量ReceivedBlockNum是否〈Total ,是的话,,转S2062,否则,转 S2065 ;
52062:解析数据 BlockNo = (TableID_Ext_l) *256 +SectionNo ;
52063:判断当前接收的数据块是否已经存在ReCe[Bl0CkN0]==l ,是的话,转分支B,也就是步骤S207,否则,转S2064 ;
52064:该数据块是新接收的,Rece [BlockNo] =1,ReceivedBlockNum 加 I,返回 S2061 ;
52065:所有数据接收完成,结束。其中,步骤 S207可进一步细分为以下子步骤:
52071:重置BlockNo,使其从头开始;
52072:判断是否同时满足Rece[BlockNo]==0并且BlockNo〈Total ,是的话,转S20732,否则,转 S2075 ;
52073:设置 Filter 的 TableId_Ext=BlockNo/256,
Filter 的 SectionNum=BlockNo%256 ;
52074:解析 Section 数据,然后 BlockNo 加 1,返回 S2072 ;
52075:所有数据接收完成,结束。与现有技术相比,本发明的机顶盒软件空中升级数据下载的方法,通过引入数据块及相应的管理办法,可以使各个数据段的接收过程独立,进一步地,通过设置数组来对数据块的接收状态进行管理,可以使数据段的接收由顺序转换为随机,从而能够有效地实现升级数据下载速度的优化。上述内容,仅为本发明的较佳实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。
权利要求
1.一种机顶盒软件空中升级数据下载的方法,其特征在于,包括: 将升级数据组合成一文件,将该文件在逻辑上切分为若干个数据块,将这些数据块连续编号,并将有关该文件的描述信息封装到起始块中;将各数据块分别对应于一个数据段,并使数据段的扩展表ID号及段号与数据块的编号相对应;将该升级数据以数据段的形式传输; 从数据流中捕获到对应于起始块的数据段,通过解析起始块中的块描述信息,获取数据总长度和块的总数;以数据段的形式解析各数据块,直至所有的数据块接收完成。
2.依据权利要求1所述的方法,其特征在于,所述的以数据段的形式解析各数据块,直至所有的数据块接收完成的过程,具体包括: 依数据块的编号次序,一块一块地解析各数据块,直至所有的数据块接收完成的过程,以实现数据块的顺序接收。
3.依据权利要求1所述的方法,其特征在于,所述的以数据段的形式解析各数据块,直至所有的数据块接收完成的过程,具体包括: 创建一个数组来记录每个数据块的接收情况,该数组的长度与升级数据的块的总数相等,数组的每个元素对应一个数据块,每个元素的值可用以标记该元素所对应的数据块是否已经接收完成,以实现数据块的随机接收。
4.依据权利要求3所述的方法,其特征在于,每个元素均是以I表示数据块已经接收完成并以O表示数据块未接收完成的。
5.依据权利要求3所述的方法,其特征在于,如果在接收到一些数据块之后重复出现已经接收完成的数据块的情形,则重置数据块的编号,使其从头开始,依数据块的编号次序,一块一块地解析各数据 块,直至所有的、先前未接收完成的数据块全部接收完成,以实现数据块的顺序接收。
6.依据权利要求1所述的方法,其特征在于,所述的将这些数据块连续编号的过程,具体包括: 按[O,I, 2,3,…N]的顺序进行数据块的编号,所述的起始块对应编号为O,起始块之外的各数据块为[1,2,3,…N]。
7.依据权利要求6所述的方法,其特征在于,所述的使数据段的扩展表ID号及段号与数据块的编号相对应,具体包括: 数据段的扩展表ID号=数据块的编号/256,数据段的段号=数据块的编号%256。
8.依据权利要求7所述的方法,其特征在于,所述的从数据流中捕获到对应于起始块的数据段的过程,具体包括:将针对数据段的筛选器的扩展表ID号项设置为O。
9.依据权利要求7所述的方法,其特征在于,起始块之外的各数据块的接收完成,具体包括:将针对数据段的筛选器的扩展表ID号项设置为数据块所对应的数据段的扩展表ID号,将针对数据段的筛选器的数据段的段号项设置为数据块所对应的数据段的段号。
10.依据权利要求1至9任一所述的方法,其特征在于,每个数据块的大小是可设置的,每个数据块的最大值不超过一个数据段的最大值。
全文摘要
一种机顶盒软件空中升级数据下载的方法,包括将升级数据组合成一文件,将该文件在逻辑上切分为若干个数据块,将这些数据块连续编号,并将有关该文件的描述信息封装到起始块中;将各数据块分别对应于一个数据段,并使数据段的扩展表ID号及段号与数据块的编号相对应;将该升级数据以数据段的形式传输;从数据流中捕获到对应于起始块的数据段,通过解析起始块中的块描述信息,获取数据总长度和块的总数;以数据段的形式解析各数据块,直至所有的数据块接收完成。本发明可以有效地优化升级数据下载速度。
文档编号G06F9/445GK103167348SQ20111041405
公开日2013年6月19日 申请日期2011年12月13日 优先权日2011年12月13日
发明者刘光勇 申请人:深圳长城开发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1