專利名稱::一種基于nandflash的電子盤及其運行控制方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及電子盤,更具體地說,涉及一種基于NANDFLASH的電子盤及其運行控制方法。
背景技術(shù):
:普通硬盤的工作機理是電機帶動硬盤盤片高速旋轉(zhuǎn),通過磁頭臂的擺動讀取盤片數(shù)據(jù)。在工業(yè)控制和軍事領(lǐng)域應(yīng)用中,由于機械振動、粉塵、溫度變化等的影響,硬盤很容易出故障而不能正常使用。而且普通硬盤接口復(fù)雜,體積大。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的普通硬盤防機械振動、粉塵、溫度變化性能差,以及接口復(fù)雜,體積大等缺陷,提供一種基于NANDFLASH的電子盤及其運行控制方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是構(gòu)造一種基于NANDFLASH的電子盤,包括NANDFLASH芯片和FPGA控制器,其中,F(xiàn)PGA控制器用于實現(xiàn)ISA總線與NANDFLASH芯片之間的數(shù)據(jù)交換,以及ISA總線對NANDFLASH的讀寫控制;計算機操作系統(tǒng)固化在NANDFLASH芯片中。在本發(fā)明所述的基于NANDFLASH的電子盤中,所述FPGA控制器包括ISA總線接口,用于讀取ISA總線發(fā)送的數(shù)據(jù)和控制信號,同時向ISA總線發(fā)送NANDFLASH芯片的數(shù)據(jù)和狀態(tài)信息;擴展R0M,用于存儲擴展的BIOS數(shù)據(jù);讀寫控制器,用于根據(jù)NANDFLASH芯片的控制時序,向NANDFLASH芯片提供控制信號,并讀取NANDFLASH芯片的狀態(tài)信息。在本發(fā)明所述的基于NANDFLASH的電子盤中,所述讀寫控制器包括寫操作模塊,用于將ISA總線發(fā)送的數(shù)據(jù)寫入NANDFLASH芯片,并反饋寫操作狀態(tài);讀操作模塊,用于讀取NANDFLASH芯片發(fā)送的數(shù)據(jù),并反饋讀操作狀態(tài);塊刪除模塊,用于根據(jù)ISA總線發(fā)送的控制信號,刪除NANDFLASH芯片中相應(yīng)的塊地址內(nèi)的存儲單元;ID識別模塊,用于讀取NANDFLASH芯片的ID號;在本發(fā)明所述的基于NANDFLASH的電子盤中,所述讀寫控制器還包括錯誤控制模塊,用于發(fā)現(xiàn)和糾正NANDFLASH芯片中數(shù)據(jù)的比特錯誤。在本發(fā)明所述的基于NANDFLASH的電子盤中,所述讀寫控制器還包括壞塊管理模塊,用于實現(xiàn)NANDFLASH芯片內(nèi)邏輯塊和物理塊間的有效映射,以便各邏輯塊對應(yīng)到無缺陷的物理塊。根據(jù)本發(fā)明的另一個方面,提供一種基于NANDFLASH的電子盤的運行控制方法,3包括以下步驟SI:系統(tǒng)上電,BIOS搜索ROM擴展碼,如果搜索到,進入步驟S2,否則,進入步驟S5;S2:執(zhí)行NANDFLASH芯片的啟動信息代碼;S3:將INT13H的中斷向量改為NANDFLASH芯片的中斷向量;S4:調(diào)用NANDFLASH芯片的INT13H的中斷處理程序,對NANDFLASH芯片進行讀寫控制;S5:結(jié)束。在本發(fā)明基于NANDFLASH的電子盤的運行控制方法中,所述步驟S2包括S21:將NANDFLASH芯片的驅(qū)動代碼搬移到與大小相配合的存儲器執(zhí)行空間;S22:釋放NANDFLASH芯片的映射空間。在本發(fā)明基于NANDFLASH的電子盤的運行控制方法中,在所述步驟S3中還包括保存INT13H的原中斷向量。在本發(fā)明基于NANDFLASH的電子盤的運行控制方法中,在所述步驟S4中的讀寫控制包括對NANDFLASH芯片進行ID識別、讀操作、寫操作、塊管理、塊檢測和塊刪除。實施本發(fā)明的基于NANDFLASH的電子盤及其運行控制方法,具有以下有益效果在工業(yè)控制和軍事領(lǐng)域應(yīng)用中,能有效地防止機械振動、粉塵、溫度變化等的影響,而且該電子盤采用簡化的ISA接口,體積小,直接焊接到系統(tǒng)電路板,接觸可靠,便于嵌入式工控的應(yīng)用,由于該電子盤采用半導(dǎo)體制成,與普通硬盤相比其壽命大大提高,另外,將本發(fā)明的電子盤應(yīng)用于工業(yè)計算機系統(tǒng)時,由于操作系統(tǒng)是固化在NANDFLASH芯片中,當有病毒入侵系統(tǒng)時,不能對操作系統(tǒng)進行任何修改,有效地防止了病毒的侵入。下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是本發(fā)明基于NANDFLASH的電子盤的電路原理框圖2是本發(fā)明基于NANDFLASH的電子盤的運行控制方法的流程圖3是本發(fā)明基于NANDFLASH的電子盤的映射電子的示意圖。具體實施例方式近年來,隨著NANDFLASH閃存芯片技術(shù)的進步,NANDFLASH芯片的價格不斷走低,單芯片容量目前可以做到4GB甚至更高;基于NANDFLASH的電子盤(DOC)由于其防振動、體積小、低功耗等固有的優(yōu)點,在工業(yè)控制、移動多媒體等應(yīng)用方面完全可以取代硬盤等存儲媒體。本方案采用FPGA實現(xiàn)NANDFLASH控制器,配合BIOS擴展程序一起實現(xiàn)電子盤(DISKONCHIP,DOC)的功能,取代硬盤完成各種計算機的啟動、運行和數(shù)據(jù)存儲處理功能。如圖1所示,在本發(fā)明的基于NANDFLASH的電子盤中,包括NANDFLASH芯片和FPGA控制器,其中,計算機操作系統(tǒng)固化在NANDFLASH芯片中,該FPGA控制器包括ISA總線接口、擴展ROM、讀寫控制器;該讀寫控制器又包括、寫操作模塊、讀操作模塊、塊刪除模塊、ID識別模塊、錯誤控制模塊和壞塊管理模塊;FPGA控制器在DOC系統(tǒng)中是底層的執(zhí)行單元,它要實現(xiàn)的功能為接收/發(fā)送ISA總線數(shù)據(jù)、實現(xiàn)對NANDFLASH芯片的寫操作、實現(xiàn)對NANDFLASH芯片的讀操作、塊刪除操作、壞塊識別、讀NANDFLASH芯片的ID、對NANDFLASH芯片的復(fù)位。主機通過ISA總線訪問電子盤,該電子盤采用FPGA芯片實現(xiàn)ISA總線接口、擴展ROM和讀寫控制器;ISA總線接口讀寫控制命令譯碼,擴展BIOS程序存儲在擴展ROM內(nèi)。FPGA控制器的功能為a、DOC復(fù)位,由于ISA接口未提供復(fù)位信號,向命令寄存器寫OOH,復(fù)位讀寫控制器;b、NANDFLASH芯片復(fù)位,向命令寄存器寫06H,復(fù)位NANDFLASH芯片;c、讀NANDFLASH芯片的ID碼,向命令寄存器寫05H,讀ID寄存器值;d、擦除NANDFLASH芯片的塊,向命令寄存器寫03H,向地址寄存器內(nèi)寫入NANDFLASH芯片的塊地址,向地址結(jié)束碼寄存器寫入地址結(jié)束碼,讀狀態(tài)寄存器,BIT6二l時BITO二O,擦除成功,BITO二l,擦除失??;e、讀NANDFLASH芯片,向命令寄存器寫02H或22H(用此命令讀SLC芯片的備用區(qū)域數(shù)據(jù)),向地址寄存器內(nèi)寫入NANDFLASH芯片的地址,向地址結(jié)束碼寄存器寫入地址結(jié)束碼,讀狀態(tài)寄存器,BIT6=1時,依次讀出各個字節(jié),讀完數(shù)據(jù)后向讀寫數(shù)據(jù)結(jié)束寄存器發(fā)送讀結(jié)束命令;f、寫NANDFLASH芯片,向命令寄存器寫01H,向地址寄存器內(nèi)寫入NAND的FLASH芯片的地址,向地址結(jié)束碼寄存器寫入地址結(jié)束碼,向數(shù)據(jù)寄存器依次寫入數(shù)據(jù),寫完數(shù)據(jù)向讀寫數(shù)據(jù)結(jié)束寄存器發(fā)送讀結(jié)束命令,讀狀態(tài)寄存器,BIT6=1時BITO=O,寫成功,BITO=l,寫失敗。另外,讀寫控制器的寄存器包括命令寄存器(偏移地址1FF0):主機通過ISA總線寫命令,用以控制DOC;地址寄存器(偏移地址1FF1):主機通過ISA總線寫NANDFLASH芯片的地址;地址結(jié)束碼寄存器(偏移地址1FF2):地址碼發(fā)送完成碼,SLC和MLC的NANDFLASH芯片有不同的結(jié)束碼;數(shù)據(jù)寄存器(偏移地址1FF4):讀寫NANDFLASH芯片的數(shù)據(jù);讀寫數(shù)據(jù)結(jié)束寄存器(偏移地址1FF5):完成數(shù)據(jù)讀寫;NANDFLASH芯片的狀態(tài)寄存器(偏移地址1FF6):操作狀態(tài)寄存器;ID寄存器1(偏移地址1FF7):廠家ID;ID寄存器2(偏移地址1FF8):器件ID;ID寄存器3(偏移地址1FF9):器件內(nèi)部描述;ID寄存器4(偏移地址1FFA):器件內(nèi)部描述。ISA接口是NANDFLASH芯片與ISA總線間的橋梁,它負責獲取來自ISA的數(shù)據(jù)與控制信號,并將數(shù)據(jù)及控制信號傳給FPGA控制器的內(nèi)部模塊;同時也負責將來自FPGA控制器的內(nèi)部的數(shù)據(jù)與狀態(tài)信息送到ISA總線。其接口定義信號如下表1:名稱方向描述ADD_DOC(12downtoO)輸入DOC地址輸入Data—DOC(7downto0)輸入/輸出DOC的數(shù)據(jù)輸入/輸出WE—DOC輸入DOC的寫信號OE—DOC輸入DOC的讀信號CE—DOC輸入DOC的片選信號表1擴展ROM在上位機啟動時工作,其中ROM—共有8K,BIOS在上位機啟動時來讀取這8K的數(shù)據(jù),其信號如下表2:<table>tableseeoriginaldocumentpage6</column></row><table>表2讀寫控制器是按照NANDFLASH芯片的控制時序,給外接的NANDFLASH芯片提供控制信號,并從NANDFLASH芯片獲取狀態(tài)信息,從而實現(xiàn)對NANDFLASH芯片的各項操作。讀寫控制器內(nèi)部包括六個獨立的子模塊,它們分別為a、寫操作模塊,該模塊負責將PC傳送來的數(shù)據(jù)寫入NANDFLASH芯片中,并負責向上位機傳回寫操作狀態(tài)。b、讀操作模塊,該模塊負責從NANDFLASH芯片中讀取數(shù)據(jù),并向上位機傳回讀操作狀態(tài),將數(shù)據(jù)通過其它模塊送給上位機。c、塊刪除操作模塊,該模塊負責將上位機指定的塊地址內(nèi)的存儲單元內(nèi)容全部刪除掉,刪除后塊地址內(nèi)所有存儲單元內(nèi)容均為"FF"。d、ID識別模塊,該模塊負責讀取NANDFLASH芯片的ID號,以便判別NANDFLASH芯片的種類。e、錯誤控制模塊,該模塊用于發(fā)現(xiàn)和糾正NANDFLASH芯片中數(shù)據(jù)的比特錯誤。f、壞塊管理模塊,該模塊用于實現(xiàn)NANDFLASH芯片內(nèi)邏輯塊和物理塊間的有效映射,以便各邏輯塊對應(yīng)到無缺陷的物理塊。讀寫控制器的信號如下表3:<table>tableseeoriginaldocumentpage6</column></row><table><table>tableseeoriginaldocumentpage7</column></row><table>表3該基于NANDFLASH的電子盤的運行控制方法,包括以下步驟SI:系統(tǒng)上電,BIOS搜索ROM擴展碼,如果搜索到,進入步驟S2,否則,進入步驟S5;S2:執(zhí)行NANDFLASH芯片的啟動信息代碼;S3:將INT13H的中斷向量改為NANDFLASH芯片的中斷向量;S4:調(diào)用NANDFLASH芯片的INT13H的中斷處理程序,對NANDFLASH芯片進行讀寫控制;S5:結(jié)束。其中,步驟S2包括S21:將NANDFLASH芯片的驅(qū)動代碼搬移到與大小相配合的存儲器執(zhí)行空間;S22:釋放NANDFLASH芯片的映射空間。在步驟S3中還包括保存INT13H的原中斷向量。在步驟S4中的讀寫控制包括對NANDFLASH芯片進行ID識別、讀操作、寫操作、塊管理、塊檢測和塊刪除。在具體工作中,根據(jù)BIOS的規(guī)范可知所有的擴展ROM只能放在C8000HFOOOOH的區(qū)間內(nèi)BIOS才能引導(dǎo),擴展ROM有自己規(guī)范,即擴展ROM的前2個字節(jié)必須是0XAA55,然后是擴展ROM的長度,長度是以512個字節(jié)為單位,接著是ISA—FLASH驅(qū)動部分,這些部分總共加在一起的字節(jié)和要為0。電子盤作為機器的一個ISA設(shè)備,其驅(qū)動在BIOS程序看來就是一個擴展ROM,因此,計算機啟動過程中將電子盤的驅(qū)動程序以只讀方式自動導(dǎo)入PC內(nèi)存,它在PC的擴展BIOS中安排了8kB的存儲區(qū)域,其映射地址為0D8000H到0D9FFF的區(qū)域,其實現(xiàn)機制如圖3所示。計算機開機自檢后,電子盤作為PC的BIOS標準操作的一部分,BIOS搜尋ROM擴展碼,找到后BIOS執(zhí)行相應(yīng)的初始代碼,此碼將驅(qū)動程序首先搬移到內(nèi)存的可用區(qū)域繼續(xù)執(zhí)行,并完成修改中斷向量表等一系列操作,如圖2。完成上述操作后電子盤將被標識為系統(tǒng)的一個磁盤,如磁盤A。計算機啟動后,BIOS首先進入地址0D8000H處搜尋ROM擴展碼,判斷是否存在0XAA55,若存在則讀取驅(qū)動代碼長度并繼續(xù)執(zhí)行;否則BIOS會自動到其他映射空間搜尋是否存在ROM擴展碼。待BIOS檢測完ROM擴展碼后,程序跳至顯示電子盤啟動信息代碼處繼續(xù)執(zhí)行。由于電子盤8K的映射空間只能用做數(shù)據(jù)交換區(qū),而不能用作應(yīng)用程序的運行空間。接下來電子盤的驅(qū)動將執(zhí)行一段驅(qū)動程序自我搬移的代碼,將驅(qū)動代碼由地址0D8000H處搬移到9E800H至OAOOOOH處,其中的起始地址9E800H并非固定值,只要保證其起始地址與OAOOOOH的空間大小等于代碼長度即可。待程序代碼搬移完畢后,修改IP寄存器和CS寄存器的值,跳轉(zhuǎn)到驅(qū)動程序搬移后那段存儲器空間繼續(xù)執(zhí)行,此時電子盤8K的映射空間便被釋放出來用作數(shù)據(jù)交換區(qū)。HOOK_INT13程序的作用是保存原INT13H的中斷向量7并把INT13H的中斷向量更改為電子盤所用的中斷向量,修改INT13H中斷向量的地址為0000H:004CH,此時INT13H的中斷便被電子盤所接管。此后每次調(diào)用INT13H的中斷都會進入電子盤的所建立的新中斷服務(wù)程序中,在該中斷服務(wù)程序里,首先對寄存器DL的值進行比較(與OOH比較),若該參數(shù)反映的是電子盤,則會進一步查找功能函數(shù)表,從而調(diào)用電子盤的INT13H的中斷處理程序,其中包括對電子盤的ID識別、讀操作、寫操作、塊管理、塊檢測、塊刪除等處理,待相應(yīng)的操作處理完畢后便進行中斷返回(IRET);倘若寄存器DL的值反映的不是電子盤而是硬盤,則會將INT13H中斷向量恢復(fù)成電子盤接管INT13H前的狀態(tài)。HOOK_INT13程序執(zhí)行完畢后,接著就要修改常規(guī)內(nèi)存容量,其修改地址是0000H:0413H,在該地址的內(nèi)容里減去驅(qū)動的大小,以1024個字節(jié)為單位。應(yīng)用程序每次調(diào)用INT13H中斷服務(wù)程序后便會判斷是否調(diào)用成功,若成功則會正常返回(RETF),否則需要進行錯誤處理。通過實際測試,使用本電子盤的讀寫誤碼率小于IOE-IO,使用ECC糾錯算法誤碼率小于10E-12。另外,通過PCI-ISA橋和DOC結(jié)合將DOC可以設(shè)計為PCI插卡方式。本發(fā)明是通過幾個具體實施例進行說明的,本領(lǐng)域技術(shù)人員應(yīng)當明白,在不脫離本發(fā)明范圍的情況下,還可以對本發(fā)明進行各種變換及等同替代。另外,針對特定情形或具體情況,可以對本發(fā)明做各種修改,而不脫離本發(fā)明的范圍。因此,本發(fā)明不局限于所公開的具體實施例,而應(yīng)當包括落入本發(fā)明權(quán)利要求范圍內(nèi)的全部實施方式。權(quán)利要求一種基于NANDFLASH的電子盤,其特征在于,包括NANDFLASH芯片和FPGA控制器,其中,F(xiàn)PGA控制器用于實現(xiàn)ISA總線與NANDFLASH芯片之間的數(shù)據(jù)交換,以及ISA總線對NANDFLASH的讀寫控制;計算機操作系統(tǒng)固化在NANDFLASH芯片中。2.根據(jù)權(quán)利要求l所述的基于NANDFLASH的電子盤,其特征在于,所述FPGA控制器包括ISA總線接口,用于讀取ISA總線發(fā)送的數(shù)據(jù)和控制信號,同時向ISA總線發(fā)送NANDFLASH芯片的數(shù)據(jù)和狀態(tài)信息;擴展R0M,用于存儲擴展的BIOS數(shù)據(jù);讀寫控制器,用于根據(jù)NANDFLASH芯片的控制時序,向NANDFLASH芯片提供控制信號,并讀取NANDFLASH芯片的狀態(tài)信息。3.根據(jù)權(quán)利要求2所述的基于NANDFLASH的電子盤,其特征在于,所述讀寫控制器包括寫操作模塊,用于將ISA總線發(fā)送的數(shù)據(jù)寫入NANDFLASH芯片,并反饋寫操作狀態(tài);讀操作模塊,用于讀取NANDFLASH芯片發(fā)送的數(shù)據(jù),并反饋讀操作狀態(tài);塊刪除模塊,用于根據(jù)ISA總線發(fā)送的控制信號,刪除NANDFLASH芯片中相應(yīng)的塊地址內(nèi)的存儲單元;ID識別模塊,用于讀取NANDFLASH芯片的ID號。4.根據(jù)權(quán)利要求13任一所述的基于NANDFLASH的電子盤,其特征在于,所述讀寫控制器還包括錯誤控制模塊,用于發(fā)現(xiàn)和糾正NANDFLASH芯片中數(shù)據(jù)的比特錯誤。5.根據(jù)權(quán)利要求4所述的基于NANDFLASH的電子盤,其特征在于,所述讀寫控制器還包括壞塊管理模塊,用于實現(xiàn)NANDFLASH芯片內(nèi)邏輯塊和物理塊間的有效映射,以便各邏輯塊對應(yīng)到無缺陷的物理塊。6.—種針對權(quán)利要求5所述的基于NANDFLASH的電子盤的運行控制方法,其特征在于,包括以下步驟51:系統(tǒng)上電,BIOS搜索ROM擴展碼,如果搜索到,進入步驟S2,否則,進入步驟S5;52:執(zhí)行NANDFLASH芯片的啟動信息代碼;53:將INT13H的中斷向量改為NANDFLASH芯片的中斷向量;S4:調(diào)用NANDFLASH芯片的INT13H的中斷處理程序,對NANDFLASH芯片進行讀寫控制;S5:結(jié)束。7.根據(jù)權(quán)利要求6所述的運行控制方法,其特征在于,所述步驟S2包括521:將NANDFLASH芯片的驅(qū)動代碼搬移到與大小相配合的存儲器執(zhí)行空間;522:釋放NANDFLASH芯片的映射空間。8.根據(jù)權(quán)利要求7所述的基于NANDFLASH的電子盤,其特征在于,在所述步驟S3中還包括保存INT13H的原中斷向量。9.根據(jù)權(quán)利要求7所述的基于NANDFLASH的電子盤,其特征在于,在所述步驟S4中的讀寫控制包括對NANDFLASH芯片進行ID識別、讀操作、寫操作、塊管理、塊檢測和塊刪除。全文摘要本發(fā)明涉及一種基于NANDFLASH的電子盤及其運行控制方法,該系統(tǒng)包括NANDFLASH芯片和FPGA控制器,其中,F(xiàn)PGA控制器用于實現(xiàn)ISA總線與NANDFLASH芯片之間的數(shù)據(jù)交換,以及ISA總線對NANDFLASH的讀寫控制;計算機操作系統(tǒng)固化在NANDFLASH芯片中。本發(fā)明的基于NANDFLASH的電子盤及其運行控制方法,在工業(yè)控制和軍事領(lǐng)域應(yīng)用中,能有效地防止機械振動、粉塵、溫度變化等的影響,而且該電子盤采用簡化的ISA接口,體積小,直接焊接到系統(tǒng)電路板,接觸可靠,便于嵌入式工控的應(yīng)用,由于該電子盤采用半導(dǎo)體制成,與普通硬盤相比其壽命大大提高,另外,將本發(fā)明的電子盤應(yīng)用于工業(yè)計算機系統(tǒng)時,由于操作系統(tǒng)是固化在NANDFLASH芯片中,當有病毒入侵系統(tǒng)時,不能對操作系統(tǒng)進行任何修改,有效地防止了病毒的侵入。文檔編號G06F13/16GK101751978SQ20081021775公開日2010年6月23日申請日期2008年12月1日優(yōu)先權(quán)日2008年12月1日發(fā)明者王玉章,馬先明申請人:研祥智能科技股份有限公司;北京市研祥興業(yè)國際智能科技有限公司