專利名稱:支持多種nand閃存的固化代碼的執(zhí)行方法
技術(shù)領(lǐng)域:
本發(fā)明涉及SoC從NAND閃存啟動技術(shù),尤其涉及ー種支持多種NAND閃存的固化代碼的執(zhí)行方法。
背景技術(shù):
隨著嵌入式系統(tǒng)的日趨復(fù)雜,實際項目對大容量數(shù)據(jù)存儲的需求越來越緊迫。當(dāng)前嵌入式設(shè)備低功耗、小體積以及低成本的要求也致使硬盤無法得到廣泛的應(yīng)用,而大容量閃存設(shè)備恰是為了滿足當(dāng)前這ー需求而迅速發(fā)展起來。從閃存設(shè)備裝載代碼來啟動嵌入式系統(tǒng)是ー項基本且必要的Soc技術(shù),如何解決Soc從閃存啟動技術(shù)中的ー些特定問題是目前業(yè)內(nèi)的研究重點。目前國際上成熟的Soc從閃存啟動技術(shù)通常需要完成四個部分功能和過程 第一歩,首先Soc內(nèi)部硬件固化的過程代碼被執(zhí)行,這段硬件固化的過程代碼將對閃
存進(jìn)行基本的初始化,然后把閃存中的裝載程序代碼調(diào)入SoC內(nèi)部的高速緩存中(如圖I所示);
第二步,片內(nèi)高速緩存中的裝載代碼被執(zhí)行,初始化內(nèi)存并將啟動代碼從閃存拷貝到內(nèi)存中(如圖2所示);
第三步,內(nèi)存中的啟動代碼被執(zhí)行,初始化外部系統(tǒng)及其相關(guān)設(shè)備,并將操作系統(tǒng)核心代碼從NAND閃存拷貝到內(nèi)存中(如圖3所示);
第四歩,內(nèi)存中的操作系統(tǒng)核心被執(zhí)行,執(zhí)行操作系統(tǒng)的控制任務(wù)(如圖4所示)。然而,由于NAND閃存具有多樣性特點,目前國際市場上流行的NAND閃存由9個以上的廠商研發(fā)并生產(chǎn),每個廠商在不同的技術(shù)發(fā)展階段也會有不同型號的閃存設(shè)備。根據(jù)NAND閃存的國際發(fā)展階段,目前還存在SLC和MLC兩種類型,并且容量也隨之增加。這一多祥性的特點使得不同類型、不同廠商、不同型號、不同容量的閃存都具有部分相異的特性,比如,閃存地址寬度、頁尺寸等參數(shù)。NAND閃存的這些不同的特性要求SoC的固化代碼部分必須有完善的解決方案進(jìn)行不同的設(shè)置方式才能正確訪問閃存。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明的目的在于提供ー種支持多種NAND閃存的固化代碼的執(zhí)行方法。其通過在固化代碼中使用一定的設(shè)備參數(shù)表來保存多種NAND閃存的信息,以實現(xiàn)對多種NAND閃存的支持。為實現(xiàn)上述發(fā)明目的,本發(fā)明提供的ー種支持多種NAND閃存的固化代碼的執(zhí)行方法,包括如下步驟
51、啟動固化代碼以初始化NAND閃存,并為讀取NAND閃存中的裝載代碼做準(zhǔn)備,其中,所述固化代碼中包括一保存多種型號NAND閃存參數(shù)的設(shè)備參數(shù)表,且固化代碼支持設(shè)備參數(shù)表中保存的各型號NAND閃存;
52、讀取并解析所述NAND閃存中的裝載代碼。
作為本發(fā)明的進(jìn)ー步改進(jìn),所述步驟SI具體為
初始化用干與NAND閃存通信以控制所述NAND閃存的NAND閃存硬件控制器;
檢測當(dāng)前NAND閃存型號并讀取與當(dāng)前NAND閃存型號對應(yīng)的固化代碼參數(shù)。作為本發(fā)明的進(jìn)ー步改進(jìn),所述固化代碼支持NAND閃存行業(yè)標(biāo)準(zhǔn)ONFI 2. OCOpenNAND Flash Interface 2. O)。 作為本發(fā)明的進(jìn)ー步改進(jìn),所述固化代碼參數(shù)保存于一系統(tǒng)參數(shù)表中,所述系統(tǒng)參數(shù)表的參數(shù)獲取方式包括搜索固化代碼內(nèi)部NAND閃存設(shè)備參數(shù)表、或者從支持ONFI
2.0標(biāo)準(zhǔn)的NAND閃存獲取、或者讀取NAND閃存首頁保存的參數(shù)表。作為本發(fā)明的進(jìn)ー步改進(jìn),所述固化代碼的系統(tǒng)參數(shù)表保存在NAND閃存的第一個存儲頁中。作為本發(fā)明的進(jìn)ー步改進(jìn),所述固化代碼的系統(tǒng)參數(shù)表保存為多個副本,且每個副本內(nèi)容與原參數(shù)表內(nèi)容一致。作為本發(fā)明的進(jìn)ー步改進(jìn),所述設(shè)備參數(shù)表中為每ー種型號的NAND分別配置唯一的 ID。與現(xiàn)有技術(shù)相比,本發(fā)明通過在固化代碼中使用一定的設(shè)備參數(shù)表來保存多種NAND閃存的信息,在固化代碼初始化NAND閃存時,首先檢測當(dāng)前NAND閃存的型號,再讀取與當(dāng)前NAND閃存型號對應(yīng)的固化代碼參數(shù),從而實現(xiàn)對多種NAND閃存的支持,且實現(xiàn)方法簡單。
圖I是現(xiàn)有技術(shù)中Soc從閃存啟動的步驟ー的工作原理示意 圖2是現(xiàn)有技術(shù)中Soc從閃存啟動的步驟ニ的工作原理示意 圖3是現(xiàn)有技術(shù)中Soc從閃存啟動的步驟三的工作原理示意 圖4是現(xiàn)有技術(shù)中Soc從閃存啟動的步驟四的工作原理示意 圖5是本發(fā)明ー實施方式中硬件固化代碼的啟動和運行的工作流程 圖6是本發(fā)明ー實施方式中NAND閃存設(shè)備初始化過程的工作流程 圖7是本發(fā)明ー實施方式中系統(tǒng)參數(shù)表的三種參數(shù)獲取方式的工作流程 圖8是本發(fā)明ー實施方式中固化代碼使用的系統(tǒng)參數(shù)表以多副本的方式存儲的示意
圖9是本發(fā)明ー實施方式中讀取NAND閃存中的參數(shù)表的工作流程 圖10是本發(fā)明ー實施方式中對NAND閃存硬件訪問地址寬度參數(shù)的處理步驟的流程
圖11是本發(fā)明ー實施方式中讀取并解析閃存中的裝載代碼的具體步驟的流程 圖12表示的是本發(fā)明ー實施方式中裝載代碼的特定文件格式以及數(shù)據(jù)段格式;
圖13表示的是本發(fā)明ー實施方式中邏輯數(shù)據(jù)區(qū)裝載代碼的訪問原理;
圖14是本發(fā)明ー實施方式中固化代碼讀取裝載代碼的具體過程的流程 圖15表示的是本發(fā)明ー實施方式中固化代碼對數(shù)據(jù)頁的訪問原理。
具體實施方式
以下將結(jié)合附圖所示的具體實施方式
對本發(fā)明進(jìn)行詳細(xì)描述。但這些實施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包括在本發(fā)明的保護(hù)范圍內(nèi)。本發(fā)明是整個SoC從閃存啟動的第一歩(圖I所示)過程中硬件固化代碼的重要組成部分,主要完成如何正確初始化閃存、采取怎樣的合理過程和方式將裝載代碼從閃存讀取拷貝到片內(nèi)高速緩存中。而由于NAND閃存具有多樣性特點,本發(fā)明的目的便是實現(xiàn)多種NAND閃存的支持。請參照圖5所示,在本發(fā)明ー實施方式中,ー種支持多種NAND閃存的固化代碼的執(zhí)行方法,包括如下步驟
51、啟動固化代碼以初始化NAND閃存,并為讀取NAND閃存中的裝載代碼做準(zhǔn)備,其中,所述固化代碼中包括一保存多種型號NAND閃存參數(shù)的設(shè)備參數(shù)表,且固化代碼支持設(shè)備參數(shù)表中保存的各型號NAND閃存;
52、讀取并解析所述NAND閃存中的裝載代碼。值得ー提的是,所述固化代碼支持NAND閃存行業(yè)標(biāo)準(zhǔn)ONFI 2. 0(0pen NAND FlashInterface 2.0)。Open NAND Flash Interface (ONFI)工作組已經(jīng)于 2008-2009 年公布了其ONFI 2.0標(biāo)準(zhǔn)。該公司成立于2006年5月,擁有100多個涉及制造、設(shè)計以及使用閃存產(chǎn)品的成員,包括海力士、英特爾、鎂光、SanDisk以及索尼。ONFI 2. 0標(biāo)準(zhǔn)要求NAND閃存能夠通過處理特殊指令OxEC提供硬件設(shè)備的具體參數(shù)。在固化代碼的參數(shù)獲取流程中,能夠通過這個命令將支持ONFI 2. 0標(biāo)準(zhǔn)的NAND閃存中的參數(shù)讀取并更新到系統(tǒng)參數(shù)表中。其中,如圖6所示,步驟SI具體包括
511、初始化用于與NAND閃存通信以控制NAND閃存的NAND閃存硬件控制器;
512、檢測當(dāng)前NAND閃存參數(shù)并讀取與當(dāng)前NAND閃存對應(yīng)的固化代碼參數(shù)。NAND閃存參數(shù)檢測,固化代碼參數(shù)讀取過程依據(jù)不同類型的閃存包含不同的內(nèi)容,目前在成熟的方案中可以同時支持SPI閃存以及NAND閃存,這兩種閃存中NAND閃存由于固有的硬件特征使得控制更為復(fù)雜。具體地,在本實施方式中的步驟SI中,首先需要進(jìn)行硬件的啟動(系統(tǒng)加電),接下來需要通過硬件啟動控制器初始化片內(nèi)存儲器(步驟SlOl),硬件啟動控制器分析并解析存儲在片內(nèi)存儲器上的特定格式的固化代碼(步驟S102),緊接著判斷解析是否成功(步驟S103),若不成功,則硬件啟動停止;若成功,則進(jìn)行固化代碼的啟動(步驟S104),通過啟動固化代碼來初始化閃存并為讀取裝載代碼做必要準(zhǔn)備,并判斷是否成功(步驟S106),若成功,便進(jìn)入讀取并解析閃存中的裝載代碼的步驟,若不成功,則判斷是否需要啟動下ー個閃存(步驟S110),若是,則返回步驟SI、若否,跳轉(zhuǎn)步驟Slll :停止固化代碼。在讀取并解析閃存的裝載代碼之后,還需判斷該過程是否成功(步驟S108),若是,則啟動控制權(quán)交給特定的軟件來裝載代碼(步驟S109);若否,同樣需要判斷是否需要啟動下一個閃存(步驟SI 10)。 在本實施方式中,固化代碼最終使用的參數(shù)(比如閃存設(shè)備參數(shù)、設(shè)備ID、尺寸信息等等)保存于一系統(tǒng)參數(shù)表中,所述系統(tǒng)參數(shù)表的參數(shù)獲取方式包括捜索固化代碼內(nèi)部NAND閃存設(shè)備參數(shù)表、或者從支持ONFI 2. 0標(biāo)準(zhǔn)的NAND閃存獲取、或者讀取NAND閃存首頁保存的參數(shù)表。
具體地,請參圖7所示,“搜索固化代碼內(nèi)部NAND閃存設(shè)備參數(shù)表”的參數(shù)獲取方式具體為
內(nèi)部設(shè)備表參數(shù)獲取開始;
讀取NAND閃存設(shè)備的ID,其中,設(shè)備參數(shù)表中為每ー個型號的NAND閃存都分別配置了唯一的ID ;
判斷讀取ID是否成功,若是,則讀取內(nèi)部設(shè)備參數(shù)表;若否,則內(nèi)部設(shè)備表參數(shù)獲取結(jié)
束;
讀取內(nèi)部設(shè)備參數(shù)表結(jié)束后,還需判斷是否找到閃存信息,若是,則對系統(tǒng)參數(shù)表進(jìn)行更新;若否,則內(nèi)部設(shè)備表參數(shù)獲取結(jié)束;
“從支持ONFI 2. 0標(biāo)準(zhǔn)的NAND閃存獲取”的參數(shù)獲取方式具體為
ONFI信息表讀取開始;
與NAND閃存通信并獲取ONFI讀取信息表;
判斷是否成功獲取,若是,則對系統(tǒng)參數(shù)表進(jìn)行更新;若否,則ONFI信息表讀取結(jié)束; “讀取NAND閃存首頁保存的參數(shù)表”的參數(shù)獲取方式具體為
NAND閃存中的參數(shù)表獲取開始;
讀取NAND閃存中的參數(shù)表;
判斷是否成功獲取,若是,則對系統(tǒng)參數(shù)表進(jìn)行更新;若否,則NAND閃存中的參數(shù)表獲取結(jié)束;
表[I]中列舉了其中的部分參數(shù)
茨い! 5
,V p やるた にホむ
設(shè)備D _[デ玦衿記獲移倥爨|獠 鐘參踱Ucc禊式
足寸IM息詳塊釋記類SECC藥作足す
設(shè)備地址S度詳塊釋記長度ECC ft語存賃鉉發(fā)
表[2]列舉了這些閃存的具體型號
權(quán)利要求
1.一種支持多種NAND閃存的固化代碼的執(zhí)行方法,其特征在于,該方法包括如下步驟 51、啟動固化代碼以初始化NAND閃存,并為讀取NAND閃存中的裝載代碼做準(zhǔn)備,其中,所述固化代碼中包括一保存多種型號NAND閃存參數(shù)的設(shè)備參數(shù)表,且固化代碼支持設(shè)備參數(shù)表中保存的各型號NAND閃存; 52、讀取并解析所述NAND閃存中的裝載代碼。
2.如權(quán)利要求I所述的方法,其特征在于,所述步驟SI具體為 初始化用于與NAND閃存通信以控制所述NAND閃存的NAND閃存硬件控制器; 檢測當(dāng)前NAND閃存參數(shù)并讀取與當(dāng)前NAND閃存對應(yīng)的固化代碼參數(shù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述固化代碼支持NAND閃存行業(yè)標(biāo)準(zhǔn)ONFI2.O (Open NAND Flash Interface 2.0)。
4.如權(quán)利要求3所述的方法,其特征在于,所述固化代碼參數(shù)保存于一系統(tǒng)參數(shù)表中,所述系統(tǒng)參數(shù)表的參數(shù)獲取方式包括搜索固化代碼內(nèi)部NAND閃存設(shè)備參數(shù)表、或者從支持ONFI 2. O標(biāo)準(zhǔn)的NAND閃存獲取、或者讀取NAND閃存首頁保存的參數(shù)表。
5.如權(quán)利要求4所述的方法,其特征在于,所述固化代碼的系統(tǒng)參數(shù)表保存在NAND閃存的第一個存儲頁中。
6.如權(quán)利要求5所述的方法,其特征在于,所述固化代碼的系統(tǒng)參數(shù)表保存為多個副本,且每個副本內(nèi)容與原參數(shù)表內(nèi)容一致。
7.如權(quán)利要求I所述的方法,其特征在于,所述設(shè)備參數(shù)表中為每一種型號的NAND分別配置唯一的ID。
全文摘要
本發(fā)明提供一種支持多種NAND閃存的固化代碼的執(zhí)行方法,該方法包括如下步驟S1、啟動固化代碼以初始化NAND閃存,并為讀取NAND閃存中的裝載代碼做準(zhǔn)備,其中,所述固化代碼中包括一保存多種型號NAND閃存參數(shù)的設(shè)備參數(shù)表,且固化代碼支持設(shè)備參數(shù)表中保存的各型號NAND閃存;S2、讀取并解析所述NAND閃存中的裝載代碼。本發(fā)明通過在固化代碼中使用一定的設(shè)備參數(shù)表來保存多種NAND閃存的信息,在固化代碼初始化NAND閃存時,首先檢測當(dāng)前NAND閃存的型號,再讀取與當(dāng)前NAND閃存型號對應(yīng)的固化代碼參數(shù),從而實現(xiàn)對多種NAND閃存的支持,且實現(xiàn)方法簡單。
文檔編號G06F9/445GK102622243SQ201210017100
公開日2012年8月1日 申請日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者孫紀(jì)坤, 李相斌, 袁宏駿 申請人:蘇州希圖視鼎微電子有限公司