发明内容
本发明的主要目的在于提供一种数字电视广播中的软件下载方法,数据流用数字存储媒介控制(Digital storage Media Command & Control,简称DSMCC)两层结构进行封装打包,形成符合MPEG-2的传输流,利用数据轮播的方式进行发送,在数字电视接收设备端,只有软件下载的接收程序按照DSMCC规范,对DSMCC封装的数据流进行过滤,就可以进行软件的在线升级。
本发明的又一目的在于提供一种数字电视广播中的软件下载方法,它对下载的数据流进行了数字签名认证,一方面保证下载的系统程序的完整性,防止数据在传输的过程中传输流包在传输过程中丢失;另一方面保证下载数据的来源,是针对指定的接收设备(数字电视接收设备)的应用软件的升级。
本发明的再一目的在于提供一种数字电视广播中的软件下载方法,它能够对于在下载过程中出现的非正常中断,进行有效、准确地断点续传,提高下载速度。
本发明的目的是通过如下技术方案实现的:
一种数字电视广播中的软件下载方法,它至少包括启动软件下载程序,读取接收设备中的存储器下载标志数据,判断是否需要执行动作,其中在服务器端按照标准的规定,将数据流用DSMCC两层结构进行封装打包,与软件下载服务描述信息以及节目关联表(Program Association Table,简称PAT)、程序映射表(Program Map Table,简称PMT)的映射信息描述信息共同形成符合MPEG-2的传输流,利用数据轮播的方式进行发送,在接收设备端,软件下载的接收程序按照DSMCC规范,对DSMCC封装的数据流进行过滤,进行软件的在线升级。
具体地,该数据流的两层结构包括控制通道和数据通道,其中控制通道设有软件下载映像数据描述信息;数据通道包含模块数据描述信息以及模块数据两部分,模块数据描述信息针对模块数据特征描述;接收设备开机启动后,接收软件下载映像描述信息,判断是否需要下载更新软件;软件下载时,先接收软件下载映像数据中描述模块信息,过滤模块数据描述模块大小、数目的信息,并存储其中的数据信息;再接收模块数据信息,过滤模块数据,数字签名校验和循环校验(CRC32)全部通过后,擦写对应的存储器地址数据,完成更新。
本发明充分、独特地利用了DSMCC两层结构私有段的设置,合理地管理、控制了模块数据的下载。
为了保证数据传输的正确性,MPEG-2传输流中每个数据包的有效负载都进行CRC32校验,并带有校验数据,在接收端,例如数字电视接收设备,有专用的CRC32硬件校验数字电路,对数据进行校验,发生错误的数据拒绝进行处理,它只对负载数据进行校验,而没有对负载数据中的有效下载数据进行校验,因此,在DSMCC数据层中,增加了下载数据的循环校验(CRC32)数据,以保证数据传输的正确性。软件下载时在接收端,过滤出下载应用软件的模块数据,和模块描述信息中对应的CRC32校验数据,进行验证计算,验证通过的,数据是有效数据,可以进行处理;验证未通过的,不是有效数据,不进行处理。
为合理地管理更新数据的存放等目的,模块描述信息包括存储器地址描述信息,软件下载时,接收端根据存储器地址描述信息,获取存储器地址信息,存放更新数据。
接收端的断点续传功能,是软件下载程序一个很重要的功能,它能保证数字电视接收设备在软件升级过程中,意外断电导致升级失败的情况下,下次开机后,软件下载程序能正常启动,在原来的位置进行软件的升级。也就是说,接收设备开机启动后,执行系统程序前,先判断新软件下载服务,或断点续传下载服务;若为新软件下载,则进行软件升级更新的完整过程;如为断点续传下载,则直接进行软件续传下载过程。
本发明是通过模块描述信息设置模块识别信息描述信息,该描述信息包含了软件整体模块数据的个数和/或模块识别信息;接收设备开机启动后,先判断已经记录的模块数据数目或识别信息,如果不完整,则进行断点续传下载,直接将上次没有接收到的模块数据过滤、下载;如果完整,则直接进入执行系统程序,或进行其他新软件完整的更新下载。
根据上述技术方案分析可知,本发明对软件下载的数据流按照DSMCC的标准进行了处理,与具体数字电视接收设备采取的硬件设备无关,只有符合DSMCC的标准的接收设备,都能对数据流进行接收。软件下载的数据流包括数字签名数据,保证下载的系统程序的完整性,防止数据包在传输过程中丢失;保证下载数据的来源,是针对指定的接收设备(例如数字电视接收设备)提高软件升级的安全性和可靠性。数据流的双重校验,保证数据传输的正确性,防止错误数据的产生,数字电视接收设备的断点续传功能,它保证接收机在接收软件的过程中,如果意外断电,在下次接收机重新启动后,能在原来的位置继续接收下载的软件。
本发明能够对数字电视接收设备的系统软件进行更新,对在软件下载过程中传输流丢包,软件升级过程中数字电视接收设备断电的情况进行处理,并在指定的时间内能够完成数字电视接收设备软件的升级,升级后的数字电视接收设备工作正常,各项功能符合指定的要求。
具体实施方式
以下结合附图和具体的实施例对本发明作进一步的详细说明:
本发明为一种数字电视广播中的软件下载方法,其软件下载的服务器端数据流的形成和发送过程如下:
参见图1和图2,软件下载服务和视音频服务、其它数据服务相似,因此,都有节目特定信息(Program Specific Information,简称PSI)/业务信息(Service Information,简称SI),因此,在下载的系统程序数据流中,包括这些基本表的信息,在图1中给出了数据流的形成过程。
首先,在MPEG-2数据流中业务描述表(Service Description Table,简称SDT)信息,在SDT中,软件下载服务必有下载服务描述信息(软件下载的信息描述信息,软件下载的替换描述信息),在数据流中也有PAT、PMT信息,PAT有PMT的包识别符(Packet Identifier,简称PID)和对应的SERVICE_ID,PMT有DSMCC数据流的下载服务起始(DownloadServerInitiate,简称DSI)、下载信息响应(DownloadInfoResponse,简称DIRES)、下载数据块(DownloadDataBlock,简称DDB)的PID。
在控制通道中,主要是DSI信息,DSI有软件下载的系统程序的映像描述信息,它包含一些描述信息列表,主要包含要广播的映像数据的ID,软件下载的标识描述信息,版本类型描述信息,延迟信息描述信息,在PMT中的compent_tag。
在数据通道中,有DIRES、DDB信息,包含的描述信息和数据都由系统程序的映像数据所产生;具体产生过程由图2说明:第一,设置分块数据大小,将系统程序映像数据分块,产生模块数据和相应的描述信息,第二,每一模块数据,产生CRC32校验数据描述信息,数字签名数据描述信息,装载模块数据的存储器(FLASH)地址描述信息,模块ID描述信息,数据信息。所有模块数据都打包到DDB中,映像数据的描述信息,每一模块的描述信息,都打包到DIRES中,形成了数据通道信息。
参见图3,软件下载的数字电视接收设备端的触发机制和接收过程:
在数字电视接收设备系统程序启动和切换频点时,可以触发软件下载服务,系统程序首先接收SDT,如果从SDT收到软件下载信息描述信息,说明有软件下载信息存在,然后再接收硬件版本信息、软件映像数据的ID,将这些信息存储在指定的闪存芯片FLASH中,作为下次软件升级的硬件版本和软件映像数据的ID,再接收软件下载替换描述信息,过滤出硬件版本信息、软件映像数据的ID,如果硬件版本相同,软件映像数据的ID不相同,并在指定的映像数据ID范围内,说明软件需要更新,下次数字电视接收设备启动后,开始进行下载数据的接收。
数字电视接收设备在接收到软件下载的授权管理信息(EntitlementManagement Message,简称EMM)数据时,也可以触发软件下载服务,过滤出硬件版本信息、软件映像数据ID,如果硬件版本信息与FLASH中的硬件版本信息相同,软件映像数据的ID与FLASH中的映像数据的ID不相同,并在指定的映像ID范围内,说明软件需要更新,用EMM数据的硬件版本替换FLASH数据的硬件版本,软件映像数据的ID,保证下次软件下载时是最新的版本信息,下次数字电视接收设备启动后,开始进行下载数据的接收。
数字电视接收设备开机后,启动软件下载程序,读取Flash中下载标志数据,如果系统程序不需要升级,直接启动系统程序,否则,再判断是新软件下载服务、还是断点续传的下载服务。
参见图4,其为服务器端数字签名数据的形成过程,将下载的系统软件映像数据分块,对每一模块数据利用哈希(hash)算法产生摘要数据,然后用数字电视接收设备生产厂商提供的私有密钥利用RSA算法对摘要数据加密,再将加密的数据封装到DIRES中,随同其它流一起广播出去。
上述这些数据通过数据轮播的方式通过播放卡播放出去。
参见图4、5,数字电视接收设备端的校验过程,如第m个模块:数字电视接收设备在收到DIRES数据信息后,从中过滤到第m个模块加密数据,然后用数字电视接收设备生产厂商提供的公共密钥对加密数据用RSA算法进行解密,得到解密数据,再从DDB中过滤到第m个模块数据,用hash算法对m个模块产生摘要数据,然后再对第m个解密数据和第m个摘要数据进行比较,如果相同,说明第m个模块数字签名校验正确,对其它的模块采用相同的办法进行校验。
参见图3、4、5,具体地,新软件下载服务的接收过程为:
第一步:接收PAT,过滤SERVICE_ID和PMT的PID,再用SERVICE_ID和PID接收PMT信息,再过滤DSMCC中的DSI,DIRES,DDB的PID;
第二步:接收DSI,再过滤系统程序映像描述信息,映像的ID,硬件版本信息、软件版本信息,再从FLASH中读取硬件版本信息、软件版本信息,如果硬件版本相同,软件版本不同(接收的软件版本大于FLASH中的软件版本),软件下载初始化正常,开始接收下载数据。
第三步:接收DIRES信息,过滤映像数据模块大小,模块的数目,再过滤每模块的CRC32数据、数字签名数据、映射的FLASH地址、模块的ID、模块的版本,再存储这些数据信息。
第四步:接收DDB信息,过滤每模块的数据,进行CRC32校验验证和数字签名验证,如果验证符合要求,擦写对应的FLASH地址数据。每模块的数据验证和擦写依次进行,所有数据更新完成后,启动系统程序。
参见图3、6,本发明断点续传的软件下载,和上述过程的不同点是不接收DSI和DIRES,先从FLASH中读取过滤数据,设置过滤数参数后,接收DDB信息,过滤上次没有被接收的模块数据,具体的验证过程和上面一致,更新完成后,启动系统程序。
结合图6所示,断点续传功能是指数字电视接收设备在断电、长时间没有信号或者其它异常的情况下导致软件升级失败,再次升级的过程中,不会重新接收所有的下载数据,而是从上次下载结束的地方开始接收,提高了数字电视接收设备软件下载的速度。
再参见图6,数字电视接收设备在系统软件升级失败之前的软件下载过程和存储器中数据的分配情况,数字电视接收设备的系统软件被分成n个模块,对应的存储器有多个存储空间,当数字电视接收设备每接收一个模块数据时,数字签名校验和CRC32校验通过以后,将数据写入对应的存储器块,并在存储器的指定位置标记模块的序号,已接收模块的数目,下载完成标志。数字电视接收设备升级失败有这两种情况:一种是当接收了其中第m个模块,数字签名校验和CRC32校验通过以后,并且将这第m个模块的数据写入对应的存储器块,模块序号、数目,下载标志更新以后;另一种是数字电视接收设备正在接收第m个模块时。
在再次系统软件升级的过程中,如果是第一种情况,开始接收第m+1个模块,另一种情况开始接收第m个模块。直至所有的模块全部接收,系统软件升级完成。
实现本发明方法的设备采用码流播放服务器、调制器、复用器、数字接收机以及电视机。具体应用过程为:
在服务器端,软件下载数据流的测试,运行数据流生成系统程序,将软件映像文件生成MPEG-2的数据流(解决系统程序的BUG,增加新的功能),为了软件下载的通用性和网络的利用率,将软件下载的数据流和视音频流一起注入到复用器中,复用器将数据和视音频流复用后,再输入到调制器中,调制器对输入的信号进行调制后(设定频点和符号率),通过有线电缆将信号调制器对输入的信号进行调制后(设定频点和符号率),通过有线电缆将信号广播出去,生成的数据流能被复用器复用到视音频流中,也能被调制器调制后输出。
在接收端,数字接收机以及电视机,数字电视接收设备软件初始化(软件下载程序和系统程序通过烧录设备擦写到FLASH中), 软件下载触发机制测试,在服务器端播放下载数据流,当数字电视接收设备开机和切换频点时,系统程序界面显示提示信息,通知用户启动数字电视接收设备,开始软件的升级,EMM数据触发测试,通过CA(条件接收,Conditional Access)系统产生EMM数据,数字电视接收设备接收到EMM数据后,系统程序界面显示提示信息,通知用户启动数字电视接收设备,开始系统软件升级。
数字电视接收设备进行升级试验,在服务器端播放不同硬件版本和软件版本的下载的数据流,当下载流中过滤的硬件版本与FLASH中的硬件版本不相同时,系统程序界面显示提示信息:数字电视接收设备硬件版本不相同,重新启动系统程序。当硬件版本相同,过滤到软件版本与FLASH中的软件版本相同时,系统程序界面显示提示信息:数字电视接收设备程序是新程序,重新启动系统程序。过滤到软件版本与FLASH中的软件版不相同时,显示提示信息:请稍等,开始软件下载。当系统程序升级完后,重新启动系统程序。两台数字电视接收设备升级后,对各项功能进行了测试,系统程序的问题得到了解决,新增的功能运行正常。
最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。