專利名稱:一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法
一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式軟件領(lǐng)域,具體是指一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法。
背景技術(shù):
機(jī)頂盒中的非易失性存儲(chǔ)器上一般保存有以下模塊=Ioader啟動(dòng)引導(dǎo)部分,app 程序部分,往往還存在字庫,bmp圖片數(shù)據(jù),開機(jī)logo,節(jié)目庫數(shù)據(jù),廣告數(shù)據(jù)等信息塊需要 存儲(chǔ)。不同的模塊執(zhí)行相應(yīng)的功能,有的是程序代碼需要運(yùn)行;有的是保存的數(shù)據(jù),在程序 運(yùn)行時(shí)被使用到。但不論是哪種情況,這些模塊形式上都體現(xiàn)為二進(jìn)制數(shù)據(jù)形成一個(gè)數(shù)據(jù) 塊分區(qū)(PARTITION),存儲(chǔ)在非易失性存儲(chǔ)器上。而每個(gè)分區(qū)被使用到時(shí)一定要知道其存儲(chǔ) 的位置,進(jìn)而讀取該數(shù)據(jù)才能夠使用。實(shí)際在設(shè)計(jì)不同版本軟件時(shí),可能由于配置、生產(chǎn)、客戶需求等等原因,使得相同 功能的數(shù)據(jù)塊分區(qū),不一定存在相同的位置。一般是是根據(jù)不同的需求,給每個(gè)軟件定義其 相應(yīng)的各個(gè)數(shù)據(jù)塊的地址。其缺點(diǎn)是軟件只能使用定義好地址位置上的數(shù)據(jù)塊,如果出現(xiàn) 不同版本間部分升級(jí)的情況,可能造成軟件去定義好的位置獲取數(shù)據(jù)出錯(cuò),而存儲(chǔ)器中確 實(shí)卻存在該軟件需要的數(shù)據(jù)而無法使用,導(dǎo)致訪問使用難以兼容的問題。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題在于提供一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方 法,該方法只需要通過查找一張存儲(chǔ)表,就可實(shí)現(xiàn)需要的數(shù)據(jù)類型地址的定位及使用,從而 提高不同軟件版本的兼容性。本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問題一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法,包括如下步驟步驟100 在存儲(chǔ)空間中定義一個(gè)固定存儲(chǔ)單元存放查找表結(jié)構(gòu),通過查找表結(jié) 構(gòu)獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小信息;所述查找表結(jié)構(gòu)包括分區(qū)數(shù)、多個(gè)存儲(chǔ)表、校驗(yàn) 數(shù)值所述存儲(chǔ)表的結(jié)構(gòu)包括分區(qū)類型、分區(qū)開始地址、分區(qū)大??;步驟200 將查找表結(jié)構(gòu)寫入程序;步驟300 機(jī)頂盒程序運(yùn)行時(shí),查找表的使用包括如下步驟步驟301 定位預(yù)先定義的查找表首地址,讀取分區(qū)數(shù)目;步驟302 判斷所讀取的分區(qū)數(shù)目是否符合定義?是,則轉(zhuǎn)入步驟303 ;否,則轉(zhuǎn)入 步驟308 ;步驟303 根據(jù)所讀取的分區(qū)數(shù)目,分配相應(yīng)數(shù)目的查找表項(xiàng)的內(nèi)存單元;步驟304 將多個(gè)查找表項(xiàng)導(dǎo)入分配的內(nèi)存中;步驟305 計(jì)算所有表項(xiàng)的CRC值;步鄧306 計(jì)算出的CRC值與整張表的校驗(yàn)值比較,如果校驗(yàn)成功,則轉(zhuǎn)入步驟 307 ;否則,轉(zhuǎn)入步驟308 ;
步驟307 將表項(xiàng)中相應(yīng)類型的地址取出使用;步驟308 賦予給定的默認(rèn)地址;步驟309:釋放內(nèi)存;步驟310:結(jié)束。所述步驟200中將查找表結(jié)構(gòu)寫入程序包括定義一個(gè)配置文件addr. cfg,指定 要寫入查找表的二進(jìn)制BIN文件及查找表定位的地址,通過程序順序讀入配置,將配置信 息中的數(shù)據(jù)塊分區(qū)的類型、地址、大小信息寫入二進(jìn)制BIN文件的相對(duì)位置。本發(fā)明的優(yōu)點(diǎn)在于使得通過索引查找表的方式獲取數(shù)據(jù)塊分區(qū)的類型、地址、大 小等信息。軟件不用預(yù)先定義各個(gè)數(shù)據(jù)塊分區(qū)的地址,只需要通過查找一張存儲(chǔ)表,就可以 實(shí)現(xiàn)需要的數(shù)據(jù)類型地址的定位及使用,從而提高不同軟件版本的兼容性。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。圖1是本發(fā)明中查找表結(jié)構(gòu)示意圖。圖2是本發(fā)明中機(jī)頂盒程序運(yùn)行時(shí)使用查找表的方法流程示意圖。
具體實(shí)施方式一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法,首先在存儲(chǔ)空間中定義一個(gè)固定存 儲(chǔ)單元存放查找表結(jié)構(gòu),通過查找表結(jié)構(gòu)獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小信息。查找表結(jié)構(gòu)如圖1所示,查找表結(jié)構(gòu)包括分區(qū)數(shù)(四字節(jié))、多個(gè)存儲(chǔ)表(其數(shù)目 由分區(qū)數(shù)目定義)、校驗(yàn)數(shù)值(四字節(jié))所述存儲(chǔ)表的結(jié)構(gòu)包括分區(qū)類型(一字節(jié))、分區(qū) 開始地址(四字節(jié))、分區(qū)大小(三字節(jié))。查找表中一個(gè)存儲(chǔ)表表項(xiàng)中分區(qū)類型可以定義為(該定義類型只是一個(gè)例子, 實(shí)際定義可以達(dá)式flash存儲(chǔ)的分布自行定義)typedef enum TPFLASH_PartitionType_e{TPFLASH_TARTITI0N_BL0ADE = 0,TPFLASH_TARTITI0N_APP,TPFLASH_TARTITI0N_BMP,TPFLASH_TARTITI0N_F0NT,TPFLASH_TARTIT10N_L0G0,TPFLASH_TARTIT10N_CHV0L,TPFLASH_TARTIT10N_DATA,TPFLASH_TARTIT10N_CA,TPFLASH_TARTIT10N_ST0CK,TPFLASH_TARTIT10N_GEMSTAR,TPFLASH_TARTITI0N_ADV}TPFLASH_PartitionType_t ;在存儲(chǔ)表結(jié)構(gòu)中,實(shí)際校驗(yàn)采用32Bit的CRC校驗(yàn)方法。
將查找結(jié)構(gòu)表寫入程序的方法是定義一個(gè)配置文件addr. cfg。指定要寫入查找 表的二進(jìn)制BIN文件及查找表定位的地址。通過程序順序讀入配置,將配置信息中的數(shù)據(jù) 塊分區(qū)的類型、地址、大小等信息寫入二進(jìn)制BIN文件的相對(duì)位置。配置文件的格式定義為例如定義LOADER分區(qū)格式如下## BL0ADER ##PARTITION_TYTE = 11PARTITION_START = 400A00004PARTITION_SIZE = 0800003例如定義APP分區(qū)格式如下## APP ##PARTITION_TYTE = 31PARTITION_START = 401208004PARTITION_SIZE = 4FF8003在機(jī)頂盒程序運(yùn)行時(shí),查找表的使用方法是(詳細(xì)流程請(qǐng)參閱圖2)定位預(yù)先定義的查找表首地址,讀取4個(gè)字節(jié)分區(qū)數(shù)目;如果發(fā)現(xiàn)4字節(jié)信息的 BlockNum不符合定義(例如超過限定上限值),則將相對(duì)應(yīng)類型的賦予給定的默認(rèn)地址。完 成該類型的定位;根據(jù)取得的分區(qū)數(shù)目,分配相應(yīng)數(shù)目的查找表項(xiàng)的內(nèi)存單元。將若干查找表項(xiàng)導(dǎo)入分配的內(nèi)存中;計(jì)算所有表項(xiàng)的CRC值;計(jì)算出的CRC值與整張表的校驗(yàn)值比較,如果校驗(yàn)成功則將表項(xiàng)中相應(yīng)類型的地 址取出使用,否則依然賦予給定的默認(rèn)地址;釋放內(nèi)存;結(jié)束。本發(fā)明使得通過索引查找表的方式獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小等信息。軟 件不用預(yù)先定義各個(gè)數(shù)據(jù)塊分區(qū)的地址,只需要通過查找一張存儲(chǔ)表,就可以實(shí)現(xiàn)需要的 數(shù)據(jù)類型地址的定位及使用,從而提高不同軟件版本的兼容性。
權(quán)利要求
一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法,其特征在于包括如下步驟步驟100在存儲(chǔ)空間中定義一個(gè)固定存儲(chǔ)單元存放查找表結(jié)構(gòu),通過查找表結(jié)構(gòu)獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小信息;所述查找表結(jié)構(gòu)包括分區(qū)數(shù)、多個(gè)存儲(chǔ)表、校驗(yàn)數(shù)值所述存儲(chǔ)表的結(jié)構(gòu)包括分區(qū)類型、分區(qū)開始地址、分區(qū)大?。徊襟E200將查找表結(jié)構(gòu)寫入程序;步驟300機(jī)頂盒程序運(yùn)行時(shí),查找表的使用包括如下步驟步驟301定位預(yù)先定義的查找表首地址,讀取分區(qū)數(shù)目;步驟302判斷所讀取的分區(qū)數(shù)目是否符合定義?是,則轉(zhuǎn)入步驟303;否,則轉(zhuǎn)入步驟308;步驟303根據(jù)所讀取的分區(qū)數(shù)目,分配相應(yīng)數(shù)目的查找表項(xiàng)的內(nèi)存單元;步驟304將多個(gè)查找表項(xiàng)導(dǎo)入分配的內(nèi)存中;步驟305計(jì)算所有表項(xiàng)的CRC值;步鄧306計(jì)算出的CRC值與整張表的校驗(yàn)值比較,如果校驗(yàn)成功,則轉(zhuǎn)入步驟307;否則,轉(zhuǎn)入步驟308;步驟307將表項(xiàng)中相應(yīng)類型的地址取出使用;步驟308賦予給定的默認(rèn)地址;步驟309釋放內(nèi)存;步驟310結(jié)束。
2.如權(quán)利要求1所述的一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法,其特征在于所 述步驟200中將查找表結(jié)構(gòu)寫入程序包括定義一個(gè)配置文件addr. cfg,指定要寫入查找 表的二進(jìn)制BIN文件及查找表定位的地址,通過程序順序讀入配置,將配置信息中的數(shù)據(jù) 塊分區(qū)的類型、地址、大小信息寫入二進(jìn)制BIN文件的相對(duì)位置。
全文摘要
一種數(shù)字電視機(jī)頂盒的數(shù)據(jù)塊分區(qū)定位方法,在存儲(chǔ)空間中定義一個(gè)固定地址的存儲(chǔ)單元存放查找表結(jié)構(gòu),機(jī)頂盒應(yīng)用程序通過查找表結(jié)構(gòu)獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小信息;將查找表結(jié)構(gòu)寫入程序;使得通過索引查找表的方式獲取數(shù)據(jù)塊分區(qū)的類型、地址、大小等信息。軟件不用預(yù)先定義各個(gè)數(shù)據(jù)塊分區(qū)的地址,只需要通過查找一張存儲(chǔ)表,就可以實(shí)現(xiàn)需要的數(shù)據(jù)類型地址的定位及使用,從而提高不同軟件版本的兼容性。
文檔編號(hào)G06F9/44GK101902556SQ20101024235
公開日2010年12月1日 申請(qǐng)日期2010年8月3日 優(yōu)先權(quán)日2010年8月3日
發(fā)明者郭鑫俊 申請(qǐng)人:福建新大陸通信科技股份有限公司