專利名稱:一種芯片參數的識別方法及系統的制作方法
技術領域:
本發(fā)明涉及芯片技術領域,尤其涉及一種芯片參數的識別方法及系統。
背景技術:
現有技術中,如果要使用某一款閃存(nandflash)芯片,就必須要獲得芯片的數 據表(datasheet)技術文檔,根據技術文檔的描述,組織一個參數列表,軟件或硬件是通過 參數列表中的各種參數進行工作。而目前,很多nandflash的生產廠商出于保護的目的,只向大型客戶公開授權的 datasheet技術文檔,不向小型客戶及研發(fā)人員公開nandflash芯片的datasheet技術文 檔。另外,由于nandflash芯片不斷推出新型產品,為了支持不斷推出的新品,廠家必須不 斷更新nandflash參數列表(軟件或硬件),不利于產品的生產。
發(fā)明內容
本發(fā)明實施例提供了一種芯片參數的識別方法及系統,用以識別nandflash芯片 的物理參數。本發(fā)明實施例提供的一種芯片參數的識別方法包括分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫入不同的數據,其中,所述特 定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定的;讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數 據進行比較,確定nandflash芯片的page類型。本發(fā)明實施例提供的一種芯片參數的識別系統包括page類型識別單元,該page 類型識別單元包括特定字節(jié)區(qū)域寫入單元,用于分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫 入不同的數據,其中,所述特定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確 定的;特定字節(jié)區(qū)域讀取單元,用于讀取特定字節(jié)區(qū)域中的數據;比較單元,用于通過將從特定字節(jié)區(qū)域中讀取到的數據與寫入該特定字節(jié)區(qū)域中 的數據進行比較,確定nandflash芯片的page類型。本發(fā)明實施例,分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫入不同的數 據,然后讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數 據進行比較,確定了 nandflash芯片的page類型。
圖1為本發(fā)明實施例提供的一種識別nandflash芯片的page類型的總體方法流 程示意圖;圖2為本發(fā)明實施例提供的一種nandflash芯片參數識別的主要流程示意圖3為本發(fā)明實施例提供的嘗試讀取事先約定好的nandflash區(qū)域的nandflash 物理參數的具體流程示意圖;圖4為本發(fā)明實施例提供的page類型判斷的具體流程示意圖;圖5為本發(fā)明實施例提供的識別nandflash芯片每個block包括的page數目的 具體流程示意圖;圖6為本發(fā)明實施例提供的確定nandflash芯片的block數目的流程示意圖;圖7為本發(fā)明實施例提供的確定最佳時間參數(timing)的流程示意圖;圖8為本發(fā)明實施例提供的一種芯片參數的識別系統的結構示意圖;圖9為本發(fā)明實施例提供的一種page類型識別單元的結構示意圖;圖10為本發(fā)明實施例提供的一種block數目識別單元的結構示意圖。
具體實施例方式本發(fā)明實施例提供了一種芯片參數的識別方法及系統,用以識別nandflash芯片 的物理參數。本發(fā)明實施例提供的nandflash芯片識別方案,可以識別出任何未知nandflash 芯片的物理參數信息,使得開發(fā)人員在一定程度上擺脫了對datasheet技術文檔的依賴; 通過將識別出的物理參數信息保存在nandflash芯片上,廠家不用不斷更新nandflash芯 片的參數表。本發(fā)明實施例通過遍歷式的嘗試,逐步識別出未知nandflash芯片的多項物理參 數,包括芯片的塊(block)的數目,每個塊包含的頁(page)的數目,每頁有效數據區(qū)(data area)的大小,每頁預留區(qū)域(spare area)的大小,芯片的物理結構,最佳的timing。其中,芯片的物理結構包括單級單元(SLC,Single-Level cell)和多級單元 (MLC, Multi-Level cell)兩種物理結構。需要說明的是,本發(fā)明實施例中,向nandflash芯片寫入的數據,不能為Oxff,因 為,nandflash芯片格式化后,該nandflash芯片中的數據全部是Oxff。下面結合附圖對本發(fā)明實施例提供的技術方案進行詳細說明。參見圖1,本發(fā)明實施例提供的一種nandflash芯片的page類型的識別方法總體 包括步驟S101、分別向nandflash芯片的多個特定字節(jié)區(qū)域寫入不同的數據,其中,所述特 定字節(jié)區(qū)域是預先根據nandflash芯片的各種page類型確定的。S102、讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域 中的數據進行比較,確定nandflash芯片的page類型。下面給出本發(fā)明實施例提供的一種用于識別出nandflash芯片各種物理參數的 主要流程說明。較佳地,參見圖2,本發(fā)明實施例提供的nandflash芯片物理參數的識別方法主要 包括步驟一設定最保守(最小)的timing,例如可以是2MHz。timing包括兩個指標mandflash工作頻率和時鐘(elk)每個周期的占空比(高電平比低電平)。然后,采用所有nandflash芯片都能支持的最保守的timing(例如mandflash 工作頻率為2MHz,時鐘(elk)每個周期的高電平比低電平為1 2),嘗試在事先約定好的 nandflash區(qū)域讀取數據,即確定nandflash芯片的預先約定區(qū)域是否存在該nandflash芯 片的物理參數。例如,事先約定好的nandflash區(qū)域可以為nandflash的前10個block中每個 block 的第 0 號 page。判斷是否在事先約定好的nandflash區(qū)域讀取到nandflash物理參數,如果是,則 通過循環(huán)冗余碼(CRC)對讀取到的物理參數進行校驗,如果能通過CRC校驗,則認為獲得的 nandflash物理參數是正確的,識別過程結束,接下來可以使用nandflash物理參數進行后 續(xù)操作。否則,如果所有事先約定好的nandflash區(qū)域都讀不到正確的nandflash物理參 數(即CRC校驗無法通過),則認為這是一塊新的nandflash芯片,需要進行nandflash芯 片物理參數的識別過程,進而執(zhí)行步驟二。步驟二、首先識別nandflash芯片的page類型,主要識別兩部分data區(qū)大小和 spare區(qū)大小。data區(qū)大小和spare區(qū)大小的具體組合包括四種512+16 ;2048+64 ;4096+128 ; 4096+218。也就是說,page類型包括四種類型數據區(qū)大小為4096字節(jié)、預留區(qū)大小為218 字節(jié)類型的page ;數據區(qū)大小為4096字節(jié)、預留區(qū)大小為1 字節(jié)類型的page ;數據區(qū)大 小為2048字節(jié)、預留區(qū)大小為64字節(jié)類型的page ;數據區(qū)大小為512字節(jié)、預留區(qū)大小為 16字節(jié)類型的page。步驟三、識別nandflash芯片的物理結構是SLC結構還是MLC結構。采用的判斷依 據是是否支持多次編程(program),SLC結構的nandflash芯片支持多次program,而MLC 結構的nandflash芯片則不支持多次program。步驟四、識別nandflash芯片中每個block包括多少個page,總體包括對nandflash芯片的第一組特定page所在的塊block進行格式化;分別向第二組特定page寫入特定數據,然后格式化第0號page所在的block ;讀取第二組特定page中的數據,通過將讀取到的數據與所述特定數據進行比較, 確定nandflash芯片每個block包括的page數目。其中,所述第一組特定page和第二組特定page是預先根據nandflash芯片每個 block包括的page數目的種類確定的。步驟五、識別nandflash芯片中包括多少個block。具體地,可以采用特定位置格式化的方式來識別nandflash芯片的block數目,包 括第一步驟向第0號page寫入數據,該數據的大小可以設置為512個字節(jié),令參數 i = 1。參數i用來表示nandflash芯片包括的block數目是512的多少倍,因為,目前 nandflash芯片包括的block數目都是512的整數倍。第二步驟根據每個block包括的page數目,格式化第512*i個block。第三步驟讀取第0號page中的數據,比較讀取到的數據與寫入該第0號page中的數據是否相同,如果是,則令i = i+Ι,返回第二步驟,以此類推,直到判定從第0號page 中讀取的數據與寫入該第0號page中的數據不同,當然還可以為i設置一個最大的閾值, 在i小于該閾值的情況下,可以重復執(zhí)行第二步驟和第三步驟;否則,確定nandfIash芯片 包括 512*i 個 block。步驟六、確定最佳的timing,使用事先分析出的一些典型timing進行嘗試,嘗試 出一個能夠進行各種基本操作的最佳timing參數。timing參數包括兩個具體指標mandflash芯片的工作頻率,和時鐘(elk)的高電 平與低電平的比,即占空比。其中,所述典型timing,例如mandflash芯片的工作頻率為2M,elk的占空比為 1 2 ;或者,nandflash芯片的工作頻率為24M,clk的占空比為1 1 ;或者,nandfIash芯 片的工作頻率為32M,elk的占空比為2 3,等等。本發(fā)明實施例提供的確定nandflash芯片的最佳timing的總體步驟包括步驟A、從預先設置的多個timing參數中選擇滿足nandflash芯片讀寫條件的 timing 參數。其中,timing參數滿足nandf lash芯片讀寫條件,是指在采用該timing參數時, 對該nandflash芯片進行的讀、寫操作均成功。步驟B、從滿足nandflash芯片讀寫條件的timing參數中選擇一個nandflash芯 片工作頻率最高的timing參數,作為nandflash芯片的最佳timing參數。較佳地,步驟A包括按照預先設置的多個timing參數的從低到高的順序,依次選擇timing參數進行 是否滿足nandflash芯片讀寫條件的判斷。其中,所述多個timing參數的從低到高的順序,是預先按照每個timing參數中的 nandflash芯片工作頻率設置的?;蛘?,步驟A包括從預先設置的多個timing參數中選擇每個timing參數,分別進行是否滿足 nandflash芯片讀寫條件的判斷,記錄滿足nandflash芯片讀寫條件的timing參數。較佳地,判斷當前選擇的timing參數滿足nandflash芯片讀寫條件的步驟包括采用當前選擇的timing參數初始化閃存nandf lash芯片控制器,并重新啟動 nandflash Sj=T"。格式化第0號block,讀取第0號block中的數據。當從第0號block中讀取到的數據為Oxff時,向第0號block寫入特定數據,并 再次讀取第0號block中的數據。當從第0號block中再次讀取到的數據,與寫入該第0號block的特定數據相同 時,確定當前選擇的timing參數為滿足nandflash芯片讀寫條件的timing參數。步驟七、將識別出來的各種nandflash芯片物理參數,連同計算出來的CRC信息保 存在事先約定好的區(qū)域。上述步驟四、五不一定要在步驟二、三之后執(zhí)行,步驟六也不一定要在步驟四、五 之后執(zhí)行。步驟二、三的執(zhí)行與步驟四、五的執(zhí)行以及步驟六的執(zhí)行可以是并行的,相互之 間沒有必然的順序關系。
下面給出上述各個步驟的較佳的具體實施方式
。一、關于步驟一中確定nandflash芯片的預先約定區(qū)域是否存在該nandflash芯 片的物理參數的說明。由于要想識別出nandflash芯片,不可避免的要對nandflash芯片進行格式化,以 及寫處理,只憑讀是不可能實現的,這樣會破壞nandflash上原有的數據,這對于一個新的 nandflash來說沒有關系,但是對于之前使用過的nandflash芯片,上面的數據被破壞,會 導致文件系統、程序等出現故障。因此,一旦第一次識別出nandflash的物理參數信息,并 且基于這些參數在nandflash上存儲數據了,就能不再進行nandflash識別,只能讀取之前 存儲的nandflash芯片物理參數信息來使用nandflash。當前的對nandflash芯片進行基礎的page讀操作,按照兩種情況劃分為兩種 方式,page的數據區(qū)域是512bytes的一種512方式的讀操作,和page的數據區(qū)域大于 512bytes的另一種非512方式的讀操作(page的數據區(qū)域為2048或4096bytes的均采用 該種讀方式)。這讀操作最主要的區(qū)別是對于大于512bytes的nandflash的讀操作,比 對于等于512bytes的nandflash的讀操作,要多發(fā)一個命令,發(fā)的地址要多一位,因此操作 是不一樣的。nandflash每個block的最小容量是32個page,有的nandflash每個block還可 以包括64pages或者U8pages,而64、1觀分別是32的2倍和4倍。本發(fā)明實施例中,首先 假設每個blcok包括32個pages。嘗試讀取事先約定好的nandflash區(qū)域的nandflash物 理參數的具體流程如圖3所示(其中,假設約定區(qū)域為第0到第10個block的每個block 的第一個page),具體包括用I表示當前page的頁號,初始時,令I = 0,即從page 0開始,嘗試讀取 nandflash物理參數。重新啟動nandflash芯片(由于之前的錯誤嘗試可能會對nandflash芯片造成不 利影響,所以需要重新啟動nandflash芯片)。采用512方式讀取第I個page,并判斷是否讀正確,如果讀正確了,說明該 nandflash是512page類型,則進一步檢查數據是否有效(也許是一個新的nandflash,沒 有有效數據);否則,重新啟動nandflash芯片,采用非512方式讀取數據,并判斷是否讀正 確,如果讀正確了,則對讀到的數據進行CRC校驗,否則,設定新的page號,即令I = 1+32, 然后判斷當前需要讀的page是否超過約定范圍(第0到第10個block的每個block的第 一個page),約定范圍可以是320 (即I最大不能超過320),也可以是640 (即I最大不能 超過640),約定范圍越大,開機啟動的時間會越慢,如果沒有超過約定范圍則進行下一輪嘗 試,即對新的page I的讀嘗試;否則,結束。如果數據讀取成功,則對讀到的數據進行CRC校驗,在此之前,也就是把數據 從nandflash的某個page讀出來的過程中,同時會采用錯誤檢查和糾正(ECC,Error Checking and Correcting)的方式做一個錯誤糾正,但是對于不同ECC算法,有的ECC算法 并不一定能準確地檢查出錯誤的里德-索羅蒙(RS)碼,所以在數據讀取成功后,還需要進 行CRC校驗來檢查錯誤。如果CRC校驗通過,認為已經獲得了正確的nandflash物理參數 信息,退出嘗試讀取nandflash約定區(qū)域數據的操作。如果CRC校驗結果顯示錯誤,則設定新的page號,即令I = 1+32,進行下一輪嘗試,即對新的page I的讀嘗試。如果在約定的范圍嘗試均失敗,則退出嘗試,返回嘗試失敗。二、關于步驟二中識別nandflash芯片的page類型的說明。目前 nandflash 芯片的 page 類型有四種512+16 ;2048+64 ;4096+128 ;4096+218。采用在不同的字節(jié)范圍寫入不同數據,然后分別讀出寫入的數據,比對在同一字 節(jié)范圍寫入和讀出的數據的方式來對page類型進行判斷。對于page的寫入操作,512page 的nandflash芯片和非512page的nandflash芯片是一致的。page類型判斷的具體流程如圖4所示,包括組織一個數據樣本,即組織一個page大小的數據,較佳地,可以按照目前一個 page最大為4096+218字節(jié),組織一個4096+218字節(jié)(即4314字節(jié))大小的數據樣本。用M表示當前嘗試判斷page類型的次數,M初始值為1。分別在多個特定字節(jié)區(qū)域,即第0-527號字節(jié)區(qū)域、第528-2111號字節(jié)區(qū)域、第 2112-4313號字節(jié)區(qū)域,寫入不同的數據內容,例如分別寫入0X00、0X0f、0Xf0。然后,從第0號字節(jié)開始,連續(xù)讀取4096+218個字節(jié)(即4314個字節(jié))的數據 (如果nandflash芯片page沒有那么大,將讀到不定的數據,而不是OxfO),實際就是從第1 個字節(jié)開始,連續(xù)讀取4314個字節(jié)的數據。字節(jié)一般都是從0開始編號,所以,從第0號字 節(jié)開始,連續(xù)讀4314個字節(jié),實際上是讀第0號到第4313號字節(jié)。然后,進行下列判斷判斷從第42M-4313號字節(jié)區(qū)域讀取到的數據是否為OxfO,如果是,則判定page 類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為218字節(jié)類型的page,跳出判斷流程;否則,判斷從第2112-4223號字節(jié)區(qū)域讀取到的數據是否為OxfO,如果是,則判定page 類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為1 字節(jié)類型的page,跳出判斷流程;否則,判斷從第5觀_2111號字區(qū)域節(jié)讀取到的數據是否為OxOf,如果是,則判定page類 型為數據區(qū)大小為2048字節(jié)、預留區(qū)大小為64字節(jié)類型的page,跳出判斷流程;否則,判斷從第0-527號字節(jié)區(qū)域讀取到的數據是否為0x0,如果是,則判定page類型為 數據區(qū)大小為512字節(jié)、預留區(qū)大小為16字節(jié)類型的page,跳出判斷流程;否則,令嘗試的次數M = M+1,然后判斷當前嘗試的次數是否太多,即判斷當前嘗試的次 數M是否超過預設的閾值(具體值可以根據實際需要進行設置),如果是,則結束操作,返回 物理連接錯誤;否則,繼續(xù)下一次嘗試,即返回分別在第0-527號字節(jié)區(qū)域、第528-2111號 字節(jié)區(qū)域、第2112-4313號字節(jié)區(qū)域,寫入不同的數據內容的步驟,并進行后續(xù)操作,以此 類推,直到識別出page類型,或者嘗試的次數M超過預設的閾值,返回物理連接錯誤。其中,判斷當前嘗試的次數M是否超過預設的閾值的步驟也可以不執(zhí)行。三、關于步驟三中識別nandflash芯片的物理結構的說明。本發(fā)明實施例識別nandflash芯片的物理結構是SLC物理結構還是MLC物理結 構,主要基于SLC物理結構的nandflash,對于每個page可以進行多次page的program寫 操作,而MLC物理結構的nandflash,對于每個page只能進行單次page的program寫操作?;诓襟E二中已經識別出了 nandflash芯片的page類型,即確定了每個page的 數據區(qū)和預留區(qū)的大小,在步驟三中可以進行以下操作 重新啟動nandflash芯片; 對任意一個page (假設是page I)的一部分數據區(qū)域(例如可以是前半個)進行一次寫操作,寫入特定數據;重新啟動nandflash芯片;對該page I的另一部分數據區(qū)域(例如可以是后半個)進行一次寫操作,寫入特 定數據;重新啟動nandflash芯片;將該page I的整個page的數據讀出來;比較該page I的后半個數據區(qū)域的數據是否是寫入的特定數據,如果是,則確定 該nandflash芯片是SLC物理結構的nandflash芯片;否則,確定該nandflash芯片是MLC 物理結構的nandflash芯片。四、關于步驟四中識別nandflash芯片每個block有多少個page的說明。本發(fā)明實施例基于nandflash芯片的block格式化特性(即按照輸入的page號 所在的block來進行格式化),識別每個block有多少個page。目前,nandflash芯片每個block包括的page數目有五種16,32,64,128,256。本 發(fā)明實施例提供的識別nandflash芯片每個block包括的page數目的具體流程如圖5所 示,包括格式化第0、64、1沘、256、512號?386(即第一組特定?&86)所在的block ;向第31、63、127、255、511號page(即第二組特定page)寫入特定數據,其中,向第 31、63、127、255、511號page寫入的特定數據可以相同,也可以不相同;格式化第0號page所在的block,也就是說格式化第0號block (則第0號block 中的所有page均被格式化);需要說明的是,第0-15號page中的任一 page所在的block肯定是第0號block, 因此可以格式化第0-15號page中的任一 page所在的block ;讀取第31號page的數據內容,比較讀出的數據和寫入該第31號page的數據,如 果相同,則說明第31號page不屬于第0號page所在的block,因此可以確定每個block只 能有16個pages,結束判斷;否則,讀取第63號page的數據內容,比較讀出的數據和寫入該第63號page的數據,如 果相同,則說明第63號page不屬于第0號page所在的block,但是第31號page屬于第0 號page所在的block,因此可以確定每個block只能有32個pages,結束判斷;否則,讀取第127號page的數據內容,比較讀出的數據和寫入該第127號page的數據, 如果相同,則說明第127號page不屬于第0號page所在的block,但是第63號page屬于 第0號page所在的block,因此可以確定每個block只能有64個pages,結束判斷;否則,讀取第255號page的數據內容,比較讀出的數據和寫入該第255號page的數據, 如果相同,則說明第255號page不屬于第0號page所在的block,但是第127號page屬于 第0號page所在的block,因此可以確定每個block只能有127個pages,結束判斷;否則,讀取第511號page的數據內容,比較讀出的數據和寫入該第511號page的數據, 如果相同,則說明第511號page不屬于第0號page所在的block,但是第255號page屬 于第0號page所在的block,因此可以確定每個block只能有256個pages,結束判斷;否 則,結束判斷。五、關于步驟五中識別nandflash芯片包括多少個block的說明。
由于在步驟四中已經對第0號page所在的block進行了格式化,因此,步驟五中 可以不再對第0號page所在的block進行格式化。那么,確定nandflash芯片每個block包括的page數目之后,識別nandflash芯 片包括多少個block的具體流程參見圖6,包括S601、格式化第0號page所在的block。S602、向第0號page寫入數據,該數據的大小可以設置為512個字節(jié),令參數i = 1。S603、根據每個block包括的page數目,格式化第512*i個block。S604、讀取第0號page中的數據。S605、比較從第0號page中讀取到的數據與寫入該第0號page中的數據是否相 同,如果是,則執(zhí)行步驟S606 ;否則,執(zhí)行步驟S608。S606、令 i = i+l。S607、判斷i是否小于閾值64,如果是,則執(zhí)行步驟S603,否則結束。由于,目前還沒有512*64 = 32768個block的nandflash,因此,可以判斷i是否 小于64,如果今后出現了大于32768個block的nandflash,當然閾值也可以擴大,而不局 限于64。S608、確定 nandflash 芯片包括 512*i 個 block。六、關于步驟六中確定最佳timing的說明。本發(fā)明實施例使用事先設置的一些典型timing逐個進行嘗試,嘗試出一個能夠 進行各種基本操作的較佳的timing參數。例如nandflash芯片的工作頻率為2M、4M、8M、12M、16M、24MJ8M、32M、36M、40M 等等;elk的占空比可以是1 1、1 2、1 3、2 3等等。本發(fā)明實施例可以預先將nandflash芯片的工作頻率和elk的占空比任意組合成 一個timing參數,得到多個timing參數,每個timing參數包括一個nandflash芯片的工 作頻率,以及一個elk的占空比。預先按照nandflash芯片的工作頻率的從低到高,對預先設置的多個timing參數 按照從低到高的順序進行排序,其中,對于工作頻率相同,占空比不同的timing參數的排 序,先后順序無特定要求,可以任意排序。那么,確定nandflash芯片最佳timing參數的具體流程如圖7所示,包括從最低的timing開始依次選擇一個timing參數進行如下嘗試,直到確定 nandflash芯片最佳timing參數使用當前選定的timing初始化nandflash控制器,并重新啟動nandflash芯片;格式化第0號block,即第一個block (對于nandflash,任一 block被格式化以后, 該block里面的數據全部是Oxff);讀取第0號block的數據;檢測第0號block的數據是否全部是Oxff ;如果第0號block的數據不是Oxff,則說明讀取數據失敗,當前選定的timing 無效,如果之前記錄有嘗試成功的timing,則使用之前嘗試成功的最高的timing作為 nandflash芯片最佳timing參數,結束嘗試;
如果第0號block的數據全是Oxff,則說明在當前選定的timing下,數據讀取的 操作可以成功,需要進一步判斷數據寫入的操作是否也可以成功,則向第0號block寫入特 定數據;將第0號block的數據讀出來,比較讀出的數據和寫入的數據;如果從第0號block讀出的數據和寫入第0號block的數據相等,則說明當前選 定的timing可以使用(寫進去的數據和讀出來的數據一致,才能說明在當前選定的timing 下讀寫都是成功的,該timing有效),并記錄下來,然后采用下一個timing參數作為當前選 定的timing繼續(xù)進行嘗試;如果從第0號block讀出的數據和寫入第0號block的數據不相等,則說明當前 選定的timing無效,如果之前記錄有嘗試成功的timing,則使用之前嘗試成功的最高的 timing作為nandflash芯片最佳timing參數,結束嘗試。另外,在實際操作中,也可以不對預先設置的多個timing參數進行排序,可以將 這些timing參數逐一進行嘗試,并記錄嘗試成功的timing參數,最后從嘗試成功的timing 參數中,選擇最高的timing參數(即nandflash芯片的工作頻率最高)作為最為nandflash 芯片的最佳timing參數。其中,最高的timing參數可能有多個,也就是說,nandflash芯片 的工作頻率最高的timing參數(其中每個timing參數的時鐘占空比不同)可能有多個, 可以從中任意選擇一個timing參數作為最佳timing參數。七、關于步驟七中記錄識別出的nandflash芯片物理參數信息的說明。為了避免下一次繼續(xù)采用本發(fā)明實施例提供的技術方案識別nandflash芯片的 物理參數信息造成的數據破壞,需要將已經識別出的nandflash芯片物理參數信息記錄在 nandflash芯片預先約定好的區(qū)域。進一步,為了提高信息的安全可靠性,可以記錄多份拷貝,比如,在前10個block 中,每個block的第0個page都記錄識別出的nandflash芯片物理參數信息(nandflash 芯片一般只會壞一個block)。另外,為了進一步確保數據的正確性,可以采用ECC糾錯和CRC檢錯的雙重保護。下面介紹一下本發(fā)明實施例提供的系統。參見圖8,本發(fā)明實施例提供的一種芯片參數的識別系統,包括初始判定單元21,用于在page類型識別單元22分別向nandflash芯片的多 個特定字節(jié)區(qū)域寫入不同的數據之前,確定nandflash芯片的預先約定區(qū)域是否存在該 nandflash芯片的物理參數。page類型識別單元22,用于分別向nandflash芯片的多個特定字節(jié)區(qū)域寫入不同 的數據,其中,特定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定的;讀取特 定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數據進行比較,確 定nandflash芯片的page類型。物理結構識別單元23,用于重新啟動nandflash芯片,向一個page的一部分數 據區(qū)域寫入特定數據;重新啟動nandflash芯片,向該page的另一部分數據區(qū)域寫入特 定數據;重新啟動nandflash芯片,讀取該page的全部數據;比較從所述另一部分數據 區(qū)域讀取到的數據,與向該部分數據區(qū)域寫入的特定數據是否相同,如果是,則確定所述 nandflash芯片的物理結構為單級單元SLC物理結構;否則,確定所述nandflash芯片的物
14理結構為多級單元MLC物理結構。page數目識別單元對,用于對nandflash芯片的多個特定page所在的塊block 進行格式化,其中,所述特定page是預先根據nandflash芯片每個block包括的page數目 的種類確定的;分別向特定page寫入特定數據,然后格式化第0號page所在的block ;讀 取特定page中的數據,通過將讀取到的數據與所述特定數據進行比較,確定nandflash芯 片每個block包括的page數目。block數目識別單元25,用于識別nandflash芯片的block數目。timing參數識別單元沈,用于從預先設置的多個timing參數中選擇滿足閃存 nandflash芯片讀寫條件的timing參數;其中,timing參數滿足nandflash芯片讀寫 條件,是指在采用該timing參數時,對該nandflash芯片進行的讀、寫操作均成功;從滿 足nandflash芯片讀寫條件的timing參數中選擇一個nandflash芯片工作頻率最高的 timing參數,作為nandflash芯片的最佳timing參數。其中,初始判定單元21不是必需的。如果初始判定單元21不存在,page類型識 別單元22和物理結構識別單元23也可以獨立工作;page數目識別單元M和block數目 識別單元25也可以獨立工作;timing參數識別單元沈也可以獨立工作。較佳地,參見圖9,page類型識別單元22包括特定字節(jié)區(qū)域寫入單元11,用于分別向nandflash芯片的多個特定字節(jié)區(qū)域寫入 不同的數據,其中,特定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定的。特定字節(jié)區(qū)域讀取單元12,用于讀取特定字節(jié)區(qū)域中的數據。比較單元13,用于通過將從特定字節(jié)區(qū)域中讀取到的數據與寫入該特定字節(jié)區(qū)域 中的數據進行比較,確定nandflash芯片的page類型。較佳地,所述特定字節(jié)區(qū)域寫入單元11,分別向nandflash芯片的第0_527號字節(jié) 區(qū)域、第528-2111號字節(jié)區(qū)域、第2112-4313號字節(jié)區(qū)域寫入不同的數據。較佳地,所述特定字節(jié)區(qū)域讀取單元12,從第0號字節(jié)開始,連續(xù)讀取4314個字節(jié) 的數據;所述比較單元13包括第一判斷單元131,用于判斷從第42M-4313號字節(jié)區(qū)域讀取到的數據是否為寫 入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的page類型為數據區(qū)大小為4096字 節(jié)、預留區(qū)大小為218字節(jié)類型的page ;否則,觸發(fā)第二判斷單元132 ;第二判斷單元132,用于根據所述第一判斷單元131的觸發(fā),判斷從第2112-4223 號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片 的page類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為1 字節(jié)類型的page ;否則,觸發(fā)第 三判斷單元133 ;第三判斷單元133,用于根據所述第二判斷單元132的觸發(fā),判斷從第528-2111號 字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的 page類型為數據區(qū)大小為2048字節(jié)、預留區(qū)大小為64字節(jié)類型的page ;否則,觸發(fā)第四判 斷單元134 ;第四判斷單元134,用于根據所述第三判斷單元133的觸發(fā),判斷從第0_527號 字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的page類型為數據區(qū)大小為512字節(jié)、預留區(qū)大小為16字節(jié)類型的page。較佳地,所述第四判斷單元134,進一步用于當判定從第0-527號字節(jié)區(qū)域讀取到 的數據與寫入該字節(jié)區(qū)域的數據不同時,觸發(fā)所述特定字節(jié)區(qū)域寫入單元11重新分別向 所述多個特定字節(jié)區(qū)域寫入不同的數據。較佳地,參見圖10,block數目識別單元25包括第一單元251,用于向第0號page寫入數據,令參數i = 1。第二單元252,用于根據每個block包括的page數目,格式化第512*i個block。第三單元253,用于讀取第0號page中的數據,比較讀取到的數據與寫入該第 0號page中的數據是否相同,如果是,則令i = i+Ι,然后觸發(fā)第二單元252 ;否則,確定 nandflash 芯片包括 512*i 個 block。綜上所述,本發(fā)明實施例通過遍歷式的嘗試,逐步識別出未知nandflash芯片的 各項物理參數,使得開發(fā)人員在一定程度上擺脫了對datasheet技術文檔的依賴,通過將 識別出的物理參數信息保存在nandflash芯片上,廠家不用不斷更新nandflash芯片的參數表。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內,則本發(fā)明也意圖包含這些改動和變型在內。
權利要求
1.一種芯片參數的識別方法,其特征在于,該方法包括分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫入不同的數據,其中,所述特定字 節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定的;讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數據進 行比較,確定nandflash芯片的page類型。
2.根據權利要求1所述的方法,其特征在于,分別向nandflash芯片的多個特定字節(jié)區(qū) 域寫入不同的數據的步驟包括分別向nandflash芯片的第0-527號字節(jié)區(qū)域、第528-2111號字節(jié)區(qū)域、第2112-4313 號字節(jié)區(qū)域寫入不同的數據;讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數據進 行比較,確定nandflash芯片的page類型的步驟包括從第0號字節(jié)開始,連續(xù)讀取4314個字節(jié)的數據;判斷從第42M-4313號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果 是,則確定nandflash芯片的page類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為218字節(jié) 類型的page ;否則,判斷從第2112-4223號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果 是,則確定nandflash芯片的page類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為1 字節(jié) 類型的page ;否則,判斷從第528-2111號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是, 則確定nandflash芯片的page類型為數據區(qū)大小為2048字節(jié)、預留區(qū)大小為64字節(jié)類型 的page ;否則,判斷從第0-527號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則 確定nandflash芯片的page類型為數據區(qū)大小為512字節(jié)、預留區(qū)大小為16字節(jié)類型的page。
3.根據權利要求2所述的方法,其特征在于,當從第0-527號字節(jié)區(qū)域讀取到的數據與 寫入該字節(jié)區(qū)域的數據不同時,重新分別向所述多個特定字節(jié)區(qū)域寫入不同的數據,并讀 取特定字節(jié)區(qū)域中的數據,將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數據進行比較,直 到確定nandflash芯片的page類型。
4.根據權利要求1-3任一權項所述的方法,其特征在于,確定nandflash芯片的page 類型之后,該方法還包括重新啟動nandflash芯片,向一個page的一部分數據區(qū)域寫入特定數據;重新啟動nandflash芯片,向該page的另一部分數據區(qū)域寫入特定數據;重新啟動nandflash芯片,讀取該page的全部數據;比較從所述另一部分數據區(qū)域讀取到的數據,與向該部分數據區(qū)域寫入的特定數據是 否相同,如果是,則確定所述nandflash芯片的物理結構為單級單元SLC物理結構;否則,確 定所述nandflash芯片的物理結構為多級單元MLC物理結構。
5.根據權利要求1所述的方法,其特征在于,該方法還包括對nandflash芯片的第一組特定page所在的塊block進行格式化;分別向第二組特定page寫入特定數據,然后格式化第0號page所在的block ;讀取所述第二組特定page中的數據,通過將讀取到的數據與所述特定數據進行比較, 確定nandflash芯片每個block包括的page數目;其中,所述第一組特定page和第二組特定page是預先根據nandflash芯片每個block 包括的page數目的種類確定的。
6.根據權利要求5所述的方法,其特征在于,確定nandflash芯片每個block包括的 page數目之后,該方法還包括步驟一向第0號page寫入數據,令參數i = 1 ;步驟二 根據每個block包括的page數目,格式化第512*i個block ;步驟三讀取第0號page中的數據,比較讀取到的數據與寫入該第0號page中的數 據是否相同,如果是,則令i = i+Ι,返回步驟二 ;否則,確定nandflash芯片包括512*i個 block。
7.根據權利要求1所述的方法,其特征在于,該方法還包括從預先設置的多個時間timing參數中選擇滿足nandflash芯片讀寫條件的timing參數;其中,timing參數滿足nandflash芯片讀寫條件,是指在采用該timing參數時,對該 nandflash芯片進行的讀、寫操作均成功;從滿足nandflash芯片讀寫條件的timing參數中選擇一個nandflash芯片工作頻率 最高的timing參數,作為nandflash芯片的最佳timing參數。
8.根據權利要求1所述的方法,其特征在于,在分別向nandflash芯片的多個特定字節(jié) 區(qū)域寫入不同的數據之前,該方法還包括確定所述nandflash芯片的預先約定區(qū)域是否存在該nandflash芯片的物理參數。
9.一種芯片參數的識別系統,其特征在于,該系統包括page類型識別單元,該page類 型識別單元包括特定字節(jié)區(qū)域寫入單元,用于分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫入 不同的數據,其中,所述特定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定 的;特定字節(jié)區(qū)域讀取單元,用于讀取特定字節(jié)區(qū)域中的數據;比較單元,用于通過將從特定字節(jié)區(qū)域中讀取到的數據與寫入該特定字節(jié)區(qū)域中的數 據進行比較,確定nandflash芯片的page類型。
10.根據權利要求9所述的系統,其特征在于,所述特定字節(jié)區(qū)域寫入單元,分別向 nandflash芯片的第0-527號字節(jié)區(qū)域、第528-2111號字節(jié)區(qū)域、第2112-4313號字節(jié)區(qū)域 寫入不同的數據;所述特定字節(jié)區(qū)域讀取單元,從第0號字節(jié)開始,連續(xù)讀取4314個字節(jié)的數據;所述比較單元包括第一判斷單元,用于判斷從第42M-4313號字節(jié)區(qū)域讀取到的數據是否為寫入該字節(jié) 區(qū)域的數據,如果是,則確定nandflash芯片的page類型為數據區(qū)大小為4096字節(jié)、預留 區(qū)大小為218字節(jié)類型的page ;否則,觸發(fā)第二判斷單元;第二判斷單元,用于根據所述第一判斷單元的觸發(fā),判斷從第2112-4223號字節(jié)區(qū)域 讀取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的page類型為數據區(qū)大小為4096字節(jié)、預留區(qū)大小為1 字節(jié)類型的page ;否則,觸發(fā)第三判斷單元;第三判斷單元,用于根據所述第二判斷單元的觸發(fā),判斷從第528-2111號字節(jié)區(qū)域讀 取到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的page類型為 數據區(qū)大小為2048字節(jié)、預留區(qū)大小為64字節(jié)類型的page ;否則,觸發(fā)第四判斷單元;第四判斷單元,用于根據所述第三判斷單元的觸發(fā),判斷從第0-527號字節(jié)區(qū)域讀取 到的數據是否為寫入該字節(jié)區(qū)域的數據,如果是,則確定nandflash芯片的page類型為數 據區(qū)大小為512字節(jié)、預留區(qū)大小為16字節(jié)類型的page。
11.根據權利要求10所述的系統,其特征在于,所述第四判斷單元,進一步用于當判定 從第0-527號字節(jié)區(qū)域讀取到的數據與寫入該字節(jié)區(qū)域的數據不同時,觸發(fā)所述特定字節(jié) 區(qū)域寫入單元重新分別向所述多個特定字節(jié)區(qū)域寫入不同的數據。
12.根據權利要求9-11任一權項所述的系統,其特征在于,該系統還包括物理結構識別單元,用于重新啟動nandflash芯片,向一個page的一部分數據區(qū)域寫 入特定數據;重新啟動nandflash芯片,向該page的另一部分數據區(qū)域寫入特定數據;重 新啟動nandflash芯片,讀取該page的全部數據;比較從所述另一部分數據區(qū)域讀取到的 數據,與向該部分數據區(qū)域寫入的特定數據是否相同,如果是,則確定所述nandflash芯片 的物理結構為單級單元SLC物理結構;否則,確定所述nandflash芯片的物理結構為多級單 元MLC物理結構。
13.根據權利要求9所述的系統,其特征在于,該系統還包括page數目識別單元,用于對nandflash芯片的多個特定page所在的塊block進行格 式化,其中,所述特定page是預先根據nandflash芯片每個block包括的page數目的種類 確定的;分別向特定page寫入特定數據,然后格式化第0號page所在的block ;讀取特定 page中的數據,通過將讀取到的數據與所述特定數據進行比較,確定nandflash芯片每個 block包括的page數目。
14.根據權利要求13所述的系統,其特征在于,該系統還包括block數目識別單元,該 block數目識別單元包括第一單元,用于向第0號page寫入數據,令參數i = 1 ;第二單元,用于根據每個block包括的page數目,格式化第512*i個block ;第三單元,用于讀取第0號page中的數據,比較讀取到的數據與寫入該第0號page中 的數據是否相同,如果是,則令i = i+Ι,然后觸發(fā)第二單元;否則,確定nandflash芯片包 括 512*i 個 block。
15.根據權利要求9所述的系統,其特征在于,該系統還包括timing參數識別單元,用于從預先設置的多個timing參數中選擇滿足閃存nandflash 芯片讀寫條件的timing參數;其中,timing參數滿足nandflash芯片讀寫條件,是指在采 用該timing參數時,對該nandflash芯片進行的讀、寫操作均成功;從滿足nandflash芯 片讀寫條件的timing參數中選擇一個nandflash芯片工作頻率最高的timing參數,作為 nandflash芯片的最佳timing參數。
16.根據權利要求9所述的系統,其特征在于,該系統還包括初始判定單元,用于在所述page類型識別單元分別向nandflash芯片的多個特定 字節(jié)區(qū)域寫入不同的數據之前,確定所述nandflash芯片的預先約定區(qū)域是否存在該nandflash芯片的物理參數。
全文摘要
本發(fā)明公開了一種芯片參數的識別方法及系統,用以識別nandflash芯片的物理參數。本發(fā)明提供的一種芯片參數的識別方法包括分別向閃存nandflash芯片的多個特定字節(jié)區(qū)域寫入不同的數據,其中,所述特定字節(jié)區(qū)域是預先根據nandflash芯片的各種頁page類型確定的;讀取特定字節(jié)區(qū)域中的數據,通過將讀取到的數據與寫入該特定字節(jié)區(qū)域中的數據進行比較,確定nandflash芯片的page類型。
文檔編號G11C16/20GK102103891SQ20091024288
公開日2011年6月22日 申請日期2009年12月18日 優(yōu)先權日2009年12月18日
發(fā)明者凌明 申請人:無錫中星微電子有限公司