專利名稱:一種閃存燒錄方法、燒錄設(shè)備及燒錄系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及閃存,尤其涉及一種閃存燒錄方法、燒錄設(shè)備及燒錄系統(tǒng)。
背景技術(shù):
目前,閃存的燒錄方法有兩種一為母片拷貝方式,即將用戶原始flash上的內(nèi)容拷貝到板載flash后,再將板載flash上相應(yīng)的內(nèi)容寫入空的flash ;二為文件方式,即將指定文件置于移動硬盤或者編程器內(nèi)置硬盤,再讀出該文件的內(nèi)容并按照指定的方式寫入 flash。采用文件方式燒錄時(shí),需要兩個文件實(shí)際要燒錄的數(shù)據(jù)文件,參見圖1,為數(shù)據(jù)文件的格式;描述數(shù)據(jù)在flash中位置的描述信息文件,參見圖2,為描述信息文件的格式。 采用文件方式燒錄時(shí),需要分別下載該描述信息文件和數(shù)據(jù)文件,但如果由于操作失誤時(shí), 數(shù)據(jù)文件和描述信息文件不匹配,從而導(dǎo)致燒錄到flash的內(nèi)容錯誤;并且燒錄時(shí),是順序讀取數(shù)據(jù)文件的內(nèi)容,當(dāng)數(shù)據(jù)在flash中不連續(xù)時(shí),則會有填充數(shù)據(jù),從而導(dǎo)致數(shù)據(jù)文件龐大。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種閃存燒錄方法、燒錄設(shè)備及燒錄系統(tǒng),可避免信息文件與數(shù)據(jù)文件之間的匹配問題,且燒錄方便、安全。為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種閃存燒錄方法,包括
將下載的信息文件和至少一個數(shù)據(jù)文件所述信息文件和所述數(shù)據(jù)文件合成為一個包
括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件,所述數(shù)據(jù)區(qū)包括各個所述數(shù)據(jù)文件中的有效數(shù)據(jù),所述信息區(qū)包括所述信息文件中對應(yīng)于所述有效數(shù)據(jù)的描述信息;
讀取所述燒錄文件的信息區(qū),得到各個有效數(shù)據(jù)的描述信息;所述描述信息包括所述有效數(shù)據(jù)在閃存中的起始地址和大?。?br>
根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù);
當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)該有效數(shù)據(jù)的描述信息將所讀取到的有效數(shù)據(jù)燒錄到所述閃存中。其中,所述讀取所述燒錄文件的信息區(qū),得到各個有效數(shù)據(jù)的描述信息的步驟之前,還包括
檢測所述閃存,得到所述閃存的特征信息;
根據(jù)所述特征信息擦除整個閃存。其中,所述根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù)的步驟,具體包括
每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除所述閃存中對應(yīng)于該有效數(shù)據(jù)的區(qū)域;
根據(jù)有效數(shù)據(jù)的描述信息,讀取所述數(shù)據(jù)區(qū)中的有效數(shù)據(jù)。
其中,所述當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)所讀取的有效數(shù)據(jù)的描述信息將所讀取到的有效數(shù)據(jù)燒錄到所述閃存中的步驟,具體包括每當(dāng)讀取到一個有效數(shù)據(jù)時(shí),檢測將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為壞塊,若不是, 則將該有效數(shù)據(jù)寫入到當(dāng)前塊中;若當(dāng)前塊為壞塊,則跳過所述當(dāng)前塊,將讀取的所述有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。
其中,所述信息區(qū)的大小為預(yù)先定義的,或者所述信息區(qū)內(nèi)包括信息區(qū)結(jié)束標(biāo)識。
一種燒錄設(shè)備,包括描述信息讀取模塊,用于讀取將信息文件和至少一個數(shù)據(jù)文件合成為一個包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件的信息區(qū),得到各個數(shù)據(jù)文件中有效數(shù)據(jù)的描述信息;所述數(shù)據(jù)區(qū)包括各個數(shù)據(jù)文件中的有效數(shù)據(jù),所述信息區(qū)包括所述信息文件中的對應(yīng)于所述有效數(shù)據(jù)的描述信息,所述描述信息包括所述有效數(shù)據(jù)的大小以及其在閃存中的起始地址;有效數(shù)據(jù)讀取模塊,用于根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù);燒錄模塊,用于在每讀取到一個有效數(shù)據(jù)時(shí),根據(jù)該有效數(shù)據(jù)的描述信息將所讀取到的所述有效數(shù)據(jù)燒錄到閃存中。
其中,所述燒錄設(shè)備還包括特征信息獲取模塊,用于檢測所述閃存,得到所述閃存的特征信息; 閃存擦除模塊,用于根據(jù)所述特征信息擦除整個閃存。
其中,所述燒錄設(shè)備還包括;區(qū)域擦除模塊,用于在所述有效數(shù)據(jù)讀取模塊每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除所述閃存中對應(yīng)于所述有效數(shù)據(jù)的區(qū)域;所述燒錄模塊用于在每讀取到一個有效數(shù)據(jù)時(shí),根據(jù)該有效數(shù)據(jù)的描述信息,將讀取到的該有效數(shù)據(jù)寫入所述區(qū)域擦除模塊所擦除的對應(yīng)于該有效數(shù)據(jù)的區(qū)域中。
其中,所述燒錄設(shè)備還包括檢測模塊,用于在每讀取到一個有效數(shù)據(jù)時(shí),檢測所述閃存中將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為壞塊;所述燒錄模塊用于在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊不為壞塊時(shí),將讀取到的該有效數(shù)據(jù)寫入所述當(dāng)前塊中;或者在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊為壞塊時(shí),跳過所述當(dāng)前塊,將讀取的該有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。
一種燒錄系統(tǒng),包括合成模塊,用于將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件;以及如上述的燒錄設(shè)備。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果本發(fā)明實(shí)施例的閃存燒錄方法,通過將信息文件和數(shù)據(jù)文件合成為包括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件,其中數(shù)據(jù)區(qū)包括多個有效數(shù)據(jù),信息區(qū)包括各個有效數(shù)據(jù)的描述信息,即通過將數(shù)據(jù)文件和信息文件合成為即包括了有效數(shù)據(jù),又包括了有效數(shù)據(jù)的描述信息的燒錄文件,避免了將有效數(shù)據(jù)和有效數(shù)據(jù)的描述信息分別放置在兩個文件中時(shí),由于誤操作而導(dǎo)致描述信息文件與有效數(shù)據(jù)文件不匹配的問題,同時(shí)由于該燒錄文件中不包括填充數(shù)據(jù),該燒錄文件小巧,從而燒錄時(shí)跳過了填充數(shù)據(jù),燒錄時(shí)更加方便、安全; 并且即便閃存中存在壞塊,也只需要下載一次該燒錄文件,從而根據(jù)該燒錄文件來進(jìn)行燒錄,提聞了效率,且不易出錯。本發(fā)明實(shí)施例的閃存燒錄方法由于燒錄文件中預(yù)先定義了大小的信息區(qū),從而讀取數(shù)據(jù)時(shí),可直接到該燒錄文件的固定位置開始讀取數(shù)據(jù),進(jìn)而使得該方法更加簡單。本發(fā)明實(shí)施例的閃存燒錄方法,通過根據(jù)設(shè)置在信息區(qū)內(nèi)的結(jié)束標(biāo)識來識別數(shù)據(jù)區(qū)的開始位置,從而讀取數(shù)據(jù),由于該信息區(qū)的大小可變,進(jìn)而具有較強(qiáng)的靈活性。本發(fā)明實(shí)施例的閃存燒錄方法,通過下載既包括有效數(shù)據(jù),又包括了有效數(shù)據(jù)的描述信息的燒錄文件,當(dāng)燒錄有效數(shù)據(jù)時(shí),即便遇到壞塊,也可直接從已下載的該燒錄文件中讀取有效數(shù)據(jù)和有效數(shù)據(jù)的描述信息,避免需要將各個有效數(shù)據(jù)分開寫入,即將包括多個有效數(shù)據(jù)的數(shù)據(jù)文件,切割成多份,放到多個文件,而導(dǎo)致燒錄數(shù)據(jù)時(shí),需要下載、擦除、 寫入多次的情況,從而提高燒錄效率,并且不容易出錯。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是現(xiàn)有的數(shù)據(jù)文件的格式示意圖2是現(xiàn)有的描述信息文件的格式示意圖3是本發(fā)明的閃存燒錄方法的一實(shí)施例的流程圖4是本發(fā)明的閃存燒錄方法的一實(shí)施例中的燒錄文件的格式示意圖5是本發(fā)明的閃存燒錄方法的又一實(shí)施例的流程圖6是本發(fā)明的閃存燒錄方法的再一實(shí)施例的流程圖7是本發(fā)明的燒錄設(shè)備的一實(shí)施例的功能模塊圖8是本發(fā)明的燒錄設(shè)備的又一實(shí)施例的功能模塊圖9是本發(fā)明的燒錄系統(tǒng)的一實(shí)施例的功能模塊圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例通過將信息文件和數(shù)據(jù)文件合成為包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件,并根據(jù)該信息區(qū)內(nèi)的有效數(shù)據(jù)的描述信息來讀取數(shù)據(jù)區(qū)的有效數(shù)據(jù),并將讀取的有效數(shù)據(jù)燒錄到閃存中,由于該燒錄文件中既包括了有效數(shù)據(jù)又包括有效數(shù)據(jù)的描述信息,避免了數(shù)據(jù)文件與描述文件之間的不匹配的問題,同時(shí)由于該燒錄文件中不包括填充數(shù)據(jù), 該燒錄文件小巧,從而燒錄時(shí)跳過了填充數(shù)據(jù),燒錄時(shí)更加方便、安全,并且提高了燒錄效率。
參見圖3,為本發(fā)明實(shí)施例的閃存燒錄方法的一實(shí)施例的流程圖。本實(shí)施例的閃存燒錄方法,具體實(shí)施過程如下Sll,將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件,該數(shù)據(jù)區(qū)包括各個數(shù)據(jù)文件中的有效數(shù)據(jù),信息區(qū)包括該信息文件中對應(yīng)于有效數(shù)據(jù)的描述信息。具體實(shí)施時(shí),首先下載終端中生成的信息文件和多個數(shù)據(jù)文件;然后再將所下載的信息文件和多個數(shù)據(jù)文件合成為一個包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件,即將信息文件中的有效數(shù)據(jù)的描述信息復(fù)制到該燒錄文件的信息區(qū),并將各個有效數(shù)據(jù)文件中的有效數(shù)據(jù)復(fù)制到該燒錄文件的數(shù)據(jù)區(qū),從而合成了一個既包括有效數(shù)據(jù)又包括有效數(shù)據(jù)描述信息的燒錄文件,然后燒錄設(shè)備加電初始化,使其進(jìn)入準(zhǔn)備狀態(tài),并下載該合成后包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件。在一具體實(shí)施例中,可通過直接將該信息文件中的所有有效數(shù)據(jù)的描述信息復(fù)制到信息區(qū),然后再根據(jù)各個有效數(shù)據(jù)的描述信息將各個數(shù)據(jù)文件中的有效數(shù)據(jù)復(fù)制到數(shù)據(jù)區(qū)。由于該描述信息包括了各個數(shù)據(jù)文件在閃存中的起始地址,大小,以及對應(yīng)的數(shù)據(jù)文件名,即可按照該信息文件中各個有效數(shù)據(jù)的描述信息的排列順序復(fù)制各個數(shù)據(jù)文件中的有效數(shù)據(jù),從而完成信息文件和數(shù)據(jù)文件的合成;或者先將第一個有效數(shù)據(jù)對應(yīng)的描述信息復(fù)制到信息區(qū),再將對應(yīng)的第一個數(shù)據(jù)文件中的有效數(shù)據(jù)復(fù)制到數(shù)據(jù)區(qū); 然后再復(fù)制下一個有效數(shù)據(jù)的描述信息到信息區(qū),再將對應(yīng)的該下一個數(shù)據(jù)文件中的有效數(shù)據(jù)復(fù)制到數(shù)據(jù)區(qū)。當(dāng)然也可以采用其他方式將信息文件中的描述信息復(fù)制到該信息區(qū), 將各個有效數(shù)據(jù)復(fù)制到該數(shù)據(jù)區(qū),參見圖4,為本實(shí)施例中合成的燒錄文件的格式。在一具體實(shí)施例中,需要燒錄一個機(jī)頂盒軟件到128M大小的nand flash中,該軟件內(nèi)容包括 uboot、loader、kernel、application、userdata 等,且這些數(shù)據(jù),需要燒錄到 flash 中的特定位置,但這些數(shù)據(jù)未占滿整個flash,本實(shí)施例中生成的燒錄文件如下所示 00000000 00000400 00000100 00008000 0000A000 00002800 0000D000 0000A000 00000002 00002000uboot 數(shù)據(jù) Q56K) loader 數(shù)據(jù)(8M) kernel 數(shù)據(jù)(2· 5M) application 數(shù)據(jù)(IOM) userdata 數(shù)據(jù)(2M)。
后續(xù)將繼續(xù)沿用本實(shí)施例中的有效數(shù)據(jù)及其描述信息。
本實(shí)施例中,在合成燒錄文件之前,可預(yù)先定義該燒錄文件的信息區(qū)的大小,從而當(dāng)讀取有效數(shù)據(jù)時(shí),可直接從該燒錄文件中固定位置開始讀取有效數(shù)據(jù)即可。當(dāng)然該信息區(qū)的大小也可不是預(yù)先定義的,而是在該信息區(qū)內(nèi)設(shè)置一個信息區(qū)結(jié)束標(biāo)識,從而便于根據(jù)該結(jié)束標(biāo)識來區(qū)分信息區(qū)和數(shù)據(jù)區(qū),該結(jié)束標(biāo)識可為設(shè)置在信息區(qū)結(jié)束位置的某特定值,例如“0”,也可為設(shè)置在該信息區(qū)開頭的表示數(shù)據(jù)區(qū)包括的有效數(shù)據(jù)的個數(shù)的一個數(shù)值。
S12,讀取燒錄文件的信息區(qū),得到各個有效數(shù)據(jù)的描述信息,該描述信息包括有效數(shù)據(jù)的大小以及其在閃存中的起始地址。在一具體實(shí)施例中,由于合成的燒錄文件的信息區(qū)的描述信息采用了高低字節(jié)反轉(zhuǎn)的方式,則讀取該燒錄文件的信息區(qū)得到的該5個有效數(shù)據(jù)uboot、loader、kernel、application、userdata的描述信息分別為起始地址0x0, 大小0x40000 ;起始地址0x100000,大小0x800000 ;起始地址OxAOOOOO,大小0x280000 ;起始地址 OxDOOOOO,大小 OxAOOOOO ;起始地址 0x2000000,大小 0x200000。S13,根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取燒錄文件的數(shù)據(jù)區(qū)內(nèi)的各個有效數(shù)據(jù)。具體實(shí)施時(shí),在執(zhí)行該步驟S13之前,還需要檢測閃存,得到該閃存包括多少個塊,以及每個塊的大小等特征信息,并根據(jù)該特征信息擦除整個閃存,以便于后續(xù)燒錄。在一具體實(shí)施例中,首先由燒錄設(shè)備檢測flash芯片,讀取flash芯片特征信息,并根據(jù)該特征信息擦除整個flash。根據(jù)第一個有效數(shù)據(jù)uboot的大小;0x40000,從數(shù)據(jù)區(qū)開始位置順序讀取256k 數(shù)據(jù);
根據(jù)第二個有效數(shù)據(jù)loader的大小0X800000,從數(shù)據(jù)區(qū)中第一個有效數(shù)據(jù)結(jié)束的位置開始順序讀取8M數(shù)據(jù);
根據(jù)第三個有效數(shù)據(jù)kernel的大小=0x280000,從數(shù)據(jù)區(qū)中上一個有效數(shù)據(jù)結(jié)束的位置開始順序讀取2. 5M數(shù)據(jù);
根據(jù)第四個有效數(shù)據(jù)application的大小大小OxAOOOOO,從數(shù)據(jù)區(qū)上一個有效數(shù)據(jù)結(jié)束位置開始順序讀取10M數(shù)據(jù);
根據(jù)第五個有效數(shù)據(jù)userdata的大小0x200000,從數(shù)據(jù)區(qū)上一個有效數(shù)據(jù)接結(jié)束位置開始順序讀取2M數(shù)據(jù)。S14,當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)該有效數(shù)據(jù)的描述信息,將所讀取到的該有效數(shù)據(jù)燒錄到閃存中。在一具體實(shí)施例中,根據(jù)步驟S12中讀取到的該有效數(shù)據(jù)的大小和在flash中的起始地址等描述信息,將讀取的該有效數(shù)據(jù)寫入到flash中
當(dāng)讀取到第一個有效數(shù)據(jù)uboot時(shí),根據(jù)該第一個有效數(shù)據(jù)uboot的大小及其在flash 中的起始地址0x0,立即將該第一個有效數(shù)據(jù)uboot寫入flash的0x0處;
當(dāng)讀取到第二有效數(shù)據(jù)loader時(shí),根據(jù)該第二個有效數(shù)據(jù)loader的大小及其在flash 中的起始地址0xl00000,立即將該第二個有效數(shù)據(jù)loader寫入flash的0x100000處; 當(dāng)讀取到第三個有效數(shù)據(jù)kernel時(shí),根據(jù)該第三個有效數(shù)據(jù)kernel的大小及其在 flash中的起始地址0xA00000,立即將該第三個有效數(shù)據(jù)kernel寫入flash的OxAOOOOO 處;
當(dāng)讀取到第四個有效數(shù)據(jù)application時(shí),根據(jù)該第四個有效數(shù)據(jù)application的大小及其在flash中的起始地址0xD00000,立即將該第四個有效數(shù)據(jù)applicationl寫入 flash 的 OxDOOOOO 處;
當(dāng)讀取到第五個有效數(shù)據(jù)userdata時(shí),根據(jù)該第五個有效數(shù)據(jù)userdata的大小及其在flash中的起始地址0x2000000,立即將該第五個有效數(shù)據(jù)userdata寫入flash的 0x2000000 處。本實(shí)施例通過將信息文件和至少一個數(shù)據(jù)文件合成為一個既包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件,其中該數(shù)據(jù)區(qū)包括數(shù)據(jù)文件中的有效數(shù)據(jù),信息區(qū)包括信息文件中對應(yīng)各個有效數(shù)據(jù)的描述信息,再讀取該燒錄文件的信息區(qū),得到有效數(shù)據(jù)的描述信息,并根據(jù)有效數(shù)據(jù)的描述信息,讀取該燒錄文件的數(shù)據(jù)區(qū)的有效數(shù)據(jù),將讀取到的有效數(shù)據(jù)燒錄到閃
8存中,即通過將有效數(shù)據(jù)的描述信息和有效數(shù)據(jù)本身合成到一個燒錄文件,使得該燒錄文件即包括了有效數(shù)據(jù),又包括了有效數(shù)據(jù)的描述信息,從而避免將有效數(shù)據(jù)和有效數(shù)據(jù)的描述信息分別放置在兩個文件中時(shí),由于誤操作而導(dǎo)致描述信息文件與有效數(shù)據(jù)文件不匹配的問題,同時(shí)由于該燒錄文件中不包括填充數(shù)據(jù),該燒錄文件小巧,進(jìn)而燒錄時(shí)跳過了填充數(shù)據(jù),燒錄時(shí)更加方便、安全;并且即便閃存中存在壞塊,也只需要下載一次該燒錄文件, 從而根據(jù)該燒錄文件來進(jìn)行燒錄,提高了效率,且不易出錯。
同時(shí),本實(shí)施例的閃存燒錄方法還適用于對閃存內(nèi)的數(shù)據(jù)進(jìn)行更新,首先將生成的需要更新的數(shù)據(jù)文件,以及對應(yīng)的信息文件合成為一個燒錄文件,即該燒錄文件的信息區(qū)包括需要更新的有效數(shù)據(jù)的描述信息,數(shù)據(jù)區(qū)包括了需要更新的有效數(shù)據(jù),再讀取該燒錄文件的信息區(qū),得到需要更新的各個有效數(shù)據(jù)的描述信息,根據(jù)各個有效數(shù)據(jù)的描述信息擦除閃存中對應(yīng)的區(qū)域或者塊,當(dāng)每擦除一個區(qū)域或者塊后,則根據(jù)描述信息,讀取對應(yīng)一個有效數(shù)據(jù),并將其寫入所擦除的區(qū)域或者塊中,避免了將需要更新的有效數(shù)據(jù)及其描述信息分別放置在多個文件中時(shí),由于誤操作而導(dǎo)致描述信息文件與包括更新數(shù)據(jù)的數(shù)據(jù)文件不匹配的問題,并且即便閃存中存在壞塊,也只需要下載一次該燒錄文件,從而根據(jù)該燒錄文件來進(jìn)行燒錄,提高了數(shù)據(jù)的更新效率,并且不易出錯。
然而,由于閃存的特性,在擦除或?qū)懭脒^程中,容易出現(xiàn)壞塊。當(dāng)出現(xiàn)壞塊時(shí),燒錄時(shí)會把數(shù)據(jù)順延,即寫到下一個好塊,從而導(dǎo)致本來應(yīng)該燒在某個位置的數(shù)據(jù),燒在了其后的某個位置。例如,當(dāng)flash的loader部分出現(xiàn)壞塊時(shí),會導(dǎo)致kernel、application, userdata部分的數(shù)據(jù),都燒在了后面與起始地址不對應(yīng)的位置,從而導(dǎo)致uboot加載 kernel時(shí)出錯。而為避免上述問題,目前,當(dāng)寫入文件到存在壞塊的flash時(shí),通常將各個有效數(shù)據(jù)分開寫入,即將包括多個有效數(shù)據(jù)的數(shù)據(jù)文件,切割成5份,放到5個文件,從而導(dǎo)致燒錄數(shù)據(jù)時(shí),需要下載、擦除、寫入,各5次,進(jìn)而使得燒錄的效率不高,并且容易出錯。然而,采用本發(fā)明實(shí)施例的閃存燒錄方法則能夠避免這種問題,從而提高燒錄的效率,并且不容易出錯。參見圖5,為本發(fā)明的閃存燒錄方法的又一實(shí)施例的流程圖。本實(shí)施例中包括上述實(shí)施例中的步驟Sll至S14,不同的是本實(shí)施例中,執(zhí)行該步驟S13之前還包括步驟S15,每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除閃存中對應(yīng)該有效數(shù)據(jù)的一個區(qū)域。即是說本實(shí)施例中當(dāng)每擦除一個區(qū)域,然后再讀取一個有效數(shù)據(jù),并將讀取的有效數(shù)據(jù)寫入所擦除的區(qū)域中。在一具體實(shí)施例中,若flash中已經(jīng)有可以運(yùn)行的uboot,并且能通過tftp下載文件,具體燒錄實(shí)施過程如下uboot擦除flash從OxO開始的256K大小區(qū)域;uboot跳到燒錄文件的數(shù)據(jù)區(qū),順序讀取256K數(shù)據(jù),即第一個有效數(shù)據(jù)uboot ;并將該第一個有效數(shù)據(jù)uboot寫入所擦除的區(qū)域中;uboot擦除flash從0x100000開始的8M大小區(qū)域;uboot跳到燒錄文件的數(shù)據(jù)區(qū),順序讀取8M數(shù)據(jù),即第二個有效數(shù)據(jù)loader ;并將該第二個有效數(shù)據(jù)uboot寫入所擦除的區(qū)域中;uboot擦除flash從OxAOOOOO開始的2. 5M大小區(qū)域;uboot跳到燒錄文件的數(shù)據(jù)區(qū), 順序讀取2. 5M數(shù)據(jù),即第三個有效數(shù)據(jù)kernel ;并將該第三個有效數(shù)據(jù)uboot寫入所擦除的區(qū)域中;uboot擦除flash從OxDOOOOO開始的IOM大小區(qū)域;uboot跳到燒錄文件的數(shù)據(jù)區(qū),順序讀取IOM數(shù)據(jù)有效數(shù)據(jù),即第四個application;并將該第四個有效數(shù)據(jù)uboot寫入所擦除的區(qū)域中;
uboot擦除flash從0x2000000開始的2M大小區(qū)域,uboot跳到燒錄文件的數(shù)據(jù)區(qū),順序讀取2M數(shù)據(jù),即第五個有效數(shù)據(jù)userdata ;并將該第五個有效數(shù)據(jù)uboot寫入所擦除的區(qū)域中。參見圖6,為本發(fā)明的閃存燒錄方法的再一實(shí)施例的流程圖。本實(shí)施例中包括上述實(shí)施例中的步驟Sll至S14,不同的是本實(shí)施例中,執(zhí)行該步驟S14之前還包括步驟S16, 每當(dāng)讀取到一個有效數(shù)據(jù)時(shí),檢測將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為壞塊。若檢測結(jié)果為不是,則將該有效數(shù)據(jù)燒錄到當(dāng)前塊中,即執(zhí)行步驟S14 ;若檢測結(jié)果為是,則執(zhí)行步驟 S17。具體實(shí)施時(shí),檢測當(dāng)前塊是否為壞塊的方式包括一、閃存中的壞塊有壞塊標(biāo)識,當(dāng)寫入有效數(shù)據(jù)之前,檢測該塊是否有壞塊標(biāo)識,若有,則檢測下一個塊是否有壞塊標(biāo)識,若無, 則將該有效數(shù)據(jù)寫入該塊中,若有,則繼續(xù)檢測再下一個塊,直至找到一個好塊為止;二、 將數(shù)據(jù)寫入該塊中,再將寫入的數(shù)據(jù)讀出來,比較讀取的數(shù)據(jù)與寫入的數(shù)據(jù)是否相同,若相同,則該塊不為壞塊,否則該塊為壞塊,若為壞塊,則采用相同的方式檢測下一個塊,直至找到好塊為止。S17,跳過當(dāng)前塊,將讀取的該有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。實(shí)施本發(fā)明實(shí)施例的閃存燒錄方法,通過將信息文件和數(shù)據(jù)文件合成為包括有效數(shù)據(jù),又包括有效數(shù)據(jù)的描述信息的燒錄文件,并從中獲取有效數(shù)據(jù),及其對應(yīng)的描述信息,再根據(jù)該描述信息將有效數(shù)據(jù)寫入閃存中,并且當(dāng)遇到壞塊時(shí),也不需要將各個有效數(shù)據(jù)分割為多個文件,即只需要下載一次燒錄文件,便可從該燒錄文件中獲取到各個有效數(shù)據(jù)的描述信息和有效數(shù)據(jù)本身,并根據(jù)該描述信息將有效數(shù)據(jù)寫入閃存中,從而提高了燒錄的效率,也不容易出錯。基于上述的閃存燒錄方法,本發(fā)明實(shí)施例還提供了一種燒錄設(shè)備。下面將結(jié)合說明書附圖對本發(fā)明實(shí)施例的燒錄設(shè)備進(jìn)行詳細(xì)的說明。參見圖7,為本發(fā)明的燒錄設(shè)備的一實(shí)施例的功能模塊圖。具體實(shí)施時(shí),本發(fā)明實(shí)施例的燒錄設(shè)備包括
描述信息讀取模塊11,用于讀取將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件的信息區(qū),得到各個數(shù)據(jù)文件中有效數(shù)據(jù)的描述信息;該數(shù)據(jù)區(qū)包括各個數(shù)據(jù)文件中的有效數(shù)據(jù),該信息區(qū)包括該信息文件中對應(yīng)于各個有效數(shù)據(jù)的描述信息;具體實(shí)施時(shí),該信息區(qū)的大小可以是預(yù)先定義的,當(dāng)然也可以在該信息區(qū)內(nèi)設(shè)置結(jié)束標(biāo)識;
有效數(shù)據(jù)讀取模塊12,用于根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù);具體實(shí)施時(shí),若該信息區(qū)的大小預(yù)先定義的,則有效數(shù)據(jù)讀取模塊12直接從該燒錄文件固定位置開始順序讀取數(shù)據(jù)區(qū)內(nèi)的有效數(shù)據(jù);或者若在該信息區(qū)內(nèi)設(shè)置了信息區(qū)結(jié)束標(biāo)識,則該有效數(shù)據(jù)讀取模塊12直接根據(jù)該信息區(qū)結(jié)束標(biāo)識從數(shù)據(jù)區(qū)讀取有效數(shù)據(jù); 燒錄模塊13,用于在每讀取到一個有效數(shù)據(jù)時(shí),根據(jù)該有效數(shù)據(jù)的描述信息,將該有效數(shù)據(jù)燒錄到閃存中。實(shí)施本實(shí)施例的燒錄設(shè)備,通過讀取包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件的信息區(qū)來獲取有效數(shù)據(jù)的描述信息,再根據(jù)描述信息讀取有效數(shù)據(jù),即通過讀取包括了有效數(shù)據(jù),又包括了對應(yīng)于有效數(shù)據(jù)的描述信息的燒錄文件來進(jìn)行數(shù)據(jù)的燒錄,從而避免了將有效數(shù)據(jù)和有效數(shù)據(jù)的描述信息分別放置在多個文件(多個數(shù)據(jù)文件和一個描述信息文件)中時(shí),由于誤操作而導(dǎo)致描述信息文件與有效數(shù)據(jù)文件不匹配的問題,同時(shí)由于該燒錄文件中不包括填充數(shù)據(jù),該燒錄文件小巧,進(jìn)而燒錄時(shí)跳過了填充數(shù)據(jù),燒錄時(shí)更加方便、安全;并且即便閃存中存在壞塊,也只需要下載一次該燒錄文件,進(jìn)而根據(jù)該燒錄文件來進(jìn)行燒錄,提高了效率,且不易出錯。
參見圖8,為本發(fā)明的燒錄設(shè)備的又一實(shí)施例的功能模塊圖。具體實(shí)施時(shí),本實(shí)施例的燒錄設(shè)備也包括上述的描述信息讀取模塊11、有效數(shù)據(jù)讀取模塊12和燒錄模塊13,相同的模塊采用相同的名稱和附圖標(biāo)記,不同的是本發(fā)明實(shí)施例的燒錄設(shè)備還包括檢測模塊14,用于在每讀取到一個有效數(shù)據(jù)時(shí),檢測閃存中將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為塊;本實(shí)施例的燒錄模塊14用于在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊不為壞塊時(shí),將讀取到的該有效數(shù)據(jù)寫入該當(dāng)前塊中;或者在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊為壞塊時(shí),跳過當(dāng)前塊,將讀取的該有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。
本實(shí)施例中的后續(xù)的不為壞塊的塊是指當(dāng)檢測模塊檢測到當(dāng)前塊為壞塊時(shí),則繼續(xù)檢測下一個的塊是否為壞塊,若是則再繼續(xù)檢測再下一個塊是否為壞塊,直至檢測到一個不為壞塊的塊,則該不為壞塊的塊即為當(dāng)前塊的后續(xù)塊,且不為壞塊。
本實(shí)施例的燒錄設(shè)備還可包括特征信息獲取模塊,用于檢測閃存,得到該閃存的特征信息,例如該閃存包括多少個塊,每個塊的大小等;閃存擦除模塊,用于根據(jù)得到特征信息擦除整個閃存。
本實(shí)施例中的燒錄設(shè)備通過讀取既包括有效數(shù)據(jù)描述信息,又包括有效數(shù)據(jù)的燒錄文件,并且當(dāng)描述信息讀取模塊讀取到該燒錄文件的信息區(qū)中對應(yīng)各個有效數(shù)據(jù)的描述信息之前,該閃存擦除模塊將閃存整個擦除,再讀取描述信息,并由有效數(shù)據(jù)讀取模塊根據(jù)讀取的描述信息讀取數(shù)據(jù)區(qū)中對應(yīng)的有效數(shù)據(jù),最后由燒錄模塊將該有效數(shù)據(jù)寫入到該閃存中,從而遇到壞塊時(shí),不需要多次下載數(shù)據(jù)文件,提高了燒錄效率,也不容易出錯。
在另一具體實(shí)施例中,本發(fā)明實(shí)施例的燒錄設(shè)備也包括上述的描述信息讀取模塊 11、有效數(shù)據(jù)讀取模塊12和燒錄模塊13,相同的模塊采用相同的名稱和附圖標(biāo)記,不同的是本實(shí)施例的燒錄設(shè)備還包括區(qū)域擦除模塊,用于在每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除閃存中對應(yīng)該有效數(shù)據(jù)的區(qū)域。
本實(shí)施例中的燒錄設(shè)備通過讀取既包括有效數(shù)據(jù)描述信息,又包括有效數(shù)據(jù)的燒錄文件,并且當(dāng)描述信息讀取模塊讀取到各個有效數(shù)據(jù)的描述信息,該區(qū)域擦除模塊根據(jù)各個有效數(shù)據(jù)的描述信息,每擦除對應(yīng)一個有效數(shù)據(jù)的一個區(qū)域時(shí),再由有效數(shù)據(jù)讀取模塊讀取數(shù)據(jù)區(qū)中對應(yīng)的該有效數(shù)據(jù),并由燒錄模塊將該有效數(shù)據(jù)寫入到該區(qū)域中,從而遇到壞塊時(shí),不需要多次下載數(shù)據(jù)文件,提高了燒錄效率,也不容易出錯。
參見圖9,本發(fā)明實(shí)施例還提供了一種燒錄系統(tǒng),包括合成模塊21,用于將下載的信息文件和至少一個數(shù)據(jù)文件合成為包括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件,其中該數(shù)據(jù)區(qū)包括各個數(shù)據(jù)文件中的有效數(shù)據(jù),信息區(qū)包括對應(yīng)于有效數(shù)據(jù)的描述信息;具體實(shí)施時(shí),該合成模塊21可在終端(例如電腦)中先下載或者導(dǎo)入一個信息文件和對應(yīng)的多個數(shù)據(jù)文件,并將該信息文件中的有效數(shù)據(jù)的描述信息復(fù)制到燒錄文件中的信息區(qū),將各個數(shù)據(jù)文件中的有效數(shù)據(jù)復(fù)制到該燒錄文件中的數(shù)據(jù)區(qū),從而合成為一個既包括有效數(shù)據(jù),又包括描述信息的燒錄文件,從而使得燒錄設(shè)備只需要讀取這一個燒錄文件即可執(zhí)行數(shù)據(jù)的燒錄;在一具體實(shí)施例中,該合成模塊21可通過一個軟件來實(shí)現(xiàn);
該燒錄系統(tǒng)還包括上述實(shí)施例中的燒錄設(shè)備I ;具體實(shí)施時(shí),該燒錄設(shè)備I可直接讀取合成的燒錄文件中的信息區(qū)的描述信息,和數(shù)據(jù)區(qū)的有效數(shù)據(jù),并根據(jù)讀取的描述信息將各個有效數(shù)據(jù)寫入到閃存中。以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
1權(quán)利要求
1.一種閃存燒錄方法,其特征在于,包括將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件,所述數(shù)據(jù)區(qū)包括各個所述數(shù)據(jù)文件中的有效數(shù)據(jù),所述信息區(qū)包括所述信息文件中的對應(yīng)于所述有效數(shù)據(jù)的描述信息;讀取所述燒錄文件的信息區(qū),得到各個有效數(shù)據(jù)的描述信息;所述描述信息包括所述有效數(shù)據(jù)在閃存中的起始地址和大??;根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù);當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)該有效數(shù)據(jù)的描述信息將所讀取到的有效數(shù)據(jù)燒錄到所述閃存中。
2.如權(quán)利要求I所述的閃存燒錄方法,其特征在于,所述讀取所述燒錄文件的信息區(qū), 得到各個有效數(shù)據(jù)的描述信息的步驟之前,還包括檢測所述閃存,得到所述閃存的特征信息;根據(jù)所述特征信息擦除整個閃存。
3.如權(quán)利要求I所述的閃存燒錄方法,其特征在于,所述根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù)的步驟,具體包括每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除所述閃存中對應(yīng)于該有效數(shù)據(jù)的區(qū)域;根據(jù)有效數(shù)據(jù)的描述信息,讀取所述數(shù)據(jù)區(qū)中的有效數(shù)據(jù)。
4.如權(quán)利要求2或3所述的閃存燒錄方法,其特征在于,所述當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)所讀取的有效數(shù)據(jù)的描述信息將所讀取到的有效數(shù)據(jù)燒錄到所述閃存中的步驟,具體包括當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),檢測將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為壞塊,若不是, 則將該有效數(shù)據(jù)寫入到當(dāng)前塊中;若當(dāng)前塊為壞塊,則跳過所述當(dāng)前塊,將讀取的所述有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。
5.如權(quán)利要求4所述的閃存燒錄方法,其特征在于,所述信息區(qū)的大小為預(yù)先定義的或者所述信息區(qū)包括信息區(qū)結(jié)束標(biāo)識。
6.一種燒錄設(shè)備,其特征在于,包括描述信息讀取模塊,用于讀取將信息文件和至少一個數(shù)據(jù)文件合成為包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件的信息區(qū),得到各個數(shù)據(jù)文件中有效數(shù)據(jù)的描述信息;所述數(shù)據(jù)區(qū)包括各個數(shù)據(jù)文件中的有效數(shù)據(jù),所述信息區(qū)包括信息文件中的對應(yīng)于所述有效數(shù)據(jù)的描述信息;所述描述信息包括所述有效數(shù)據(jù)的大小以及其在閃存中的起始地址;有效數(shù)據(jù)讀取模塊,用于根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取所述數(shù)據(jù)區(qū)中的各個有效數(shù)據(jù);燒錄模塊,用于在每讀取到一個有效數(shù)據(jù)時(shí),根據(jù)該有效數(shù)據(jù)的描述信息將所讀取到的所述有效數(shù)據(jù)燒錄到閃存中。
7.如權(quán)利要求6所述的燒錄設(shè)備,其特征在于,所述燒錄設(shè)備還包括特征信息獲取模塊,用于檢測所述閃存,得到所述閃存的特征信息;閃存擦除模塊,用于根據(jù)所述特征信息擦除整個閃存。
8.如權(quán)利要求6所述的燒錄設(shè)備,其特征在于,所述燒錄設(shè)備還包括;區(qū)域擦除模塊,用于在所述有效數(shù)據(jù)讀取模塊每讀取一個有效數(shù)據(jù)之前,根據(jù)該有效數(shù)據(jù)的描述信息,擦除所述閃存中對應(yīng)于所述有效數(shù)據(jù)的區(qū)域;所述燒錄模塊用于在每讀取到一個有效數(shù)據(jù)時(shí),根據(jù)該有效數(shù)據(jù)的描述信息,將讀取到的該有效數(shù)據(jù)寫入所述區(qū)域擦除模塊所擦除的對應(yīng)于該有效數(shù)據(jù)的區(qū)域中。
9.如權(quán)利要求6至8中任意一項(xiàng)所述的燒錄設(shè)備,其特征在于,還包括檢測模塊,用于在每讀取到一個有效數(shù)據(jù)時(shí),檢測所述閃存中將要寫入該有效數(shù)據(jù)的當(dāng)前塊是否為壞塊;所述燒錄模塊用于在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊不為壞塊時(shí),將讀取到的該有效數(shù)據(jù)寫入所述當(dāng)前塊中;或者在每讀取到一個有效數(shù)據(jù),并且檢測到將要寫入該有效數(shù)據(jù)的當(dāng)前塊為壞塊時(shí),跳過所述當(dāng)前塊,將讀取的該有效數(shù)據(jù)寫入到后續(xù)的不為壞塊的塊中。
10.一種燒錄系統(tǒng),其特征在于,包括合成模塊,用于將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括數(shù)據(jù)區(qū)和信息區(qū)的燒錄文件;如權(quán)利要求6至9中任意一項(xiàng)所述的燒錄設(shè)備。
全文摘要
本發(fā)明公開了一種閃存燒錄方法,包括將下載的信息文件和至少一個數(shù)據(jù)文件合成為一個包括信息區(qū)和數(shù)據(jù)區(qū)的燒錄文件,該數(shù)據(jù)區(qū)包括數(shù)據(jù)文件中的有效數(shù)據(jù),信息區(qū)包括信息文件中對應(yīng)有效數(shù)據(jù)的描述信息;讀取燒錄文件的信息區(qū)得到各個有效數(shù)據(jù)的描述信息;根據(jù)各個有效數(shù)據(jù)的描述信息,依次讀取各個有效數(shù)據(jù);當(dāng)每讀取到一個有效數(shù)據(jù)時(shí),則根據(jù)有效數(shù)據(jù)的描述信息將該有效數(shù)據(jù)燒錄到閃存中,從而避免因誤操作而導(dǎo)致描述信息文件與有效數(shù)據(jù)文件不匹配的問題,且該燒錄文件中不包括填充數(shù)據(jù),從而燒錄時(shí)跳過填充數(shù)據(jù),燒錄時(shí)更加方便、安全;并且只需要下載一次燒錄文件,從而根據(jù)該燒錄文件進(jìn)行燒錄,提高了效率。本發(fā)明還提供了燒錄設(shè)備和燒錄系統(tǒng)。
文檔編號G11C16/10GK102543193SQ20111045778
公開日2012年7月4日 申請日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者廖青山 申請人:深圳創(chuàng)維數(shù)字技術(shù)股份有限公司