專利名稱:一種閃存存儲器的檢測方法
技術領域:
本發(fā)明涉及計算機領域,特別涉及計算機領域的閃存存儲器。
背景技術:
所謂閃存(Flash memory以下簡稱FLASH),是一種廣泛應用于移動電話、工業(yè)設備、電訊設備以及移動存儲卡等領域的存儲裝置,與通用的隨機存儲器不同,閃存的特點是非易失性(也就是所存儲的數據在主機掉電后不會丟失)。由于閃存一般用來存儲設備的工作程序和相關非常重要的數據,對與其配合的電子產品極為重要。所以相關領域對閃存的讀和寫(也就是編程)是否正確要求非常嚴格,對閃存進行檢測,已成為與之相關的電子產品出廠前的重要程序。
一般而言,導致閃存讀寫錯誤的原因在于,閃存焊接不好,導致閃存信號線(主要是地址線和數據線)短路、開路(斷路),其中,短路是指接通了本來不應該相連的信號線,開路是指原來應該接通的信號線未能接通;極少數原因為閃存芯片內部單元本身損壞。由于閃存自身的特點,閃存中的存儲單元的每位只能寫為“0”,不能寫為“1”,必須通過擦除操作才能讓閃存中的存儲單元變?yōu)椤?”。在對閃存進行寫非零數據操作前,必須進行擦除操作,讓閃存變?yōu)榭?,這樣,導致對閃存的檢測比較復雜,也比較費時。目前尚未見到一套完整的工業(yè)上可應用的閃存檢測方法,現(xiàn)有的方法中,有些方法只是簡單地讀取閃存的設備ID來判斷閃存是否完好,或者是將閃存擦除后,按地址單元逐一寫入、讀出測試數據,然后通過讀出數據與寫入數據進行比較得到檢測結果,以此來判斷閃存的讀寫操作是否正確。當前閃存的檢測方法主要存在以下缺點1、檢測方法簡單、不完備,沒有一套完整的檢測方法,檢測的效果較差;2、無法檢測出閃存因為地址線短路所引起的讀寫故障,無法可靠地檢測出閃存的地址線開路和數據線故障;3、無法明確指出故障原因,不利于排除故障。
發(fā)明內容
本發(fā)明的目的在于克服上述現(xiàn)有技術的缺點,提出一種能夠檢測閃存數據線、地址線的開路/短路故障、能夠準確顯示故障原因的一整套完備的、適于工業(yè)上應用的閃存存儲器檢測方法。
一種閃存存儲器的檢測方法,包括下列步驟步驟一、對閃存芯片進行單元檢測1.1將閃存芯片的每個地址單元清“0”;1.2將閃存芯片的每個單元內容讀出,判斷是否為0,如果是則繼續(xù),否則輸出出錯信息,單元檢測結束;1.3依次對閃存中的每一個塊單元進行擦除操作,如果成功則繼續(xù),否則輸出出錯信息,單元檢測結束;步驟二、對閃存的數據線進行開路檢測2.1設定某一特定地址空間的首地址ADDR;2.2從第一位開始依次將數據總線中的某一位置“0”,其他位置“1”,得到等于數據總線寬度的M個特殊數據;2.3將M個特殊數據依次寫入以地址ADDR開始的M個單元內;2.4依次從地址ADDR開始的空間內讀出寫入的特殊數據;2.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘0’的那根數據線開路故障”;2.6所有的數據線均檢測完畢后,數據線開路檢測結束;
步驟三、對閃存的數據線進行短路檢測3.1設定另一特定地址空間的首地址ADFR;3.2從第一位開始依次將數據總線中的某一位置“1”,其他位置“0”,得到等于數據總線寬度的M個特殊數據;3.3將M個特殊數據依次寫入以地址ADFR開始的M個單元內;3.4依次從地址ADFR開始的空間內讀出寫入的特殊數據;3.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘1’的那根數據線短路故障”;3.6所有的數據線均檢測完畢后,數據線短路檢測結束;步驟四、使用與步驟二和步驟三相同的方法,對閃存的地址線進行開路和短路檢測;步驟五、檢測結束。
如果待測閃存芯片具有鎖定功能,則在進行所述步驟一之前對芯片進行解鎖操作。
檢測結束后,將待測閃存的各非空塊擦除。
上述步驟1.3具體包括1.3.1第0塊空間擦除開始;1.3.2建立并確認塊擦除命令;1.3.3塊擦除結束后,讀取狀態(tài)寄存器的值;1.3.4根據狀態(tài)寄存器的值判斷擦除是否成功,如果成功則繼續(xù),否則報告擦除出錯的塊號后結束;1.3.5判斷所有塊擦除是否結束,如果是則結束;否則開始下一塊空間擦除,執(zhí)行步驟1.3.2。
本發(fā)明提出的閃存檢測方法,能夠比較完整地對閃存芯片進行檢測,檢測效果比較好;并且,本發(fā)明能夠可靠地檢測出閃存因為地址線短路所引起的讀寫故障和閃存的地址線開路和數據線故障并能夠明確指出故障原因,利于排除故障。通過使用本發(fā)明提出的方法對生產的電子線路板上的閃存進行檢測,可以保證出廠的線路板上的閃存是完好的,同時找出閃存故障的線路板的閃存故障原因,方便故障定位和排除。
圖1是本發(fā)明提出的檢測方法的主流程圖;圖2是本發(fā)明中對閃存進行擦除檢測的流程圖;圖3是本發(fā)明中對數據線開路故障檢測的流程圖;圖4是本發(fā)明中對數據線短路故障檢測的流程圖。
具體實施例方式
下面結合附圖和實施例,對本發(fā)明作進一步的詳細說明。
圖1是本發(fā)明提出的檢測方法的主流程圖。如圖1所示,本發(fā)明提出的檢測方法主要包括下列檢測內容1、對閃存芯片進行單元檢測;2、對閃存的數據線進行開路和短路檢測;3、采用同樣的方法,對閃存的地址線進行開路和短路檢測。
圖2是本發(fā)明中進行單元檢測時對閃存進行擦除檢測的流程圖。如圖2所示,對閃存進行擦除檢測具體包括2.1第0塊空間擦除開始;2.2建立并確認塊擦除命令;2.3塊擦除結束后,讀取狀態(tài)寄存器的值;2.4根據狀態(tài)寄存器的值判斷擦除是否成功,如果成功則繼續(xù),否則報告擦除出錯的塊號后結束;2.5判斷所有塊擦除是否結束,如果是則結束;否則開始下一塊空間擦除,執(zhí)行步驟2.2。
圖3是本發(fā)明中對數據線開路故障檢測的流程圖。如圖3所示,對閃存的數據線進行開路檢測包括下列步驟3.1設定某一特定地址空間的首地址ADDR;3.2從第一位開始依次將數據總線中的某一位置“0”,其他位置“1”,得到等于數據總線寬度的M個特殊數據;3.3將M個特殊數據依次寫入以地址ADDR開始的M個單元內;3.4依次從地址ADDR開始的空間內讀出寫入的特殊數據;3.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘0’的那根數據線開路故障”;3.6所有的數據線均檢測完畢后,數據線開路檢測結束。
圖4是本發(fā)明中對數據線短路故障檢測的流程圖。如圖4所示,對閃存的數據線進行短路檢測包括下列步驟4.1設定另一特定地址空間的首地址ADFR;4.2從第一位開始依次將數據總線中的某一位置“1”,其他位置“0”,得到等于數據總線寬度的M個特殊數據;4.3將M個特殊數據依次寫入以地址ADFR開始的M個單元內;4.4依次從地址ADFR開始的空間內讀出寫入的特殊數據;4.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘1’的那根數據線短路故障”;4.6所有的數據線均檢測完畢后,數據線短路檢測結束。
下面以INTEL公司16位數據總線20位地址總線的閃存芯片28F160C3為例,對本發(fā)明提出的檢測方法的實施步驟進行詳細說明。
首先檢測閃存的單元,解鎖芯片(有些型號的芯片沒有鎖功能,可以不需要該操作),同時將閃存的每個單元清“0”,然后將每個單元讀出并判斷是否為“0”,以此來判斷閃存每個單元能否被清“0”。
當待測閃存經檢測后,每個單元都可以被清“0”,則對閃存進行塊擦除檢測,因為閃存經過塊擦除后,閃存的每個單元將變?yōu)槿?”,然后對閃存的每個單元進行全“1”檢測。
其次,如待測閃存經檢測后,每個單元都可以清“0”和置“1”,則采用數據線的走“1”法來檢測特定地址單元,以此進行數據線開路檢測,如果沒有發(fā)生數據線短路故障,再針對數據線開路情況,采用數據線走“1”法對特定地址單元進行檢測,以此確定數據線是否有短路故障。
最后,如待測閃存經檢測后,數據線未發(fā)生故障,則采用與檢測數據線相同的方法來檢測地址線的開路、短路故障。
為了讓閃存在檢測完后,能夠直接使用,在以上檢測完后,還要對非空(即單元不是全“1”)的塊進行擦除操作。
下面詳細對每項檢測步驟進行說明首先將芯片解鎖,芯片的解鎖操作是按塊來進行的;具體操作是向閃存的每個塊空間的任意地址先后寫0X60、0XD0,讓芯片解鎖能進行編程(即寫操作)和擦除操作。解鎖的具體操作不同型號或廠家的芯片可能不同,可以參考數據手冊得到具體操作過程。
其次,通過向閃存的每個單元寫入“0x0000”將其清“0”,具體為向塊空間的任意地址寫入0x4040,然后向具體空間寫入0x0000,每寫一個數據必須先寫入0x4040建立寫操作,然后寫入具體的數據。所有單元寫完后,再向塊的任意地址寫0xFFFF讓芯片的塊處于讀狀態(tài),然后逐一讀出每個單元的數據,并將讀出的數據與“0x0000”比較,若相等,則說明閃存的每個單元都可以清“0”,否則說明該待測閃存芯片本身有故障,結束檢測并顯示檢測結果。由于閃存單元的數據通過寫操作能將“1”變?yōu)椤?”,但不能將“0”變?yōu)椤?”,所以可以在閃存不擦除的情況下將它的每個單元變?yōu)槿?”。
第3步,將閃存進行擦除檢測,如圖2所示,閃存的擦除操作是按照塊來進行的,每次將一個塊的內容擦除。其步驟包括A、向閃存中第0塊單元地址中先后寫0X20,0XD0,來建立塊擦除和確認操作,讓塊單元進行擦除操作。
B、通過讀任意地址的值來讀狀態(tài)寄存器,并判斷第7位的值,若第7位為高,則表示塊擦除操作完成,否則,繼續(xù)讀狀態(tài)寄存器等待擦除操作完成。
C、讀狀態(tài)寄存器并判斷第5位,若第5位為高,則表示擦除操作沒有出錯,否則表示該塊的擦除操作出錯。若擦除出錯,則擦除檢測結束。
D、若閃存的上一塊塊單元擦除成功,向閃存中下一塊塊單元地址中先后寫0X20,0XD0,來建立塊擦除和確認操作,讓塊單元進行擦除操作。
E、重復B~D步進行余下塊單元的檢測,直到所有塊都擦除成功。
擦除操作成功完成后,還要對閃存的每個單元進行置“1”檢測,方法為向塊單元的任意地址寫入0xFFFF讓芯片處于讀狀態(tài),然后依次讀出閃存的每個單元數據,并判斷讀得的數據是否全為0XFFFF,若不是,則說明閃存芯片本身有故障,不能將其全部置“1”。結束閃存檢測,并顯示檢測結果。否則繼續(xù)進行后面的檢測。
第4步,在上面的檢測通過的情況下,進行數據線的開路、短路故障檢測,如圖3所示,開路故障檢測的步驟為A、將16根數據總線(D15D14……D1D0)由低位到高位的每根數據線逐一拉低,然后將它們逐一寫入閃存的相對地址0X204開始的32個地址單元,即向相對地址為0X204、0X206……0X222的地址單元分別寫入0XFFFE;0XFFFD……0X7FFF。
B、然后依次從相對地址為0X204、0X206……0X222的地址單元讀出數據并分別與寫入的數據0XFFFE;0XFFFD……0X7FFF進行比較,若與數據0XFFFD比較出錯,則表示是數據線D1有開路故障,其他以此類推。如檢測有故障,則停止檢測,并顯示檢測結果。
如圖4所示,數據線短路故障檢測的步驟有A、將16根數據總線(D15D14……D1D0)由低位到高位的每根數據線逐一拉高,然后將它們逐一寫入閃存的相對地址0X224開始的32個地址單元,即向相對地址為0X224、0X226……0X242的地址單元分別寫入0X0001;0X0002……0X8000。
B、然后依次從相對地址為0X224、0X226……0X242的地址單元讀出數據并分別與寫入的數據0X0001;0X0002……0X8000進行比較,若與0X0004對應的數據比較出錯,則表示是數據線D2有短路路故障,其他以此類推。如檢測有故障,則停止檢測,并顯示檢測結果。
最后,在數據線也沒有開路和短路的情況下,進行地址線的開路、短路故障檢測,地址線開路故障檢測步驟有A、將閃存的地址腳(A19……A1A0)由低位到高位依次逐一拉低,向這些地址內寫入數據0x5555;即分別向相對地址為0X1FFFFC、0X1FFFFA、0X1FFFF6……0X0FFFFE這些地址單元寫入0x5555。(由于閃存數據線為16位2字節(jié),所以芯片的地址腳A19……A1A0應與CPU的A20……A2A1一一相連,也就是實際的尋址空間是21位地址空間。)B、向閃存的相對地址空間為0X1FFFFE的地址單元內寫入數據0x0000。
C、分別讀取上述地址空間的內容,因為任何一根地址線開路的話,其地址將變?yōu)?X1FFFFE,其內容都將被后寫入的0x0000覆蓋,不能再讀出0x5555;所以若地址單元0X1FFFFA讀出的數據為0X0000,則說明閃存芯片上的A1地址腳有開路故障。如檢測有故障,則停止檢測,并顯示檢測結果。
地址線短路故障檢測的步驟有A、將閃存的地址腳(A19A18……A1A0)由低位到高位依次逐一拉高,向這些地址內寫入數據0x5555;即分別向相對地址為0X000002、0X000004、0X000008……0X100000這些地址單元寫入0x5555。(由于閃存數據線為16位2字節(jié),所以芯片的地址腳A19……A1A0應與CPU的A20……A2A1一一相連,也就是實際的尋址空間是21位地址空間。)B、向閃存的相對地址空間為0x000000的地址單元內寫入數據0x0000;
C、分別讀取上述地址至間的內容,因為任何一根地址線短路的話,其地址將變?yōu)?x000000,其內容都將被后寫入的0x0000覆蓋,不能再讀出0x5555;所以若地址單元0X000008讀出的數據為0X0000,則說明A2地址線有短路故障。如檢測有故障,則停止檢測,并顯示檢測結果經過上述檢測,即能可靠的檢測出發(fā)生故障的閃存,且將故障確切具體地顯示出來。若經過以上檢測后,沒有發(fā)現(xiàn)閃存故障,則為了讓閃存能夠直接使用,檢測最后還要將閃存的非空塊擦除,讓其可以直接編程。
以上步驟中,單元檢測和擦除檢測是融合在一起的,先進行單元能否全清零檢測,然后進行擦除檢測,再進行單元能否全置“1”檢測,采用這一先后順序,在檢測單元時就只需進行一次擦除操作,可以減少檢測時間。此外,對塊單元進行讀操作前,要先讓閃存處于讀狀態(tài),具體為向塊的任意單元寫0XFFFF,然后進行具體的讀操作,而進行寫(編程)操作時,則是對每個編程單元,都需要先向塊單元任意地址寫編程建立命令0x4040,然后向具體單元寫編程的數據。以上步驟中有些詳細寫了讀、寫操作的過程,有些沒有寫,在這里統(tǒng)一說明。另外,不同型號或廠家的閃存的讀、寫、解鎖以及擦除操作的具體命令和過程會有所不同,可以根據具體數據手冊進行操作,但整個檢測方法是一樣的。
權利要求
1.一種閃存存儲器的檢測方法,其特征在于包括下列步驟步驟一、對閃存芯片進行單元檢測1.1將閃存芯片的每個地址單元清“0”;1.2將閃存芯片的每個單元內容讀出,判斷是否為0,如果是則繼續(xù),否則輸出出錯信息,單元檢測結束;1.3依次對閃存中的每一個塊單元進行擦除操作,如果成功則繼續(xù),否則輸出出錯信息,單元檢測結束;步驟二、對閃存的數據線進行開路檢測2.1設定某一特定地址空間的首地址ADDR;2.2從第一位開始依次將數據總線中的某一位置“0”,其他位置“1”,得到等于數據總線寬度的M個特殊數據;2.3將M個特殊數據依次寫入以地址ADDR開始的M個單元內;2.4依次從地址ADDR開始的空間內讀出寫入的特殊數據;2.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘0’的那根數據線開路故障”;2.6所有的數據線均檢測完畢后,數據線開路檢測結束;步驟三、對閃存的數據線進行短路檢測3.1設定另一特定地址空間的首地址ADFR;3.2從第一位開始依次將數據總線中的某一位置“1”,其他位置“0”,得到等于數據總線寬度的M個特殊數據;3.3將M個特殊數據依次寫入以地址ADFR開始的M個單元內;3.4依次從地址ADFR開始的空間內讀出寫入的特殊數據;3.5將讀出的數據與寫入的數據進行比較,如果相等,則繼續(xù),否則輸出“特定數據中數據位為‘1’的那根數據線短路故障”;3.6所有的數據線均檢測完畢后,數據線短路檢測結束;步驟四、使用與步驟二和步驟三相同的方法,對閃存的地址線進行開路和短路檢測;步驟五、檢測結束。
2.根據權利要求1所述的檢測方法,其特征在于如果待測閃存芯片具有鎖定功能,則在進行所述步驟二之前對芯片進行解鎖操作。
3.根據權利要求1或2所述的檢測方法,其特征在于檢測結束后,將待測閃存的各非空塊擦除。
4.根據權利要求1或2所述的檢測方法,其特征在于所述步驟1.3具體包括1.3.1第0塊空間擦除開始;1.3.2建立并確認塊擦除命令;1.3.3塊擦除結束后,讀取狀態(tài)寄存器的值;1.3.4根據狀態(tài)寄存器的值判斷擦除是否成功,如果成功則繼續(xù),否則報告擦除出錯的塊號后結束;1.3.5判斷所有塊擦除是否結束,如果是則結束;否則開始下一塊空間擦除,執(zhí)行步驟1.3.2。
全文摘要
本發(fā)明公開了一種閃存存儲器的檢測方法,針對電子線路開路的不確定性和短路特性,重復檢測閃存所有電子線路,以此來檢測出閃存的地址線和數據線是否有故障,同時通過對閃存的每個單元進行清“0”和置“1”來判斷該閃存芯片本身是否有故障,并根據檢測結果的指示,得知閃存發(fā)生故障的原因。本發(fā)明提出的閃存檢測方法,能夠比較完整地對閃存芯片進行檢測;并且,本發(fā)明能夠可靠地檢測出閃存因為地址線短路所引起的讀寫故障和閃存的地址線開路和數據線故障并能夠明確指出故障原因,利于排除故障。通過本發(fā)明方法對生產的電子線路板上的閃存進行檢測,可以保證出廠的線路板上的閃存是完好的,同時找出閃存故障的線路板的閃存故障原因,方便故障定位和排除。
文檔編號G11C29/00GK1725382SQ200410069098
公開日2006年1月25日 申請日期2004年7月20日 優(yōu)先權日2004年7月20日
發(fā)明者唐新平, 張永華, 文海軍 申請人:中興通訊股份有限公司