專利名稱:一種終端產品版本存儲的方法與系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及通訊技術產品領域,尤其涉及產品版本的存儲。
背景技術:
目前各種嵌入式設備、通信設備其軟件版本通常保存在非易失性閃存存儲器 Flash中, 一般都是采用或非閃存Norflash或者與非閃存Nandf lash來作為其存儲介質。 但,Norflash和Nandf lash技術上各有優(yōu)勢 在讀寫性能上,Norflash的讀速度比Nandf lash快,而Nandf lash的寫入/擦除 速度則比Norflash快; 在容量成本上,Nandf lash的單元尺寸幾乎是Norflash的一半,即Nandf lash比 Norflash具有更高的容量與更低的成本; 在接口上,Norflash的尋址更加簡單,可以實現在芯片內執(zhí)行; 在可靠性方面,Norflash沒有壞塊處理問題,而Nandf lash的壞塊是隨機分布的,
需要對其進行處理; 在軟件支持上,Norflash器件不需要任何的軟件支持,而Nandf lash器件則通常 需要驅動程序。 隨著消費者對于終端產品的功能要求越來越高,需求越來越多,終端產品的版本 在不斷地增大,這樣勢必需要擴大版本存儲介質的存儲容量,從而提高產品的成本。而 Nandf lash無疑是降低成本的最佳對象,但其必須要處理的壞塊成為一大瓶頸,且并非所有 的CPU都具有Nandf lash控制器。
發(fā)明內容
本發(fā)明的目的在于提出一種終端產品版本存儲的方法和系統(tǒng)。
本發(fā)明采用了如下的技術方案
—種終端產品版本存儲的方法,包括 步驟A、設置產品版本為Boot程序和版本程序,所述Boot程序用于引導版本程 序; 步驟B、選擇產品CPU支持啟動的非易失性存儲介質,利用燒寫器將所述Boot程序 燒寫到該存儲介質; 步驟C、燒寫所述版本程序到與非閃存器Nandf lash中。 在一種實施例中,本方法還包括對產品版本的升級處理過程將所述Boot程序的 升級程序燒寫到所述存儲介質和/或將所述版本程序的升級程序燒寫到Nandf lash。
上述方法還包括 步驟D、產品CPU上電時,從燒寫到所述存儲介質的Boot程序啟動,由該Boot程序 去引導所述Nandf lash中的版本程序。
所述步驟D具體包括
步驟Dl、啟動后,由Boot程序搜索Nandflash上的版本程序;
步驟D2、由Boot程序引導Nandflash上的版本程序。 —種實施例中,所述步驟C在燒寫所述版本程序到Nandflash時是逐塊進行并繞過壞塊的。 —種實施例中,所述步驟C還包括利用錯誤更正算法ECC對燒寫到Nandflash的版本程序進行ECC校驗,存放校驗結果到Nandf lash。 —種實施例中,所述步驟D1還包括利用所述ECC校驗算法對搜索到的版本程序進行ECC校驗,將其校驗結果與Nandflash存有的校驗結果進行比較,通過判斷是否發(fā)生了位反轉現象來檢查所述ECC校驗是否通過
如果ECC校驗通過,則繼續(xù)步驟D2 ; 如果ECC校驗不通過,則利用所述ECC校驗算法對搜索到的版本程序進行位糾正,然后繼續(xù)步驟D2。 本發(fā)明還提供一種終端產品版本存儲的系統(tǒng),包括燒寫單元,用于燒寫產品的Boot程序到非易失性存儲介質,燒寫版本程序到Nandflash。 —種實施例中,所述燒寫單元還包括升級燒寫單元,用于燒寫B(tài)oot程序的升級程序和/或版本程序的升級程序;如果Boot程序有升級程序,則燒寫其升級程序到所述存儲介質;如果版本程序有升級程序,則燒寫其升級程序到所述Nandf lash。
上述系統(tǒng)還包括啟動加載單元,用于產品的CPU加電時啟動已燒寫到存儲介質的Boot程序來引導Nandflash中的版本程序。 —種實施例中,所述燒寫單元還包括原始校驗單元,用于用于在對版本程序逐塊并繞過壞塊燒寫時進行ECC校驗,并將校驗結果存放到Nandflash 在一種實施例中,所述啟動加載單元還包括版本校驗單元和對比糾正單元;版本校驗單元,用于對啟動后搜索到的已燒寫到Nandflash的版本程序進行ECC校驗;對比糾正單元,用于將原始校驗單元的校驗結果和版本校驗單元的校驗結果進行ECC比較,若ECC比較不通過,則利用所述ECC校驗算法進行位糾正。 本發(fā)明的有益效果在于本發(fā)明支持CPU不具有Nandflash控制器的產品,不限制CPU的選型;使用適合Boot程序啟動的存儲介質來存儲Boot程序,而使用Nandflash存儲介質來存儲版本,可以在不影響用戶的正常使用的同時降低產品成本;另外,本發(fā)明還通過ECC算法對Nandflash的壞塊進行了處理,保證了系統(tǒng)運行的可靠性。
圖1是本發(fā)明方法第一種實施例的流程示意 圖2是本發(fā)明方法第二種實施例的流程示意 圖3是本發(fā)明方法第三種實施例的具體操作流程 圖4是本發(fā)明系統(tǒng)實施例的邏輯結構示意圖。
具體實施例方式
下面通過具體實施方式
結合附圖對本發(fā)明作進一步詳細說明。
本發(fā)明的方法流程圖如圖1所示,包括步驟
Al :分別燒寫B(tài)oot程序與版本程序。 燒寫B(tài)oot程序前,需要根據Boot的尺寸,選用產品的CPU在上電時可以支持直接 從其啟動的非易失性存儲介質來作為Boot程序的存儲介質。然后將Boot程序燒寫到該已 選好的干凈的非易失性存儲介質中;而版本則是燒寫到Nandflash中。所述非易失性存儲 介質可以是Nandflash,也可以是其它類型的存儲介質。 產品支持Boot程序和版本程序的升級。在燒寫過程中,如果Boot程序有升級程 序,則將其升級程序仍燒寫在上述非易失性存儲介質中;如果版本程序有升級程序,則將版 本程序從Nandflash指定地址開始燒寫。
A2 :系統(tǒng)從Boot程序啟動并加載版本程序。 燒寫結束后,系統(tǒng)重啟,產品的CPU直接從處于非易失性存儲介質中的Boot程序 啟動,然后由Boot程序搜索Nandflash上的版本程序。搜索到版本程序后,可以直接由Boot 程序來引導版本程序中的內核,如果內核是經過壓縮的,則需要在內存中對內核進行解壓 縮,并加載版本程序中的文件系統(tǒng)。 由上述本發(fā)明的方法流程圖可以看出,本發(fā)明在產品的CPU不具有Nandflash控 制器時仍然可以使用Nandflash作為版本的存儲介質,這樣不限制CPU的選型,同時可以降 低產品成本。另外,終端產品可以根據自己的需要,在Nandflash上存儲額外的信息,如日 志文件。 為了保證產品系統(tǒng)運行的可靠性,本發(fā)明還提出了另一種具體實施例,通過ECC 算法對Nandflash的壞塊進行了處理,其方法流程示意圖,如圖2所示。
Bl、燒寫B(tài)oot程序到存儲介質。 同Al —樣,在燒寫前需要選用合適Boot程序的非易失性存儲介質,且產品CPU支 持從該存儲介質啟動。 B2、燒寫版本程序到Nandflash時對版本程序進行錯誤更正算法ECC校驗并將校 驗結果存放入Nandflash。 燒寫版本程序到Nandflash是逐塊進行的。Nandflash在出廠的時候就有壞塊的 存在,并且都有壞塊的標記,因此,在燒寫過程中,對壞塊的標記位進行檢查,以判斷是否是 壞塊。如果檢查發(fā)現是壞塊,則不對該塊進行寫入操作,由于Nandflash可能會發(fā)生位反 轉,在燒寫版本程序的時候,利用錯誤更正算法(ECC)算法,對版本程序進行ECC校驗,并將 校驗結果存放入Nandf lash。 B3、系統(tǒng)從存儲介質中的Boot程序啟動,Boot程序搜索Nandflash上的版本。
版本燒寫結束后,系統(tǒng)重啟,CPU直接從燒寫到存儲介質的Boot程序啟動,然后由 Boot程序去搜索Nandflash上的版本程序。 B4、對搜索到的版本程序進行ECC校驗并比較,若不通過則對版本進行位糾正。
對搜索到的版本程序,利用與燒寫版本程序時同樣的ECC校驗算法,對版本程序 進行ECC校驗,并將此結果與燒寫版本程序時所產生的ECC校驗結果進行比較,判斷是否發(fā) 生了位反轉現象。如果ECC校驗正確,那么就可以直接執(zhí)行步驟B5 ;如果發(fā)生了位反轉現 象,則就需要利用ECC校驗算法進行位糾正,然后再執(zhí)行步驟B5。
B5、啟動內核加載文件系統(tǒng)。 由Boot來引導版本程序中的內核,如果內核是經過壓縮的,則需要在內存對內核進行解壓縮,并加載版本程序中的文件系統(tǒng)。 圖3是本發(fā)明方法的第三種具體實施例的操作流程圖,它以基于li皿x操作系統(tǒng),產品的CPU不支持直接從Nandf lash啟動而是支持直接從Norf lash啟動為例,詳細說明了該產品版本程序升級及啟動方法的操作流程。該流程包括如下步驟 1. CPU支持直接從非易失性存儲介質Norf lash啟動,利用支持這種Norf lash的燒寫器往一個完全干凈的Norf lash燒寫B(tài)oot程序; 2.產品支持Boot程序和版本程序的升級。如果是Boot程序有升級程序,則將其升級程序仍燒寫在Norf lash上;如果是版本程序有升級程序,則將其升級程序從Nandf lash指定地址處開始燒寫;在燒寫版本程序的時候,利用錯誤更正算法(ECC)算法,對版本進行ECC校驗,并將校驗結果存放入Nandf lash。 3.版本程序燒寫結束,系統(tǒng)重啟,CPU直接從Norf lash啟動; 4.由Norf lash上的Boot程序去搜索Nandf lash上的版本程序; 5.搜索到版本程序以后,利用與燒寫版本程序時同樣的ECC校驗算法,對版本程
序進行ECC校驗,并將此結果與燒寫版本程序時所產生的ECC校驗結果進行比較,判斷是否
發(fā)生了位反轉現象。 6.如果發(fā)生了位反轉現象,則就需要利用ECC校驗算法進行位糾正。 7.如果ECC校驗正確或者版本經過位糾正后,直接由Boot來引導版本程序中的內
核,如果內核是經過壓縮的,則需要在內存對內核進行解壓縮,并加載版本程序中的文件系統(tǒng)。然后由Boot直接引導內核,再由內核去加載文件系統(tǒng)。 本發(fā)明除了提供上述方法外,還提供了一種終端產品版本存儲的系統(tǒng),其系統(tǒng)邏輯結構示意圖如圖4所示。系統(tǒng)包括燒寫單元、啟動加載單元 在燒寫單元中,將產品的引導Boot燒寫到合適Boot尺寸且CPU支持的非易失性存儲介質,對燒寫到所述存儲介質的Boot記為存儲Boot,將版本燒寫到Nandf lash中;
燒寫B(tài)oot和版本結束后,啟動加載單元從存儲Boot啟動,并由存儲Boot搜索Nandf lash上的版本。 在本發(fā)明系統(tǒng)實施例中,燒寫單元包括升級燒寫單元和原始校驗單元,啟動加載單元包括版本校驗單元和對比糾正單元。 升級燒寫單元,用于燒寫B(tài)oot程序的升級程序和/或版本程序的升級程序;如果Boot程序有升級程序,則燒寫其升級程序到所述存儲介質;如果版本程序有升級程序,則燒寫其升級程序到所述Nandf lash 。 原始校驗單元對燒寫到Nandflash的版本,利用錯誤更正算法ECC對版本進行ECC校驗,并將校驗結果存放到Nandf lash中,所述校驗結果記為原始校驗結果;
對搜索到的Nandf lash上的版本,版本校驗單元對該版本進行同樣的ECC校驗,記錄該校驗結果為實際校驗結果;對比糾正單元對原始校驗結果和實際校驗結果進行ECC比較,若ECC比較不通過,則利用ECC算法對版本進行位糾正。 版本位糾正后或版本ECC比較通過后,由存儲Boot引導Nandflash上的版本。 以上內容是結合具體的實施方式對本發(fā)明所做的進一步詳細說明,不能認定本發(fā)
明的具體實施只局限于這些說明。對于本發(fā)明所述技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護
7范圍。
權利要求
一種終端產品版本存儲的方法,其特征在于,包括步驟A、設置產品版本為Boot程序和版本程序,所述Boot程序用于引導版本程序;步驟B、選擇產品CPU支持啟動的非易失性存儲介質,利用燒寫器將所述Boot程序燒寫到該存儲介質;步驟C、燒寫所述版本程序到與非閃存器Nandflash中。
2. 如權利要求1所述的方法,其特征在于,還包括對產品版本的升級處理過程將所 述Boot程序的升級程序燒寫到所述存儲介質和/或將所述版本程序的升級程序燒寫到 Nandflash。
3. 如權利要求1或2所述的方法,其特征在于,還包括步驟D、產品CPU上電時,從燒寫到所述存儲介質的Boot程序啟動,由該Boot程序去引 導所述Nandflash中的版本程序。
4. 如權利要求3所述的方法,其特征在于,所述步驟D具體包括 步驟Dl、啟動后,由Boot程序搜索所述Nandflash上的版本程序; 步驟D2、由Boot程序引導所述Nandflash上的版本程序。
5. 如權利要求4所述的方法,其特征在于,所述步驟C在燒寫所述版本程序到所述 Nandflash時是逐塊進行并繞過壞塊的。
6. 如權利要求5所述的方法,其特征在于,所述步驟C還包括利用錯誤更正算法ECC對燒寫到所述Nandflash的版本程序進行ECC校驗,存放校驗 結果到所述Nandflash。
7. 如權利要求6所述的方法,其特征在于,所述步驟D1還包括利用所述ECC校驗算法對搜索到的版本程序進行ECC校驗,將其校驗結果與所述 Nandflash存有的校驗結果進行比較,通過判斷是否發(fā)生了位反轉現象來檢查所述ECC校 驗是否通過;如果ECC校驗通過,則繼續(xù)步驟D2 ;如果ECC校驗不通過,則利用所述ECC校驗算法對搜索到的版本程序進行位糾正,然后 繼續(xù)步驟D2。
8. —種終端產品版本存儲的系統(tǒng),其特征在于,包括燒寫單元,用于燒寫產品的Boot程序到非易失性存儲介質,燒寫版本程序到 Nandflash。
9. 如權利要求8所述的系統(tǒng),其特征在于,所述燒寫單元還包括升級燒寫單元,用于 燒寫B(tài)oot程序的升級程序和/或版本程序的升級程序;如果Boot程序有升級程序,則 燒寫其升級程序到所述存儲介質;如果版本程序有升級程序,則燒寫其升級程序到所述 Nandflash。
10. 如權利要求8或9所述的系統(tǒng),其特征在于,還包括啟動加載單元,用于產品的 CPU加電時啟動已燒寫到存儲介質的Boot程序來引導Nandflash中的版本程序。
11. 如權利要求10所述的系統(tǒng),其特征在于,所述燒寫單元還包括原始校驗單元,用 于在對版本程序逐塊并繞過壞塊燒寫時進行ECC校驗,并將校驗結果存放到Nandf lash。
12. 如權利要求11所述的系統(tǒng),其特征在于,還包括 所述啟動加載單元還包括版本校驗單元和對比糾正單元,版本校驗單元,用于對啟動后搜索到的己燒寫到Nandflash的版本程序進行ECC校驗 并獲得校驗結果;對比糾正單元,用于將原始校驗單元的校驗結果和版本校驗單元的校驗結果進行ECC 比較,若ECC比較不通過,則利用所述ECC校驗算法進行位糾正。
全文摘要
本發(fā)明公開了一種通訊技術產品領域中存儲產品版本的方法。該方法包括產品使用nandflash與另外一種非易失性存儲介質的組合作為存儲介質,根據產品的具體情況,決定boot和版本存放的位置;系統(tǒng)軟件版本升級中,根據升級文件的類型來確定文件存放的位置。本發(fā)明使用nandflash,其單位bit的成本相對于目前常用的其他flash的單位bit的成本要低,從而降低了產品的成本。就產品的易用性而言,產品選用兩種存儲介質分別用于存放boot和版本,可以支持直接啟動非易失性存儲介質來存儲boot,而使用nandflash來存儲版本。另外,nandflash較快的寫入和擦除速度會提高版本升級的速度。
文檔編號G06F11/08GK101727361SQ20091018850
公開日2010年6月9日 申請日期2009年11月30日 優(yōu)先權日2009年11月30日
發(fā)明者陸亦芬 申請人:中興通訊股份有限公司