專利名稱:一種多flash設(shè)備的機(jī)頂盒軟件升級方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電視機(jī)頂盒領(lǐng)域,尤其涉及一種多Flash設(shè)備的機(jī)頂盒軟件升級方法。
背景技術(shù):
隨著全球化的數(shù)字電視行業(yè)發(fā)展,數(shù)字電視機(jī)頂盒的功能已經(jīng)越來越強(qiáng)大,越來越向計(jì)算機(jī)靠近,上網(wǎng)、互動(dòng)游戲也開始在機(jī)頂盒上流行,Iinux操作系統(tǒng)在機(jī)頂盒應(yīng)用越來越廣泛,機(jī)頂盒的軟件容量也越來越大。而通常使用的一片norflash設(shè)備容量已經(jīng)開始面臨不足。多flash設(shè)備的機(jī)頂盒在之后將成為趨勢。另外機(jī)頂盒行業(yè)為降低使用多flash設(shè)備所帶來的成本增高,之后的機(jī)頂盒將逐漸使用nandflash代替之前使用的norflash。nandflash具有容量大、讀寫速度快,成本低的優(yōu)勢。但nandflash在數(shù)據(jù)安全方面不如的norflash。由于nandflash在寫數(shù)據(jù)的過程中可能導(dǎo)致物理分區(qū)損壞,因此nandflash的驅(qū)動(dòng)的實(shí)現(xiàn)方式為,不是直接使用物理分區(qū)來尋址,而是使用邏輯分區(qū),將邏輯分區(qū)映射到物理分區(qū)。當(dāng)物理分區(qū)損壞,而映射該分區(qū)的邏輯分區(qū)需要自動(dòng)指向下一個(gè)正常的物理分區(qū)。在Iinux系統(tǒng)下對nandflash的使用通常都是分區(qū)域使用的。鑒于nandflash的特性,每個(gè)分區(qū)是不能完全存放數(shù)據(jù)的,必須保留一部分區(qū)域出來防止壞塊產(chǎn)生。傳統(tǒng)方式的OTA升級通常只針對一個(gè)norflash設(shè)備,且不支持nandflash設(shè)備升級,無法滿足需求。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有技術(shù)中傳統(tǒng)OTA升級無法支持多flash設(shè)備和nandflash壞塊處理的問題,提供一種多Flash設(shè)備的機(jī)頂盒軟件升級方法。本發(fā)明的目的通過下述技術(shù)方案來實(shí)現(xiàn):
一種多Flash設(shè)備的機(jī)頂盒軟件升級方法,其具體包含以下步驟:
步驟1.將每個(gè)flash設(shè)備上的升級數(shù)據(jù)合并為一個(gè)升級文件,合并后的升級文件包含升級文件描述頭和N個(gè)文件數(shù)據(jù),其中升級文件的合并規(guī)則為:升級文件描述頭+文件I
數(shù)據(jù)+文件2數(shù)據(jù)…+文件N數(shù)據(jù),所述1、2......N對應(yīng)N個(gè)flash設(shè)備;
步驟2.按照步驟I的方式對各個(gè)flash設(shè)備上的升級數(shù)據(jù)進(jìn)行填充;
步驟3.使用填充后升級文件進(jìn)行數(shù)據(jù)打包;
步驟4.機(jī)頂盒端升級數(shù)據(jù)處理;
所述升級文件描述頭包含以下字段:文件頭描述字符串標(biāo)志、文件頭長度、升級數(shù)據(jù)段個(gè)數(shù)、每個(gè)升級數(shù)據(jù)段的信息;文件頭長度從升級數(shù)據(jù)段個(gè)數(shù)開始,到文件頭結(jié)束;
所述每個(gè)升級數(shù)據(jù)段的信息包括:fla sh設(shè)備號(hào)、基于本flash設(shè)備的開始地址、數(shù)據(jù)段長度、數(shù)據(jù)段CRC校驗(yàn)值、數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址。優(yōu)選地,所述步驟2中:當(dāng)flash為norflash時(shí),將整個(gè)norflash設(shè)備上的數(shù)據(jù)或需要升級的部分?jǐn)?shù)據(jù)讀出,然后按步驟I的方式,將數(shù)據(jù)填充到新的升級文件中。優(yōu)選地,所述步驟2中:當(dāng)flash為nandflash時(shí),nandflash設(shè)備數(shù)據(jù)的升級是基于分區(qū)的,nandflash的升級數(shù)據(jù)段從分區(qū)開頭開始,且安全升級數(shù)據(jù)的大小不超過原始設(shè)計(jì)的大小。優(yōu)選地,所述步驟4具體包括:
步驟A.機(jī)頂盒端從升級流中將升級數(shù)據(jù)接收完成后,機(jī)頂盒首先需要按照步驟I定義的格式,使用“文件頭標(biāo)志字符串”、“文件頭長度”字段將升級數(shù)據(jù)中的文件頭描述剝離出來,并且分析出“升級數(shù)據(jù)段個(gè)數(shù)”和各升級數(shù)據(jù)段的詳細(xì)信息。其中所述升級數(shù)據(jù)為按照步驟I合并后的升級文件的數(shù)據(jù)。步驟B.根據(jù)步驟A分析出的各升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址”,獲取到升級數(shù)據(jù)段的升級數(shù)據(jù);并根據(jù)升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段長度”和“數(shù)據(jù)段CRC校驗(yàn)值”對升級數(shù)據(jù)進(jìn)行正確性校驗(yàn);校驗(yàn)成功后根據(jù)“flash設(shè)備號(hào)”和“基于本flash設(shè)備的開始地址”字段信息將升級數(shù)據(jù)寫入到相應(yīng)的flash設(shè)備的對應(yīng)地址。本發(fā)明的有 益效果:本發(fā)明的方法在不修改升級流打包規(guī)范的前提下解決傳統(tǒng)OTA升級無法支持多flash設(shè)備和nandflash壞塊處理的問題,實(shí)現(xiàn)支持多flash設(shè)備,支持nandflash壞塊處理。
具體實(shí)施例方式本發(fā)明公開了一種多Flash設(shè)備的機(jī)頂盒軟件升級方法,其具體包含以下步驟: 步驟1.將每個(gè)flash設(shè)備上的升級數(shù)據(jù)合并為一個(gè)升級文件,合并后的升級文件包
含升級文件描述頭和N個(gè)文件數(shù)據(jù),其中升級文件的合并規(guī)則為:升級文件描述頭+文件I數(shù)據(jù)+文件2數(shù)據(jù)…+文件N數(shù)據(jù),所述1、2......N對應(yīng)N個(gè)f I ash設(shè)備。上述升級文件描述頭包含以下字段:文件頭描述字符串標(biāo)志、文件頭長度、升級數(shù)據(jù)段個(gè)數(shù)、每個(gè)升級數(shù)據(jù)段的信息。上述每個(gè)升級數(shù)據(jù)段的信息包括:flash設(shè)備號(hào)、基于本flash設(shè)備的開始地址、數(shù)據(jù)段長度、數(shù)據(jù)段CRC校驗(yàn)值、數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址。所述文件頭的具體結(jié)構(gòu)如下:
文件頭描述{
文件頭標(biāo)志字符串:
文件頭長度;
升級數(shù)據(jù)段個(gè)數(shù);
For (i=0; i<升級數(shù)據(jù)段個(gè)數(shù);i++)
{
flash設(shè)備號(hào);
基于本flash設(shè)備的開始地址;
數(shù)據(jù)段長度;
數(shù)據(jù)段CRC校驗(yàn)值;
數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi) 的偏移地址;
}
} 其中文件頭長度從升級數(shù)據(jù)段個(gè)數(shù)開始,到文件頭結(jié)束。由于傳統(tǒng)的升級流打包只支持一個(gè)flash設(shè)備,即所有的升級數(shù)據(jù)都是存放在一個(gè)升級文件上,并用這個(gè)升級文件來進(jìn)行的數(shù)據(jù)打包。因此要支持多flash設(shè)備,需要將各flash設(shè)備上的升級數(shù)據(jù)存按照上述的格式放到一個(gè)升級文件上去。步驟2.按照步驟I的方式對各個(gè)flash設(shè)備上的升級數(shù)據(jù)進(jìn)行處理。當(dāng)flash為norflash時(shí),將整個(gè)norfIash設(shè)備上的數(shù)據(jù)或需要升級的部分?jǐn)?shù)據(jù)讀出,然后按步驟I的方式,將數(shù)據(jù)填充到新的升級文件中。當(dāng)flash為nandflash時(shí),nandflash設(shè)備數(shù)據(jù)的升級是基于分區(qū)的,nandflash的升級數(shù)據(jù)段從分區(qū)開頭開始,且安全升級數(shù)據(jù)的大小不超過原始設(shè)計(jì)的大小。對于傳統(tǒng)的norflash設(shè)備,整個(gè)設(shè)備上的數(shù)據(jù)都是可以一次性進(jìn)行升級的。但由于nandflash需要有壞塊處理機(jī)制,每個(gè)分區(qū)必須留下足夠的備用空間給出現(xiàn)壞塊的情況下使用。當(dāng)正在使用的機(jī)頂盒某分區(qū)的壞塊值已經(jīng)趨近極限,快要將備份區(qū)用完,而此時(shí)該塊的升級數(shù)據(jù)大小卻是整個(gè)分區(qū)的大小,顯然分區(qū)實(shí)際上已經(jīng)沒有足夠的空間來存放升級數(shù)據(jù),這樣就會(huì)導(dǎo)致升級失敗。因此nanf Iash設(shè)備數(shù)據(jù)的升級是基于分區(qū)的,且安全的升級數(shù)據(jù)大小不能超過原始設(shè)計(jì)的大小。如:分區(qū)的大小是I兆,備份區(qū)的大小是0.2兆,因此該分區(qū)的安全升級數(shù)據(jù)大小是0.8兆。將分區(qū)數(shù)據(jù)按照步驟1,填充到新的升級文件中。nandflash的升級數(shù)據(jù)段必須從分區(qū)開頭開始。不能從分區(qū)的中間開始。步驟3.使用填充后升級文件進(jìn)行數(shù)據(jù)打包。使用合并后升級文件,按照原有的方式進(jìn)行數(shù)據(jù)打包。步驟4.機(jī)頂盒端升級數(shù)據(jù)處理。所述步驟4具體包括
步驟A.機(jī)頂盒端從升級流中將升級數(shù)據(jù)接收完成后,機(jī)頂盒首先需要按照步驟I定義的格式,使用“文件頭標(biāo)志字符串”、“文件頭長度”字段將升級數(shù)據(jù)中的文件頭描述剝離出來,并且分析出“升級數(shù)據(jù)段個(gè)數(shù)”和各升級數(shù)據(jù)段的詳細(xì)信息。其中所述升級數(shù)據(jù)為按照步驟I合并后的升級文件的數(shù)據(jù)。步驟B.根據(jù)步驟A分析出的各升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址”,獲取到升級數(shù)據(jù)段的升級數(shù)據(jù);并根據(jù)升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段長度”和“數(shù)據(jù)段CRC校驗(yàn)值”對升級數(shù)據(jù)進(jìn)行正確性校驗(yàn);校驗(yàn)成功后根據(jù)“flash設(shè)備號(hào)”和“基于本flash設(shè)備的開始地址”字段信息將升級數(shù)據(jù)寫入到相應(yīng)的flash設(shè)備的對應(yīng)地址。本發(fā)明的方法在不修改升級流打包規(guī)范的前提下解決傳統(tǒng)OTA升級無法支持多flash設(shè)備和nandflash壞塊處理的問題,實(shí)現(xiàn)支持多flash設(shè)備,支持nandflash壞塊處理。以上上述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多Flash設(shè)備的機(jī)頂盒軟件升級方法,其具體包含以下步驟: 步驟1.將每個(gè)flash設(shè)備上的升級數(shù)據(jù)合并為一個(gè)升級文件,合并后的升級文件包含升級文件描述頭和N個(gè)文件數(shù)據(jù),其中升級文件的合并規(guī)則為:升級文件描述頭+文件I數(shù)據(jù)+文件2數(shù)據(jù)…+文件N數(shù)據(jù),所述1、2......N對應(yīng)N個(gè)flash設(shè)備; 步驟2.按照步驟I的方式對各個(gè)flash設(shè)備上的升級數(shù)據(jù)進(jìn)行填充; 步驟3.使用填充后升級文件進(jìn)行數(shù)據(jù)打包; 步驟4.機(jī)頂盒端升級數(shù)據(jù)處理; 所述升級文件描述頭包含以下字段:文件頭描述字符串標(biāo)志、文件頭長度、升級數(shù)據(jù)段個(gè)數(shù)、每個(gè)升級數(shù)據(jù)段的信息;文件頭長度從升級數(shù)據(jù)段個(gè)數(shù)開始,到文件頭結(jié)束; 所述每個(gè)升級數(shù)據(jù)段的信息包括:flash設(shè)備號(hào)、基于本flash設(shè)備的開始地址、數(shù)據(jù)段長度、數(shù)據(jù)段CRC校驗(yàn)值、數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址。
2.按權(quán)利要求1所述的多Flash設(shè)備的機(jī)頂盒軟件升級方法,其特征在于所述步驟2中:當(dāng)flash為norflash時(shí),將整個(gè)norfIash設(shè)備上的數(shù)據(jù)或需要升級的部分?jǐn)?shù)據(jù)讀出,然后按步驟I的方式,將數(shù)據(jù)填充到新的升級文件中。
3.按權(quán)利要求1所述的多Flash設(shè)備的機(jī)頂盒軟件升級方法,其特征在于所述步驟2中:當(dāng)flash為nandflash時(shí),nandflash設(shè)備數(shù)據(jù)的升級是基于分區(qū)的,nandflash的升級數(shù)據(jù)段從分區(qū)開頭開始 ,且安全升級數(shù)據(jù)的大小不超過原始設(shè)計(jì)的大小。
4.按權(quán)利要求1所述的多Flash設(shè)備的機(jī)頂盒軟件升級方法,其特征在于所述步驟4具體包括: 步驟A.機(jī)頂盒端從升級流中將升級數(shù)據(jù)接收完成后,機(jī)頂盒首先需要按照步驟I定義的格式,使用“文件頭標(biāo)志字符串”、“文件頭長度”字段將升級數(shù)據(jù)中的文件頭描述剝離出來,并且分析出“升級數(shù)據(jù)段個(gè)數(shù)”和各升級數(shù)據(jù)段的詳細(xì)信息;其中所述升級數(shù)據(jù)為按照步驟I合并后的升級文件的數(shù)據(jù); 步驟B.根據(jù)步驟A分析出的各升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段數(shù)據(jù)在升級文件內(nèi)的偏移地址”,獲取到升級數(shù)據(jù)段的升級數(shù)據(jù);并根據(jù)升級數(shù)據(jù)段詳細(xì)信息中的“數(shù)據(jù)段長度”和“數(shù)據(jù)段CRC校驗(yàn)值”對升級數(shù)據(jù)進(jìn)行正確性校驗(yàn);校驗(yàn)成功后根據(jù)“flash設(shè)備號(hào)”和“基于本flash設(shè)備的開始地址”字段信息將升級數(shù)據(jù)寫入到相應(yīng)的flash設(shè)備的對應(yīng)地址。
全文摘要
本發(fā)明涉及數(shù)字電視機(jī)頂盒領(lǐng)域,本發(fā)明公開了一種多Flash設(shè)備的機(jī)頂盒軟件升級方法,其具體包含以下步驟步驟1.將每個(gè)flash設(shè)備上的升級數(shù)據(jù)合并為一個(gè)升級文件;步驟2.按照步驟1的方式對各個(gè)flash設(shè)備上的升級數(shù)據(jù)進(jìn)行填充;步驟3.使用填充后升級文件進(jìn)行數(shù)據(jù)打包;步驟4.機(jī)頂盒端升級數(shù)據(jù)處理。本發(fā)明的方法在不修改升級流打包規(guī)范的前提下解決傳統(tǒng)OTA升級無法支持多flash設(shè)備和nandflash壞塊處理的問題,實(shí)現(xiàn)支持多flash設(shè)備,支持nandflash壞塊處理。
文檔編號(hào)G06F9/445GK103092634SQ201110335900
公開日2013年5月8日 申請日期2011年10月31日 優(yōu)先權(quán)日2011年10月31日
發(fā)明者熊建勇, 周志武, 楊艷輝 申請人:四川長虹電器股份有限公司