專利名稱:使用與非閃存存儲嵌入式代碼的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲嵌入式代碼的方法,尤其是指一種使用與非閃存存儲嵌入式代碼的方法。
背景技術(shù):
在現(xiàn)有技術(shù)中,常用的非易失閃存一般可以分為兩大類,一類是或非閃存(NorFlash),另一類是與非閃存(Nand Flash)。其中的Nor Flash是并行結(jié)構(gòu),可隨機(jī)存取,支持嵌入式代碼的本地運(yùn)行,穩(wěn)定性很好,并具有較快的數(shù)據(jù)讀出速度,所以通常用于系統(tǒng)中的嵌入式代碼的存儲與數(shù)據(jù)存儲,或者用于不間斷運(yùn)行的應(yīng)用,例如,蜂窩電話等。;NandFlash是一種串行結(jié)構(gòu),采用順序存儲方式,比Nor Flash具有更高的存儲密度,一般用于大存儲量的應(yīng)用,例如,PDA、數(shù)字相機(jī)、數(shù)碼攝像機(jī)、IC卡、汽車導(dǎo)航系統(tǒng)、電子圖書、MP3播放機(jī)、固態(tài)磁盤驅(qū)動器、2.5G / 3G蜂窩電話、視頻流處理和互聯(lián)網(wǎng)數(shù)據(jù)下載等。隨著技術(shù)的飛速發(fā)展,系統(tǒng)級芯片(SOC)的規(guī)模也越來越大,嵌入式處理器的功能也越來越強(qiáng),其所需的嵌入式代碼量也隨之急劇增加,因此所需要的Nor Flash的存儲容量也相應(yīng)加大。但是,由于Nor Flash在制造過程中較難實(shí)現(xiàn)較高的存儲密度,因此Nor Flash的存儲容量一般都比較小,大容量NorFlash的制造成本比較高,因此造成了整個(gè)系統(tǒng)的總成本比較高。與Nor Flash相比,Nand Flash在制造過程中容易實(shí)現(xiàn)很高的存儲密度,因此具有更大的存儲容量,其存儲容量通常為Nor Flash的幾十倍或幾百倍,而且其制造成本也相對低廉,一般被用于大容量的數(shù)據(jù)存儲。但是,由于NandFlash不支持嵌入式代碼的本地執(zhí)行,數(shù)據(jù)讀出速度比較慢(但具有較快的數(shù)據(jù)寫入速度),且Nand Flash的穩(wěn)定性不夠好,容易出現(xiàn)壞塊,導(dǎo)致所存儲的內(nèi)容丟失。而如果在系統(tǒng)中發(fā)生代碼丟失的情況,將使得整個(gè)系統(tǒng)的穩(wěn)定性變得很差,因此現(xiàn)有技術(shù)中使用Nand Flash來存儲嵌入式代碼的方法都存在著穩(wěn)定性差的缺點(diǎn)。綜上可知,由于現(xiàn)有技術(shù)中的存儲嵌入式代碼的方法具有如上所述的缺點(diǎn),因此如何提出一種更好的存儲嵌入式代碼的方法,以可靠地存儲嵌入式代碼,是本領(lǐng)域中亟需解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明提供了一種使用與非閃存存儲嵌入式代碼的方法,從而可以可靠地使用與非閃存來存儲嵌入式代碼。本發(fā)明的技術(shù)方案包括:一種使用與非閃存存儲嵌入式代碼的方法,該方法包括:A、從與非閃存中讀取嵌入式代碼;B、判斷錯(cuò)誤檢查和糾正校驗(yàn)是否正確,如果正確,返回執(zhí)行步驟A ;否則,執(zhí)行步驟C ;
C、對代碼進(jìn)行ECC糾錯(cuò),判斷糾錯(cuò)是否成功,如果成功,返回執(zhí)行步驟A ;否則,讀取下一個(gè)備份代碼,返回執(zhí)行步驟B。其中,所述步驟A之前還包括:將代碼備份到與非閃存不同的塊中。其中,所述步驟C中返回執(zhí)行步驟A之前還進(jìn)一步包括:對錯(cuò)誤備份代碼進(jìn)行糾錯(cuò)更新。其中,所述步驟C中讀取下一個(gè)備份代碼之前還進(jìn)一步包括:判斷當(dāng)前代碼是否為最后一個(gè)備份代碼,如果是,則報(bào)錯(cuò),結(jié)束流程;否則,繼續(xù)執(zhí)行步驟C。綜上可知,本發(fā)明提供了一種使用與非閃存存儲嵌入式代碼的方法,可以使用與非閃存來存儲嵌入式代碼,從而提高嵌入式代碼存儲的穩(wěn)定性。
圖1為本發(fā)明實(shí)施例中使用Nand Flash存儲嵌入式代碼的方法的流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)得更加清楚明白,下面結(jié)合附圖及具體實(shí)施例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。本發(fā)明的實(shí)施例提供了一種使用與非閃存存儲嵌入式代碼的方法。圖1所示為本發(fā)明實(shí)施例中使用與非閃存存儲嵌入式代碼的方法的流程圖,如圖1所示,本發(fā)明的實(shí)施例中使用與非閃存存儲嵌入式代碼的方法包括如下所述的步驟:步驟101,處理器啟動后從Nand Flash中讀取所存儲的嵌入式代碼。在本步驟中,當(dāng)處理器啟動后,如果該處理器需要更新緩存中的嵌入式代碼時(shí),它將從Nand Flash中讀取所需的嵌入式代碼。步驟102,判斷錯(cuò)誤檢查和糾正(ECC,Error Checking and Correcting)校驗(yàn)是否正確,如果正確,則返回執(zhí)行步驟101 ;如果不正確,則執(zhí)行步驟103。在本步驟中,需要對上述被讀取的嵌入式代碼進(jìn)行ECC校驗(yàn),并判斷ECC校驗(yàn)是否正確。所述的ECC是一種指令糾錯(cuò)技術(shù),該技術(shù)不僅能檢測出嵌入式代碼中的多位數(shù)據(jù)錯(cuò)誤,同時(shí)還可以指定出錯(cuò)的數(shù)位并改正。步驟103,對嵌入式代碼進(jìn)行ECC糾錯(cuò)。步驟104,判斷糾錯(cuò)是否成功,如果成功,則執(zhí)行步驟105 ;如果不成功,則執(zhí)行步驟 106。步驟105,對錯(cuò)誤備份進(jìn)行糾錯(cuò)更新,并返回執(zhí)行步驟101。所述的對錯(cuò)誤備份進(jìn)行糾錯(cuò)更新,就是將上述糾錯(cuò)后的嵌入式代碼覆蓋Nand Flash中該段嵌入式代碼所對應(yīng)的備份代碼。步驟106,判斷當(dāng)前嵌入式代碼是否為最后一個(gè)備份代碼,如果是,則執(zhí)行步驟107 ;否則,執(zhí)行步驟108。步驟107,報(bào)錯(cuò),并結(jié)束流程。由于上述嵌入式代碼的所有備份代碼都出錯(cuò),則此時(shí)將結(jié)束整個(gè)流程,并對錯(cuò)誤出現(xiàn)的原因進(jìn)行檢查。步驟108,讀取下一個(gè)備份代碼,并返回執(zhí)行步驟102。即從Nand Flash中讀取上述發(fā)生錯(cuò)誤的嵌入式代碼相對應(yīng)的下一個(gè)備份代碼,重新返回執(zhí)行步驟102,對該備份代碼進(jìn)行ECC校驗(yàn)。在進(jìn)行上述步驟101 108之前,需要預(yù)先在Nand Flash中的不同的塊中對同一段嵌入式代碼進(jìn)行備份,備份代碼的數(shù)目可根據(jù)具體情況而定,可以是兩個(gè)備份代碼,也可以是多個(gè)備份代碼,且每個(gè)備份代碼都有ECC碼。當(dāng)處理器讀取Nand Flash中的某段嵌入式代碼時(shí),需要先對該段嵌入式代碼進(jìn)行ECC校驗(yàn)。如果校驗(yàn)結(jié)果正確,則將該段嵌入式代碼存儲到處理器的緩存中,等待被讀入處理器;如果校驗(yàn)結(jié)果錯(cuò)誤,則表示該段嵌入式代碼出現(xiàn)了某些錯(cuò)誤,此時(shí),可對出現(xiàn)上述錯(cuò)誤的嵌入式代碼進(jìn)行ECC糾錯(cuò)。如果糾錯(cuò)成功,則將糾錯(cuò)后的嵌入式代碼存儲到處理器的緩存中,等待被讀入處理器,并將上述糾錯(cuò)后的嵌入式代碼覆蓋Nand Flash中該段嵌入式代碼所對應(yīng)的備份代碼;如果出現(xiàn)不可糾錯(cuò)的ECC錯(cuò)誤,Nand Flash將讀取該段嵌入式代碼的其他備份代碼,并重復(fù)上述的步驟,直到最終將正確的嵌入式代碼存儲到處理器的緩存中,同時(shí)用正確的嵌入式代碼覆蓋Nand Flash中相應(yīng)的備份代碼。在Nand Flash中,雖然某個(gè)塊中出現(xiàn)隨機(jī)錯(cuò)誤的概率比較高,但卻很少出現(xiàn)塊與塊之間的關(guān)聯(lián)錯(cuò)誤,因此如果將所需存儲的每一段嵌入式代碼在NandFlash中不同的塊中存儲若干個(gè)備份代碼,則當(dāng)某個(gè)塊中的某段嵌入式代碼出現(xiàn)錯(cuò)誤時(shí),可通過讀取其他塊中相應(yīng)的備份代碼得到正確的嵌入式代碼,從而極大地提高了系統(tǒng)的穩(wěn)定性。綜上所述,本發(fā)明的實(shí)施例提供了一種使用與非閃存存儲嵌入式代碼的方法,因此可以使用與非閃存來存儲嵌入式代碼,從而提高嵌入式代碼存儲的穩(wěn)定性。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種使用與非閃存存儲嵌入式代碼的方法,其特征在于,該方法包括: A、從與非閃存中讀取嵌入式代碼;B、判斷錯(cuò)誤檢查和糾正校驗(yàn)是否正確,如果正確,返回執(zhí)行步驟A;否則,執(zhí)行步驟C ; C、對代碼進(jìn)行ECC糾錯(cuò),判斷糾錯(cuò)是否成功,如果成功,返回執(zhí)行步驟A;否則,讀取下一個(gè)備份代碼,返回執(zhí)行步驟B。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A之前還包括:將代碼備份到與非閃存不同的塊中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C中返回執(zhí)行步驟A之前還進(jìn)一步包括:對錯(cuò)誤備份代碼進(jìn)行糾錯(cuò)更新。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C中讀取下一個(gè)備份代碼之前還進(jìn)一步包括: 判斷當(dāng)前代碼是否為最后一個(gè)備份代碼,如果是,則報(bào)錯(cuò),結(jié)束流程;否則,繼續(xù)執(zhí)行步驟C。
全文摘要
本發(fā)明公開了一種使用與非閃存存儲嵌入式代碼的方法,包括以下步驟A、從與非閃存中讀取代碼;B、判斷錯(cuò)誤檢查和糾正是否正確,如果正確,返回執(zhí)行步驟A;否則,執(zhí)行步驟C;C、對代碼進(jìn)行ECC糾錯(cuò),判斷糾錯(cuò)是否成功,如果成功,返回執(zhí)行步驟A;否則,讀取下一個(gè)備份代碼,返回執(zhí)行步驟B。使用本發(fā)明所提供的方法,可以使用與非閃存來存儲嵌入式代碼,從而提高嵌入式代碼存儲的穩(wěn)定性。
文檔編號G06F11/07GK103092713SQ20121044220
公開日2013年5月8日 申請日期2012年11月7日 優(yōu)先權(quán)日2012年11月7日
發(fā)明者吳躍, 張進(jìn), 王穎, 賀知明 申請人:無錫成電科大科技發(fā)展有限公司