專利名稱:微處理器啟動過程中對所用通用閃存的檢測方法
技術領域:
本發明涉及通信技術領域,尤其涉及一種微處理器啟動過程中對所用通用閃存(NAND FLASH)的檢測方法。
背景技術:
現代信息系統將運行軟件存儲在NAND FLASH內以備永久使用。微處理器啟動時讀取執行NAND FLASH起始段的一小部分指令,這一小部分指令通常將NAND FLASH的全部運行程序復制到系統主存儲器中,然后微處理器跳到系統主存儲器中讀取運行,進入正常工作。NAND FLASH有統一的硬件接口,但是不同的廠商,同一廠商不同的產品型號,至少有三種以上的指令接口,如何確定所使用的NAND FLASH的類型及所使用的指令接口,是微處理器啟動過程中必須解決的問題。
目前有兩種識別NAND FLASH的方法方法一如圖1所示,是將NANDFLASH的類型、指令集、和時間參數存儲在一個小容量的PROM(可編程只讀型存儲器)內,啟動程序如圖2所示,微處理器先從PROM讀取這些參數,然后再從NAND FLASH中讀取執行啟動程序。這種方法的缺點是增加了PROM及接口成本。方法二如圖3示,是在芯片內部設置ROM(只可讀存儲器)紀錄各種型號NAND FLASH ID(芯片識別碼)及其對應的指令及時間參數。啟動程序如圖4所示,微處理器先讀取NAND FLASH的型號ID,并從ROM中提取對應的指令及參數,然后再從NAND FLASH中讀取執行啟動程序。這種方法的缺點是隨著NAND FLASH型號的不斷增加ROM變得極其復雜,同時設好的ROM也不能支持新的NAND FLASH型號。
發明內容
本發明所要解決的技術問題是提供一種微處理器啟動過程中,在不增加接口成本的條件下,支持所有NAND FLASH的方法。
本發明為解決上述技術問題所采用的技術方案為一種微處理器啟動過程中對所用通用閃存的檢測方法,所述方法包括A、將所有通用閃存的基本頁讀取命令歸納成預定數量的基本命令序列集,并在通用閃存及微處理器中設置校驗密碼;B、微處理器通過枚舉所述基本命令序列讀取所述通用閃存第一頁,進行密碼校驗;C、當密碼校驗通過,證明微處理器成功地提取了通用閃存的參數,微處理器利用提取的參數從該通用閃存中讀取并執行啟動程序;否則,進入下一種基本命令序列的設置。
所述的方法,其中所述密碼分設成兩組,第一組密碼設置在通用閃存第一頁中,第二組密碼保存在微處理器引導程序中。
所述的方法,其中所述步驟B所述的密碼校驗包括如下具體步驟B1、當系統啟動時,微處理器讀取所述通用閃存第一頁,將第一組密碼從讀回的內容中提取出來,并進行密碼轉換處理;B2、將處理后的第一組密碼與所述第二組密碼進行比較;若二者匹配,則密碼校驗通過,否則密碼校驗失敗。
所述的方法,其中將所述第一組密碼與第二組密碼設置為相同的二進制位流。
所述的方法,其中將所述第一組密碼設置為一個二進制位流,所述第二組密碼設置為第一組密碼經過加密運算后的結果。
所述的方法,其中所述的基本命令序列集包括12種基本命令序列;所述基本命令序列的格式為第一個命令是命令字節;第二個命令為列地址;第三個命令為行地址;第四個命令是命令字節;第五個命令為等待足夠長時間;第六個命令為讀取通用閃存的內容。
所述的方法,其中所述的基本命令序列集依據基本命令序列的使用頻度排列設置,將最常使用的命令序列設置在基本命令序列集的最前面。
所述的方法,其中所述步驟C包括如下具體處理微處理器成功地提取了通用閃存的參數后,采用與該與非型通用閃存適配的指令及時間參數啟動所述與非型通用閃存。
本發明的有益效果為提供了一種微處理器啟動過程中對NANDFLASH通用的檢測方法,該方法可以支持不同廠商,不同型號的所有NANDFLASH,由于不增加接口,降低了成本,并且該方法設計及實現簡單,尤其適用手持設備和家電設備。
圖1為現有技術1方案示意圖;圖2為現有技術1啟動程序的流程圖;圖3為現有技術2方案示意圖;圖4為現有技術2啟動程序的流程圖;圖5為歸納所有NAND FLASH第一頁讀取的12種基本命令集;圖6為本發明啟動程序的流程圖。
具體實施例方式
下面根據附圖和實施例對本發明作進一步詳細說明
新方案使用枚舉和密碼相結合的方法從NAND FLASH第一個512字節存儲中直接提取指令和時間參數。我們發現所有的NAND FLASH的頁容量都是512+16字節的倍數,目前用到的頁容量是512+16字節和2048+64字節,而且第一頁是高度可靠的(不需進行糾錯)。同時,我們根據所有的NAND FLASH的操作說明,將基本頁讀取命令都可以歸納描述為00H-CADDR(列地址)-RADDR(行地址)-[30H]-WAIT-READ其中基本頁讀取的第一個命令都是命令字節“00”;讀取的第二個命令都是列地址,分為小列“CADDR[7:0]”和大列“CADDR[7:0]-CADDR[15:8]”;基本頁讀取的第三個命令都是行地址,分為小行“RADDR[7:0]”,中行“RADDR[7:0],RADDR[15:8]”,大行“RADDR[7:0]-RADDR[15:8]-RADDR[23:16]”;基本頁讀取的第四個命令是命令字節,可有可無,有才為命令字節“30”;基本頁讀取的第五步是等待足夠長,為毫秒級;基本頁讀取的第六步是用足夠慢的速度讀取每一字節。因此NAND FLASH第一頁讀取的12種基本命令集歸納如圖5所示。
校驗密碼由用戶設置,密碼分設成兩組。由于NAND FLASH第一頁是高度可靠的,第一組校驗密碼設置在NAND FLASH的第一頁內,第二組校驗密碼設置在微處理器芯片的引導程序內。密碼是微處理設計過程中定義好的一個數字序列。
對NAND FLASH的檢測流程如圖6所示,微處理器進行每一種指令設置的密碼讀取及檢驗,即微處理器選擇一個命令序列并設置為保守的時間參數,去讀取NAND FLASH第一頁;微處理器將從NAND FLASH讀出的密碼同密碼規則進行比較,判斷檢驗成功或失敗。密碼設置和檢驗過程如下用戶設置密碼,并將第一組密碼寫入NAND FLASH第一頁中確定的位置,同時將第二組密碼的內容保存在引導程序中。當系統啟動時,讀取NAND FLASH的第一頁,并將第一組密碼從讀回的內容中提取出來,按照用戶定義的轉換方法進行密碼轉換處理后與保存在引導程序中的第二組密碼進行比較。如果兩者匹配,則校驗通過,否則校驗失敗。用戶可以根據自己的要求設置復雜程度不同的密碼以及校驗,簡單的密碼可以將第一組密碼與第二組密碼設置為相同的二進制位流;復雜的密碼可以將第一組密碼設置為一個二進制位流,而將第二組密碼設置為第一組密碼經過加密運算后的的結果。具體的密碼轉換方法既可固化在引導程序中,也可存在NAND FLASH的第一頁中,在提取第一組密碼的同時,提取具體的針對第一組密碼的密碼轉換方法。設置的密碼越復雜,則密碼檢驗成功的可信度就越大。
如果密碼檢驗成功,說明利用該命令序列可以從NAND FLASH讀取到正確的內容,則認為微處理器成功地提取了NAND FLASH的參數;成功提取參數后,微處理器利用最優的指令及時間參數從該NAND FLASH中讀取并執行啟動程序。如果密碼檢驗不成功,則復位NAND FLASH并進入下一種指令設置,直至一種指令設置可以從NAND FLASH讀取到正確的參數為止。為了減少啟動時間,基本命令序列集依據基本命令序列的使用頻度排列設置,從最常用的指令設置開始,將最常使用的命令序列設置在基本命令序列集的最前面。并且由于微處理器僅是在讀取NANDFLASH第一頁時使用保守時間參數的基本方法讀取,而微處理器成功地提取了通用閃存的參數后,其它頁則是用與該NAND FLASH適配的指令時間參數的最優方法讀取,因此啟動時間基本保持不變。
可以理解的是,本發明所述的微處理器啟動過程中對所用通用閃存的檢測方法,上述針對較佳實施例的描述過于具體,對本領域普通技術人員來說,可以根據本發明的技術方案及其發明構思加以等同替換或改變,而所有這些改變或替換都應屬于本發明所附的權利要求的保護范圍。
權利要求
1.一種微處理器啟動過程中對所用通用閃存的檢測方法,所述方法包括A、將所有通用閃存的基本頁讀取命令歸納成預定數量的基本命令序列集,并在通用閃存及微處理器中設置校驗密碼;B、微處理器通過枚舉所述基本命令序列讀取所述通用閃存第一頁,進行密碼校驗;C、當密碼校驗通過,證明微處理器成功地提取了通用閃存的參數,微處理器利用提取的參數從該通用閃存中讀取并執行啟動程序;否則,進入下一種基本命令序列的設置。
2.根據權利要求1所述的方法,其特征在于所述密碼分設成兩組,第一組密碼設置在通用閃存第一頁中,第二組密碼保存在微處理器引導程序中。
3.根據權利要求2所述的方法,其特征在于所述步驟B所述的密碼校驗包括如下具體步驟B1、當系統啟動時,微處理器讀取所述通用閃存第一頁,將第一組密碼從讀回的內容中提取出來,并進行密碼轉換處理;B2、將處理后的第一組密碼與所述第二組密碼進行比較;若二者匹配,則密碼校驗通過,否則密碼校驗失敗。
4.根據權利要求3所述的方法,其特征在于將所述第一組密碼與第二組密碼設置為相同的二進制位流。
5.根據權利要求3所述的方法,其特征在于將所述第一組密碼設置為一個二進制位流,所述第二組密碼設置為第一組密碼經過加密運算后的結果。
6.根據權利要求1-5任一權項所述的方法,其特征在于所述的基本命令序列集包括12種基本命令序列;所述基本命令序列的格式為第一個命令是命令字節;第二個命令為列地址;第三個命令為行地址;第四個命令是命令字節;第五個命令為等待足夠長時間;第六個命令為讀取通用閃存的內容。
7.根據權利要求6所述的方法,其特征在于所述的基本命令序列集依據基本命令序列的使用頻度排列設置,將最常使用的命令序列設置在基本命令序列集的最前面。
8.根據權利要求7所述的方法,其特征在于所述步驟C包括如下具體處理微處理器成功地提取了通用閃存的參數后,采用與該通用閃存適配的指令及時間參數啟動所述通用閃存。
全文摘要
一種微處理器啟動過程中對所用通用閃存的檢測方法,所述方法包括A.將所有通用閃存的基本頁讀取命令歸納成預定數量的基本命令序列集,并在通用閃存及微處理器中設置校驗密碼;B.微處理器通過枚舉基本命令序列讀取通用閃存第一頁,進行密碼校驗;C.當密碼校驗通過,證明微處理器成功地提取了通用閃存的參數,微處理器利用提取的參數從該通用閃存中讀取并執行啟動程序;否則,進入下一種基本命令序列的設置。該方法可以支持不同廠商,不同型號的所有NANDFLASH,并且該方法具有成本低、設計及實現簡單的優點。
文檔編號G06F9/445GK101051272SQ20061006017
公開日2007年10月10日 申請日期2006年4月4日 優先權日2006年4月4日
發明者李小明, 李立華, 林桂杰 申請人:深圳安凱微電子技術有限公司