一种机顶盒升级方法

文档序号:7861898阅读:320来源:国知局
专利名称:一种机顶盒升级方法
技术领域
本发明涉及机顶盒技术领域,更具体的说,涉及一种基于Linux平台的机顶盒在应用程序中同时支持文件升级和分区升级的方法。
背景技术
机顶盒,也称为数字视频变换盒(Set Top Box,简称STB),是一个连接电视机与外部信号源的设备。它可以将压缩的数字信号转成电视内容,并在电视机上显示出来。信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。对于数字电视的播放来说,是必不可少的设备。为了满足人们日益增长的生活水平,修正原有机顶盒中的bug,增加更多更强大的 的功能,对机顶盒中的程序进行升级已经显得特别重要。然而现有的针对Linux的机顶盒在应用程序中进行升级的时候却无法同时支持对文件和分区进行升级,导致整个升级过程冗长、繁琐。大多数机顶盒在升级的时候都是通过LOADER实现升级,在嵌入式的Linux系统中都会采用分区升级的方式,在手动触发升级模式下如果要升级都要重新启动机顶盒,从uboot跳到LOADER去检测升级,这样的话过程较为麻烦。因此现在急需一种能同时支持对文件和分区进行升级的方法,在手动触发升级方式下可以直接在应用程序菜单中去检测,在没有升级的时候退出升级应用程序菜单即可,不需重启,使得机顶盒的检测升级和升级过程变得简单、方便,不影响用户观看节目。

发明内容
本发明的目的是,针对现有的机顶盒在应用程序中升级无法同时支持对文件和对分区进行升级的缺陷,提供一种能克服此缺陷的机顶盒升级方法。本发明解决上述问题的方案是提供一种机顶盒升级方法,包括以下步骤S100、在应用程序升级菜单中检测机顶盒有无升级所需的机顶盒升级文件,若有,则进入步骤S200,否则退出升级应用程序;S200、检测机顶盒升级模式,若机顶盒升级模式为文件升级文件模式则进入步骤S300 ;否则该机顶盒升级模式为分区升级模式,进入步骤S400 ;S300、在机顶盒的根文件系统下新建升级临时目录,并将文件升级模式所需的文件写入到升级临时目录,升级临时目录还包括一个用于替换原文件的脚本文件,成功后写入后重启机顶盒;S400、用分区升级文件改写rootfs分区,改写成功后重启机顶盒。本发明的机顶盒升级方法,其中S200的机顶盒升级文件为在升级前端加入数据结构和数据签名后的机顶盒升级文件。本发明的机顶盒升级方法,其中S200还包括,在检测到机顶盒有可用的升级文件时,读取机顶盒升级文件到内存中。本发明的机顶盒升级方法,其中步骤S300还包括,校验文件升级中文件的数据签名。本发明的机顶盒升级方法,其中步骤S400还包括,校验分区升级的数据签名。本发明的机顶盒升级方法,还包括,在步骤S300或步骤S400中重启机顶盒后,进行重启检测,并在检测到存在升级临时目录时,执行升级临时目录下的脚本文件,进行文件替换,替换后删除升级临时目录。实施本发明的机顶盒升级方法,能够得到以下的有益效果对机顶盒升级时,可以按照升级所需特性进行文件升级 或者分区升级,使得升级机顶盒的过程变得灵活,针对较小的升级改动使用文件升级方式,缩短升级所需时间;在大幅度升级时,将升级所涉及的内容归为分区,使得升级后的系统更为稳定。
以下结合附图
对本发明进行详细说明,其中图I为本发明的机顶盒分区示意图;图2为本发明机顶盒升级方法一则较佳实施例的流程图;图3为重启检测机顶盒的过程。
具体实施例方式以下结合附图和具体实施方式
对本发明进行对本发明进行详细说明。如图I所示为本发明机顶盒的Linux分区示意图。本发明的Linux机顶盒包括引导区(UB00T),一般用于引导机顶盒的内核,在机顶盒开机时,UBOOT会首先启动,引导其他的分区。数据库(DM),保存机顶盒应用程序用到的数据库信息。内核(KERNEL),该分区为机顶盒的核心,对机顶盒的硬件设备进行控制操作。根文件系统(ROOTFS ),机顶盒启动后,第一个挂载的分区,包含机顶盒系统引导和其他的文件系统得以挂载的必要文件。预留分区(RESERVED),该分区为预留的空间,方便以后机顶盒升级时的空间需要。以下将结合图I的具体分区情况对升级过程进行说明。如图2所示为本发明机顶盒升级方法一则较佳实施例的流程图。S100、在用户界面处,用户选择进入升级菜单界面,并选择一种升级方式,例如USB升级、OTA升级、串口升级等,此后检测是否有可用升级,若无升级,则向用户显示无相关升级的信息;若有升级,则进入步骤S200 ;S200、读取机顶盒升级文件到内存中,对读取到内存中的机顶盒升级文件进行识另IJ,以区分其升级模式为文件升级还是分区升级。具体的方法是通过升级信息结构体中的布尔型变量的数值(例如本实施例中的bFileUpgrade变量),1 (真值)则为文件升级,O (非真值)则为分区升级。对于文件升级,进入步骤S300,对于分区升级进入步骤S400。需要说明的是,此处的机顶盒升级文件为升级前端(即升级文件的提供者)加入了自定义的数据结构和数据签名的升级文件。这些加入的数据结构和数据签名用于在后续的升级过程中,对机顶盒升级文件进行识别、验证。具体的数据结构如下①文件头(image header)结构体
typedef struct tag—UPGRADE—ImageHeader—t
{
unsigned char nManufacture—Code; unsigned char nHardware—Code; unsigned char nModel—Code; unsigned char nUpgradeCount;
UpgradeInfo—t upgradeInfo[UPGRADE—MAX—NUMBER—SUPPORT]; unsigned int nCrc32; } UPGRADE—ImageHeader_t;其中I. nManufacture_Code :厂商号。2. nHardware_Code :硬件版本号。3. nModel_Code :机器型号。4. nUpgradeCount :升级中要遍历的次数。由于本升级方法支持多分区和多文件升级,故前端工具要记录实际要升级的次数。 5. upgradelnfo :升级信息结构体。6. UPGRADE_MAX_NUMBER_SUPPORT :最大支持的升级次数。nUpgradeCount 必须小于等于此值。7. nCrc32 :用于校验以上字段的crc确保其完整性。②升级信息结构体
typedef struct
{bool bFileUpgrade; //true: file upgrade union
{
FileUpgradeInfo_t filelnfo;
MtdUpgra.deInfo—t mtdlnfo;
}param;
}UpgradeInfo_t;其中
I. bFileUpgrade true :文件升级;false :分区升级。2. filelnfo :文件升级信息结构体。3. mtdlnfo分区升级信息结构体。③文件升级信息结构体
typedef struct
{
char cFiIePath[BLL—UPGRADE—MAX—FILE—PATH];
unsigned int nFile—Offset;
unsigned int nFile—Size;
unsigned short nSoftware—Updat.e_Version;
unsigned char cFile—Desc[16];
}FileUp gradeInfo—t;其中I. cFiIePath :升级文件的绝对路径。2. nFile_0ffset:此文件的数据距离升级文件的起始位置的偏移量。此字段和nFile_Size可以还原该文件的原始数据。3. nFile_Size :升级文件的大小。4. nSoftware_Update_Version :文件的版本。5. cFile_Desc[16]:文件的简单描述。④分区升级信息结构体typedef struct
{
unsigned char nlmage—ID: unsigned int nMtd—Offset; unsigned int nlmage_0ffset; unsigned int nImage_Size; unsigned short nSoftware—Update—Version; char cMtd_Desc[16];
}MtdUpgradeInfo_t;其中1. nImage_ID :指定要升级的分区ID2. nMtd_0ffset :指定要升级的分区数据距离该分区起始位置的偏移量。3.nlmage_0ffset:此分区的数据距离升级文件的起始位置的偏移量。此字段和nImage_Size可以还原该分区的原始数据。4. nImage_Size :分区数据的大小。5. nSoftware_Update_Version :分区所在的软件版本。6. cMtd_Desc :分区信息简要说明。S300、对于文件升级,在根文件系统中建立临时目录,写入升级所需的文件;具体的实现方式是根据升级文件中的数据结构中的nFile_0ffset和nFile_Size获得升级文件数据在内存中的起始地址和大小,计算文件数据的签名,校验签名。调用创建一个升级临时目录,目录名假设为upgrade,路径假设为根目录(/)下,接着调用文件系统打开操作(fopen)创建一个文件,要升级的文件名可根据CFilePath字段通过分析得到,然后调用文件系统写操作(fwrite)写入数据,成功后重启,进入重启检测步骤。S400、对于分区升级,直接将分区升级文件改写rootfs分区,具体的实现方式是根据数据结构中的根据nlmage_0ffset和nImage_Size获得升级分区数据在内存中的起始地址和大小,计算分区数据的签名,校验签名;然后根据分区ID(nImage_ID),分区偏移量(nMtd_0ffset)确定升级分区数据在nandflash中的位置,写入分区数据,成功后重启。在步骤S300和S400的最后都需要进行重启检测,重启检测机顶盒的过程如图3所示。在重启后,首先进入UB00T,引导内核KERNEL ;进入KERNEL后,挂载所有文件系统的分区;然后检测有无文件升级临时目录(即步骤S300中创建的upgrade)如果有,则执行该目录(upgrade)下的文件替换脚本(upgrade, sh),进行文件替换;最后启动相关的应用程序,完成相关的升级。具体的选择文件升级或分区升级,由升级前端决定。没有文件系统的分区支持分区升级,如果本分区数据比较多,则所需内存较大,升级时间过长,但实现较为简单,直接替换nandflash中的数据后重启即可;有文件系统的分区同时支持分区升级和文件升级,分区升级与没有文件系统的分区相同,文件升级则只需升级某分区中的需要升级的文件即可,这种升级模式所需内存小,升级时间短,但是文件升级要调用系统的文件读写完成操作,如果操作系统正在占用此文件,是不能直接对此文件进行改写的,故需在文件系统中建立升级临时目录,用于存放需要升级的文件,并且还要一个脚本文件去实现文件替换策略,此脚本也会升级到升级临时文件夹 ,替换过程要在升级完成后重启机顶盒,挂载完所有文件系统后立即执行,成功后删除此临时文件夹,然后就可以执行应用程序了。以上仅为本发明具体实施方式
,不能以此来限定本发明的范围,本技术领域内的一般技术人员根据本创作所作的均等变化,以及本领域内技术人员熟知的改变,都应仍属本发明涵盖的范围。
权利要求
1.一种机顶盒升级方法,其特征在于,包括以下步骤 S100、在应用程序升级菜单中检测机顶盒有无升级所需的机顶盒升级文件,若有,则进入步骤S200,否则退出升级应用程序菜单; S200、检测机顶盒升级模式,若机顶盒升级模式为文件升级模式则进入步骤S300 ;否则该机顶盒升级模式为分区升级模式,进入步骤S400 ; S300、在机顶盒的根文件系统下新建升级临时目录,并将文件升级模式所需的文件写入到升级临时目录,升级临时目录还包括一个用于替换原文件的脚本文件,成功后写入后重启机顶盒; S400、用分区升级文件改写rootfs分区,改写成功后重启机顶盒。
2.根据权利要求I所述的机顶盒升级方法,其特征在于,所述步骤S200的机顶盒升级文件为在升级前端加入数据结构和数据签名后的机顶盒升级文件。
3.根据权利要求2所述的机顶盒升级方法,其特征在于,所述步骤S200还包括,在检测到机顶盒有可用的升级文件时,读取机顶盒升级文件到内存中。
4.根据权利要求2所述的机顶盒升级方法,其特征在于,步骤S300还包括,校验文件升级中文件的数据签名。
5.根据权利要求2所述的机顶盒升级方法,其特征在于,步骤S400还包括,校验分区升级文件的数据签名。
6.根据权利要求1-5任一所述的机顶盒升级方法,其特征在于,在步骤S300或步骤S400中重启机顶盒后,进行重启检测,并在检测到存在升级临时目录时,执行升级临时目录下的脚本文件,进行文件替换,替换后删除升级临时目录。
全文摘要
本发明涉及一种机顶盒在应用程序中的升级方法包括以下步骤S100、进入应用程序菜单检测有无升级文件,若有,则进入步骤S200,否则退出应用程序菜单;S200、检测机顶盒升级模式,若升级模式为文件升级模式则进入步骤S300;否则为分区升级模式,进入步骤S400;S300、在根文件系统下新建升级临时目录,写入相关文件,成功后重启机顶盒;S400、用分区升级文件改写rootfs分区,改写成功后重启机顶盒。实施本发明的机顶盒升级方法,可以按照升级所需特性进行文件升级或者分区升级,使得升级机顶盒的过程变得灵活,针对较小的升级改动使用文件升级方式,缩短升级所需时间;在大幅度升级时,将升级所涉及的内容归为分区,使得升级后的系统更为稳定。
文档编号H04N21/443GK102890638SQ20121037150
公开日2013年1月23日 申请日期2012年9月29日 优先权日2012年9月29日
发明者张鹏 申请人:深圳市九洲电器有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1