專(zhuān)利名稱(chēng):一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法
一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字化終端嵌入式軟件領(lǐng)域,具體是指一種基于數(shù)字電視機(jī)頂盒軟件 的代碼校驗(yàn)及版本存儲(chǔ)方法。
背景技術(shù):
隨著數(shù)字電視終端的發(fā)展,機(jī)頂盒新功能不斷增加以及增值業(yè)務(wù)的推廣,軟件升 級(jí)成為機(jī)頂盒不可或缺的一項(xiàng)技術(shù),而升級(jí)的安全就顯得尤為的重要。數(shù)字電視機(jī)頂盒軟件存儲(chǔ)時(shí)一般分成若干分區(qū)保存,如果出現(xiàn)意外情況,只要有 其中一個(gè)分區(qū)出現(xiàn)錯(cuò)誤,則機(jī)頂盒軟件就會(huì)崩潰而無(wú)法工作。則在軟件升級(jí)時(shí)保障和判斷 軟件的完整性的方法就具有其實(shí)際意義。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種可以保障安全升級(jí)的基于數(shù)字電視機(jī) 頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法。本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問(wèn)題一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,包括如下步驟步驟一編譯生成保存升級(jí)數(shù)據(jù)的app. bin文件;步驟二 KB manufacture, cfg 文^f牛以及 cpcb. cfg 文^f牛;其中 manufacturer, cfg 文件中指明了當(dāng)前升級(jí)的版本信息,cpcb. Cfg文件指明了當(dāng)前升級(jí)的指導(dǎo)信息以及升級(jí)的 數(shù)據(jù)塊配置信息;步驟三在creatcpcb這個(gè)工具的目錄下輸入相應(yīng)命令生成cpcb. bin文件;步驟四將app. bin文件與cpcb. cfg文件合并生成一個(gè)application, bin文件。所述步驟二中升級(jí)版本信息包括MANUFACTURE_IDENT 定義廠商編號(hào),機(jī)頂盒廠商,區(qū)別不同機(jī)頂盒生產(chǎn)銷(xiāo)售廠 商;HARDWARE_MODULE 定義硬件模塊,硬件模塊號(hào);HARDWARE_VERSION 定義硬件版本,為8字節(jié)字段;S0FTWARE_M0DULE 定義軟件模塊、軟件模塊號(hào);S0FTWARE_VERSI0N 定義軟件版本,為8字節(jié)字段。所述步驟二中cpcb. cfg文件中升級(jí)的指導(dǎo)信息DownloadHeader_Data包括TRAN_DIRECTION:定義傳輸數(shù)據(jù)方向,0為上傳,1為下載,其它值保留;PARTITI0N_C0UNT 定義升級(jí)數(shù)據(jù)塊的個(gè)數(shù);TRANS_TOTAL_SIZE 定義傳輸升級(jí)數(shù)據(jù)的總大?。籒0R_CRC_PARTIT10N_C0UNT 定義非CRC校驗(yàn)的數(shù)據(jù)塊的個(gè)數(shù);C0MPRESS_FLAG 定義數(shù)據(jù)是否壓縮的標(biāo)志;ENCRYPT_FLAG 定義數(shù)據(jù)是否加密的標(biāo)志;
ENCRYPT_KEY 定義數(shù)據(jù)加密的密鑰;所述步驟二中cpcb. cfg文件中數(shù)據(jù)塊配置信息Flash_Download_Configuration 主要定義所要升級(jí)的存儲(chǔ)器件對(duì)應(yīng)的內(nèi)部結(jié)構(gòu);每一數(shù)據(jù)塊配置信息定義3個(gè)參數(shù)Memory type 定義升級(jí)數(shù)據(jù)塊類(lèi)型,默認(rèn)為0,其它值保留;Block start 定義升級(jí)數(shù)據(jù)塊起始地址;Block size 定義升級(jí)數(shù)據(jù)塊大小,描述升級(jí)數(shù)據(jù)塊的數(shù)據(jù)長(zhǎng)度;表示從升級(jí)數(shù)據(jù) 塊起始地址開(kāi)始,存在若干大小的升級(jí)數(shù)據(jù)。本發(fā)明的優(yōu)點(diǎn)在于根據(jù)特定的數(shù)據(jù)組織管理,判斷機(jī)頂盒內(nèi)部軟件代碼部分是 否完整,若遭破壞loader能自動(dòng)啟動(dòng)升級(jí);下載時(shí)校驗(yàn)升級(jí)是否有效和為上載數(shù)據(jù)提供必 要的版本信息。本發(fā)明可以有效保障軟件升級(jí)安全。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。圖1是本發(fā)明流程示意圖。
具體實(shí)施方式請(qǐng)參閱圖1所示,一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,包 括如下步驟步驟Sl 編譯生成保存升級(jí)數(shù)據(jù)的app. bin文件;步驟 S2 Kg manufacture, cfg 以及 cpcb· cfgi^ ;^ψ manufacturer, cfg 文件中指明了當(dāng)前升級(jí)的版本信息,cpcb. Cfg文件指明了當(dāng)前升級(jí)的指導(dǎo)信息以及升級(jí)的 數(shù)據(jù)塊配置信息;步驟S3 在creatcpcb這個(gè)工具的目錄下輸入相應(yīng)命令生成cpcb. bin文件;步驟S4 將app. bin文件與cpcb. cfg文件合并生成一個(gè)application, bin文件。使用Creatcpcb這個(gè)工具主要是為了生成一個(gè)Ik大小的信息塊(CPCB)。這個(gè)信 息塊主要包括兩個(gè)部分當(dāng)前flash app的版本信息以及app中所有partition的crc校驗(yàn)值。flash app 的版本信息,包括 Manufacture_Ident, hardware module, hardware version, software module, software version等。在下載時(shí)我們通過(guò)讀取這部分信息來(lái) 判斷當(dāng)前升級(jí)是否有效。上載時(shí),則讀取這部分信息填入download header的相應(yīng)字段。在版本信息之后是partition的CRC校驗(yàn)信息。把除loader之外(all)的 partition *艮據(jù)性質(zhì)分成 non crc partition 禾口 crc partiton。其中 non crc partiton 包括除代碼以外的那部分?jǐn)?shù)據(jù)塊,既data key logo default。而crc partition則為app 塊。生成時(shí),non crc partition的4字節(jié)的crc均為Oxff0而crc partiton的crc貝Ij是 對(duì)相應(yīng)partition中數(shù)據(jù)的校驗(yàn)。每次開(kāi)機(jī)時(shí),校驗(yàn)crc partiton來(lái)判斷flash中的代碼部分是否完整,如果校驗(yàn) 失敗,說(shuō)明代碼部分遭到破壞,loader會(huì)自動(dòng)啟動(dòng)ota升級(jí)。使用creatcpcb這個(gè)工具需要兩個(gè)配置文件一個(gè)配置版本信息的 manufacturer, cfg l^XM,一yIvECfeMItf flash partition 的 cpcb. cfg。
其中manufacturer, cfg中指明了當(dāng)前升級(jí)的版本信息。而cpcb. cfg則指明了當(dāng) 前升級(jí)的指導(dǎo)信息以及升級(jí)的數(shù)據(jù)塊配置信息。通過(guò)cpcb. Cfg中的升級(jí)的數(shù)據(jù)塊配置信 息我們可以從app. bin這個(gè)文件中獲取相應(yīng)的升級(jí)數(shù)據(jù)。而根據(jù)cpcb. cfg中的升級(jí)指導(dǎo) 信息我們對(duì)升級(jí)數(shù)據(jù)進(jìn)行相應(yīng)的處理(e.g.壓縮,加密)。在manufacturer, cfg文件中配置當(dāng)前升級(jí)文件的升級(jí)版本信息,升級(jí)版本信息 包括MANUFACTURE_IDENT 定義廠商編號(hào),機(jī)頂盒廠商,區(qū)別不同機(jī)頂盒生產(chǎn)銷(xiāo)售廠 商;HARDWARE_MODULE 定義硬件模塊,硬件模塊號(hào);HARDWARE_VERSION 定義硬件版本,為8字節(jié)字段;S0FTWARE_M0DULE 定義軟件模塊、軟件模塊號(hào);S0FTWARE_VERSI0N 定義軟件版本,為8字節(jié)字段;在cpcb. cfg文件中配置當(dāng)前升級(jí)文件的升級(jí)指導(dǎo)信息和升級(jí)數(shù)據(jù)的數(shù)據(jù)塊配置 fn息ο升級(jí)的指導(dǎo)信息DownloadHeader_Data包括TRAN_DIRECTION:定義傳輸數(shù)據(jù)方向,0為上傳,1為下載,其它值保留;PARTITI0N_C0UNT 定義升級(jí)數(shù)據(jù)塊的個(gè)數(shù);TRANS_TOTAL_SIZE 定義傳輸升級(jí)數(shù)據(jù)的總大小;N0R_CRC_PARTIT10N_C0UNT 定義非CRC校驗(yàn)的數(shù)據(jù)塊的個(gè)數(shù);C0MPRESS_FLAG 定義數(shù)據(jù)是否壓縮的標(biāo)志;ENCRYPT_FLAG 定義數(shù)據(jù)是否加密的標(biāo)志;ENCRYPT_KEY:定義數(shù)據(jù)加密的密鑰。數(shù)據(jù)塊配置信息主要定義所要升級(jí)的存儲(chǔ)器件對(duì)應(yīng)的內(nèi)部結(jié)構(gòu);每一數(shù)據(jù)塊配置 信息定義3個(gè)參數(shù)Memory type 定義升級(jí)數(shù)據(jù)塊類(lèi)型,默認(rèn)為0,其它值保留;Block start 定義升級(jí)數(shù)據(jù)塊起始地址;Block size 定義升級(jí)數(shù)據(jù)塊大小,描述升級(jí)數(shù)據(jù)塊的數(shù)據(jù)長(zhǎng)度;表示從升級(jí)數(shù)據(jù) 塊起始地址開(kāi)始,存在若干大小的升級(jí)數(shù)據(jù)。因?yàn)閏pcb是對(duì)app進(jìn)行校驗(yàn),并且存放于app的最后lk。所以需要先生成一個(gè)合 適大小的app.bin。再由這個(gè)app. bin生成cpcb. bin,然后將兩者合并。在creatcpcb這 yIvXJIliItJ Ιξ| ^T"A :creatcpcb manufacturer, cfg cpcb. cfgapp. bin JJllJ^Itf |ξ[ 錄下即可生成cpcb. bin。文件的大小為1024。版本存儲(chǔ)及代碼校驗(yàn)數(shù)據(jù)組織結(jié)構(gòu)如下 本發(fā)明的有益效果在于1、能夠檢測(cè)flash的代碼部分是否完整,若遭破壞 loader能自動(dòng)啟動(dòng)升級(jí)。2、下載時(shí)校驗(yàn)升級(jí)是否有效和為上載數(shù)據(jù)提供必要的版本信息。
權(quán)利要求
一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,其特征在于包括如下步驟步驟一編譯生成保存升級(jí)數(shù)據(jù)的app.bin文件;步驟二配置manufacture.cfg文件以及cpcb.cfg文件;其中manufacturer.cfg文件中指明了當(dāng)前升級(jí)的版本信息,cpcb.cfg文件指明了當(dāng)前升級(jí)的指導(dǎo)信息以及升級(jí)的數(shù)據(jù)塊配置信息;步驟三在creatcpcb這個(gè)工具的目錄下輸入相應(yīng)命令生成cpcb.bin文件;步驟四將app.bin文件與cpcb.cfg文件合并生成一個(gè)application.bin文件。
2.如權(quán)利要求1所述的一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,其 特征在于所述步驟二中升級(jí)版本信息包括MANUFACTURE_IDENT 定義廠商編號(hào),機(jī)頂盒廠商,區(qū)別不同機(jī)頂盒生產(chǎn)銷(xiāo)售廠商;HARDWARE_MODULE 定義硬件模塊,硬件模塊號(hào);HARDWARE_VERSION 定義硬件版本,為8字節(jié)字段;S0FTWARE_M0DULE 定義軟件模塊、軟件模塊號(hào);S0FTWARE_VERSI0N 定義軟件版本,為8字節(jié)字段。
3.如權(quán)利要求1所述的一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,其 特征在于所述步驟二中cpcb. Cfg文件中升級(jí)的指導(dǎo)信息D0wnl0adHeader_Data包括TRAN_DIRECTION:定義傳輸數(shù)據(jù)方向,0為上傳,1為下載,其它值保留;PARTITI0N_C0UNT 定義升級(jí)數(shù)據(jù)塊的個(gè)數(shù);TRANS_TOTAL_SIZE 定義傳輸升級(jí)數(shù)據(jù)的總大小;N0R_CRC_PARTIT10N_C0UNT 定義非CRC校驗(yàn)的數(shù)據(jù)塊的個(gè)數(shù);C0MPRESS_FLAG 定義數(shù)據(jù)是否壓縮的標(biāo)志;ENCRYPT_FLAG 定義數(shù)據(jù)是否加密的標(biāo)志;ENCRYPT_KEY 定義數(shù)據(jù)加密的密鑰;所述步驟二中cpcb. cfg文件中數(shù)據(jù)塊配置信息Flash_Download_Configuration主要 定義所要升級(jí)的存儲(chǔ)器件對(duì)應(yīng)的內(nèi)部結(jié)構(gòu);每一數(shù)據(jù)塊配置信息定義3個(gè)參數(shù) Memory type 定義升級(jí)數(shù)據(jù)塊類(lèi)型,默認(rèn)為0,其它值保留; Block start 定義升級(jí)數(shù)據(jù)塊起始地址;Block size 定義升級(jí)數(shù)據(jù)塊大小,描述升級(jí)數(shù)據(jù)塊的數(shù)據(jù)長(zhǎng)度;表示從升級(jí)數(shù)據(jù)塊起 始地址開(kāi)始,存在若干大小的升級(jí)數(shù)據(jù)。
全文摘要
一種基于數(shù)字電視機(jī)頂盒軟件的代碼校驗(yàn)及版本存儲(chǔ)方法,包括如下步驟編譯生成保存升級(jí)數(shù)據(jù)的app.bin文件;配置manufacture.cfg文件以及cpcb.cfg文件;其中manufacturer.cfg文件中指明了當(dāng)前升級(jí)的版本信息,cpcb.cfg文件指明了當(dāng)前升級(jí)的指導(dǎo)信息以及升級(jí)的數(shù)據(jù)塊配置信息;在creatcpcb這個(gè)工具的目錄下輸入相應(yīng)命令生成cpcb.bin文件;將app.bin文件與cpcb.cfg文件合并生成一個(gè)application.bin文件。本發(fā)明根據(jù)特定的數(shù)據(jù)組織管理,判斷機(jī)頂盒內(nèi)部軟件代碼部分是否完整,若遭破壞loader能自動(dòng)啟動(dòng)升級(jí);下載時(shí)校驗(yàn)升級(jí)是否有效和為上載數(shù)據(jù)提供必要的版本信息。本發(fā)明可以有效保障軟件升級(jí)安全。
文檔編號(hào)G06F9/445GK101923478SQ201010250128
公開(kāi)日2010年12月22日 申請(qǐng)日期2010年8月11日 優(yōu)先權(quán)日2010年8月11日
發(fā)明者郭鑫俊 申請(qǐng)人:福建新大陸通信科技股份有限公司