專利名稱::測試具有通用串行總線接口的存儲裝置的方法及存儲裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及測試具有半導(dǎo)體存儲器的存儲裝置的測試方法及其存儲裝置,特別涉及一種測試具有通用串行總線(USB-UniversalSerialBus)接口的存儲裝置的測試方法,以及一種具有自測試通用串行總線接口的存儲裝置。
背景技術(shù):
:已知具有快速存儲器的存儲裝置,例如為USB快速隨機(jī)存儲器(USBFlashRAMDrive)的存儲裝置,其測試方式是由主機(jī)送出測試數(shù)據(jù)(testpattern),經(jīng)由USB總線讀寫快速存儲器,將測試數(shù)據(jù)寫入快速存儲器,然后讀取快速存儲器,在主機(jī)上對比測試數(shù)據(jù)和讀取數(shù)據(jù),這樣的已知方式完成測試所需的時間相當(dāng)長,尤其是對存儲容量大的存儲裝置的測試更為耗時。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種測試具有通用串行總線(USB)接口的存儲裝置的測試方法,使得能夠快速完成對存儲裝置的測試。本發(fā)明的另一目的是提供一種具有自測試通用串行總線(USB)接口的存儲裝置,其能夠在接收到測試命令之后,自動快速完成測試。為實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明提供一種測試具有通用串行總線(USB)接口的存儲裝置的測試方法,其應(yīng)用于存儲裝置,其中存儲裝置至少包含有USB接口、一個連接USB接口的USB控制器、至少一個連接USB控制器的半導(dǎo)體存儲器,該測試方法包括下列步驟USB控制器經(jīng)由USB接口接收由主機(jī)傳送的測試命令;在USB控制器接收到測試命令后,USB控制器對半導(dǎo)體存儲器進(jìn)行寫入及讀出,并對比寫入及讀出的兩份數(shù)據(jù)是否相同,以便測試半導(dǎo)體存儲器是好是壞;在USB控制器完成對半導(dǎo)體存儲器的讀寫測試后,USB控制器經(jīng)由USB接口向主機(jī)傳送測試結(jié)果數(shù)據(jù)。此外,為實(shí)現(xiàn)本發(fā)明的另一目的,本發(fā)明提供一種具有自測試通用串行總線(USB)接口的存儲裝置,包括USB接口;一個連接USB接口的USB控制器;至少一個連接USB控制器的半導(dǎo)體存儲器;連接到該通用串行總線控制器以向其提供指令的裝置,該指令包括指示通用串行總線控制器接收由主機(jī)經(jīng)由USB接口傳送的測試命令的指令;對半導(dǎo)體存儲器進(jìn)行寫入及讀出,并對比寫入及讀出的兩份數(shù)據(jù)是否相同,以便測試半導(dǎo)體存儲器是好是壞的指令;在完成對半導(dǎo)體存儲器的讀寫測試后,經(jīng)由USB接口傳送測試結(jié)果數(shù)據(jù)的指令。為使本領(lǐng)域技術(shù)人員了解本發(fā)明的目的、特征及效果,下文中將通過下述具體實(shí)施例,并結(jié)合附圖,詳細(xì)說明本發(fā)明。圖1顯示根據(jù)本發(fā)明原理實(shí)施的存儲裝置的結(jié)構(gòu)圖。圖2顯示本發(fā)明的測試方法的流程圖。圖3A和圖3B顯示根據(jù)圖2的精神,在存儲裝置內(nèi)具體實(shí)施的程序代碼的流程圖。圖4顯示主機(jī)測試多個存儲裝置的第一連接方式的結(jié)構(gòu)圖。圖5顯示主機(jī)測試多個存儲裝置的第二連接方式的結(jié)構(gòu)圖。圖6顯示本發(fā)明與已知測試方式的效率比較圖。附圖標(biāo)號10存儲裝置101USB控制器103USB接口105半導(dǎo)體存儲器107程序代碼12主機(jī)14USB集線器16開關(guān)具體實(shí)施方式圖1顯示根據(jù)本發(fā)明原理實(shí)施的存儲裝置的結(jié)構(gòu)圖。存儲裝置10包括USB接口103,用于連接主機(jī)12,或是再經(jīng)由USB集線器14連接主機(jī)12;至少一個連接USB控制器101的半導(dǎo)體存儲器105,用作數(shù)據(jù)存儲,而半導(dǎo)體存儲器105的存儲容量并無限制,例如可以根據(jù)實(shí)際需求而配置為32MB、64MB、128MB...等等,半導(dǎo)體存儲器105的具體實(shí)施例子可以是快速存儲器;程序代碼107以及USB控制器,其中程序代碼107用于提供給USB控制器101以執(zhí)行圖2所顯示的流程,據(jù)此,程序代碼107是圖2所顯示的流程的具體實(shí)施方式,而程序代碼107可以以固件(firmware)形式實(shí)施于存儲裝置10。主機(jī)12可以是個人計算機(jī)或是用于測試存儲裝置10的工具。圖2顯示本發(fā)明的測試方法的流程圖。圖2的測試方法應(yīng)用于圖1所示的存儲裝置10,步驟(20)是USB控制器101經(jīng)由USB接口103接收由主機(jī)12傳送的測試命令。步驟(22)是在USB控制器101接收到測試命令后,USB控制器101對半導(dǎo)體存儲器105進(jìn)行寫入及讀出,并對比寫入及讀出的兩份數(shù)據(jù)是否相同,以測試半導(dǎo)體存儲器105是好是壞。步驟(26)是在USB控制器101完成半導(dǎo)體存儲器105的讀寫測試后,USB控制器101經(jīng)由USB接口103向主機(jī)12傳送測試結(jié)果數(shù)據(jù)。圖3A及圖3B顯示根據(jù)圖2的精神,在存儲裝置內(nèi)具體實(shí)施的程序代碼的流程圖,而主機(jī)12與存儲裝置10彼此間的測試方式及測試命令可以遵循SCSI命令(command)格式作為具體實(shí)現(xiàn)手段。步驟(30)是存儲裝置10接收主機(jī)12傳送的命令。步驟(32)是判斷命令的類型,根據(jù)命令類型分別進(jìn)入所屬的下一個步驟。步驟(34)是處理測試命令(testcommand),其提供半導(dǎo)體存儲器105是好是壞的測試傳輸,而測試命令的具體手段可以是主機(jī)12傳送出測試命令,USB控制器101在接收到測試命令后,分別對半導(dǎo)體存儲器105設(shè)定不同電壓條件,例如為3.0V低電壓、3.3V正常電壓、3.6V高電壓等,在每一種電壓條件下完成測試命令的測試。然后對于主機(jī)12所指定的半導(dǎo)體存儲器105要測試的那一個芯片,將該芯片第0個塊(block)的每個地址寫入“AA”,隨后讀取該塊的內(nèi)容,判斷是否為“AA”,記錄發(fā)生錯誤的地址,并擦除(erase)該塊,再對該塊將“55”寫入每個地址,讀取該塊的內(nèi)容,判斷是否為“55”,并記錄發(fā)生錯誤的地址,重復(fù)上述的動作直到該芯片最后一個塊,最后將測試結(jié)果數(shù)據(jù)傳回主機(jī)。步驟(36)是處理控制轉(zhuǎn)移(controltransfer)命令,其主要將存儲裝置10的裝置描述符(devicedescriptor)、設(shè)置描述符(configurationdescriptor)、字符串描述符(stringdescriptor)等傳輸給主機(jī)12。步驟(38)是判斷SCSI命令類型以進(jìn)入處理SCSI命令的處理步驟。步驟(40)是處理讀取命令(readcommand),其提供讀取半導(dǎo)體存儲器105的數(shù)據(jù)內(nèi)容,而讀取命令的具體手段可以是USB控制器101檢查LUT(look-up-table(查閱表))是否已建立,若沒有則先建立LUT,接著讀取LUT(此為physicalblockaddress(物理塊地址)),再將LBA(logicalblockaddress(邏輯塊地址))的5個LSBbits(比特)加到physicalblockaddress的LSB,以形成半導(dǎo)體存儲器105的起始讀取地址,隨后開始讀取半導(dǎo)體存儲器105的數(shù)據(jù)。步驟(42)是處理寫入命令(writecommand),其提供將數(shù)據(jù)內(nèi)容寫入半導(dǎo)體存儲器105,而寫入命令的具體手段可以是USB控制器101先檢查LBA是否已經(jīng)存在半導(dǎo)體存儲器105,若沒有則搜尋空的physicalblock(起始地址的設(shè)定則如同讀取命令),隨后開始程序化(program)半導(dǎo)體存儲器105,若LBA已經(jīng)存在半導(dǎo)體存儲器105內(nèi),步驟與上述相同,但需要將舊的LBA的數(shù)據(jù)copy(復(fù)制)到新的LBA以達(dá)到覆蓋的目的。步驟(44)是處理狀態(tài)傳輸命令(statustransportcommand),其提供寫入命令、讀取命令處理后的結(jié)果狀態(tài)的傳輸,存儲器裝置10的其它狀態(tài)的傳輸。本發(fā)明進(jìn)一步公開了上述的測試命令的實(shí)施手段,其主要同遵循SCSI命令格式,因此有CommandBlockWrapper(CBW(命令塊包裝))與CommandStatusWrapper(CSW(命令狀態(tài)包裝))。當(dāng)主機(jī)12發(fā)出測試命令的CBW時,USB控制器101將主機(jī)12所發(fā)出的CBW解碼,發(fā)現(xiàn)此CBW所具有的命令是通知USB控制器101測試半導(dǎo)體存儲器105,據(jù)此,USB控制器101對半導(dǎo)體存儲器105寫入及讀出對比測試數(shù)據(jù)(TestPattern)“AA”以及“55”,當(dāng)測試完畢,USB控制器101向主機(jī)12傳輸測試結(jié)果數(shù)據(jù),例如為測試失敗的芯片那一個塊,將測試結(jié)果數(shù)據(jù)傳輸給主機(jī)12。然后,USB控制器101恢復(fù)狀態(tài)CSW給主機(jī)12,以確認(rèn)測試命令執(zhí)行的狀況。上述CBW的格式為“555342437407F8DB00000400010003F0000000000000000000000000000000”。其中第0個至第三個字節(jié)(byte)“55534243”為bCBWSignature,代表此包裝為CBW。其中第四個至第七個字節(jié)“7407F8DB”為dCBWTag,USB控制器101在CSW中需恢復(fù)相同的dCBWTag。其中第八至第十一個比特線“00000000”為dCBWDataTransferLength,為主機(jī)12預(yù)期由Data-In(輸入數(shù)據(jù)),所讀取的byte數(shù),其長度不固定,因半導(dǎo)體存儲器105的大小而異。例如半導(dǎo)體存儲器105的大小為128MBytes即共有8192個blocks(塊),我們以一個bit代表一個block(0代表此block為good(好);1代表此block為bad(壞)),共需恢復(fù)1024bytes(8192bits)給主機(jī)12。同理,64MBytes的半導(dǎo)體存儲器105則需恢復(fù)512bytes給主機(jī)12。其中第十二個字節(jié)“01”代表數(shù)據(jù)由存儲裝置10送到主機(jī)12。其中第十三個字節(jié)“00”代表LUN(LogicUnitNumber(邏輯單元號))。其中第十四個字節(jié)“03”代表CBWCB的有效長度,其表示共有3個bytes有效。其中第十五個字節(jié)“F0”為CBWCB的第0個byte,代表這是一個測試命令。其中第十六個字節(jié)“00”為CBWCB的第1個byte,代表主機(jī)12要求USB控制器101測試半導(dǎo)體存儲器105的第0顆芯片。其中第十七個字節(jié)“00”為CBWCB的第2個byte,代表主機(jī)12要求USB控制器101設(shè)定測試的電壓條件,“00”表示正常電壓,“01”表示高電壓,“10”表示低電壓。其中第十八個至第三十個字節(jié)皆設(shè)為“00”。上述的Data-In部分是USB控制器101恢復(fù)給主機(jī)12的數(shù)據(jù),如第八個至第十一個字節(jié)所述。上述CSW的格式是“555342537407F8DB0000000000”。其中第0個至第三個字節(jié)“55534253”為dCSWSignature,代表此為CSW。其中第四個至第七個字節(jié)“7407F8DB”為dCSWTag,此值需要與dCBWTag相同。其中第八個至第十一個字節(jié)“00000000”為dCSWDataResidue,其代表USB控制器101恢復(fù)給主機(jī)12的byte數(shù)與主機(jī)12所預(yù)期byte數(shù)的差值。其中第十二個字節(jié)“00”代表已執(zhí)行命令。圖4及圖5的測試存儲裝置10的連接方式,能夠?qū)崿F(xiàn)大量測試存儲裝置10的目的。圖4顯示主機(jī)測試多個存儲裝置的第一連接方式的結(jié)構(gòu)圖。主機(jī)12經(jīng)由USB集線器14的每個端口(port)連接一個待測試存儲裝置10,而主機(jī)12連接USB集線器14。測試人員可依序測試存儲裝置10,若存儲裝置10發(fā)生錯誤時,馬上得知存儲裝置10有問題,待測試完畢后,再插上另一個待測存儲裝置10。另外,也可將所有的待測試存儲裝置10插在USB集線器14上,由主機(jī)12執(zhí)行軟件來判斷發(fā)生錯誤的存儲裝置10。圖5顯示主機(jī)測試多個存儲裝置的第二連接方式的結(jié)構(gòu)圖。圖5的切換開關(guān)用于代替圖4的USB集線器,在測試某一個存儲裝置10時,則連通對應(yīng)的開關(guān)16,其余則斷路。圖5的信號D+及信號D-表示為USB信號。圖6顯示本發(fā)明與已知測試方式的效率比較圖。從圖6明顯看出本發(fā)明的效率優(yōu)于已知技術(shù)的測試方式,尤其半導(dǎo)體存儲器105的容量越大時,本發(fā)明所具的效率就越顯著。雖然本發(fā)明已以優(yōu)選實(shí)施例公開如上,然而其并非用于限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,可以作各種改變與潤色,凡所做的各種改變與潤色皆在本發(fā)明所附的權(quán)利要求的范圍之內(nèi)。權(quán)利要求1.一種測試具有通用串行總線接口的存儲裝置的測試方法,其應(yīng)用于存儲裝置,該存儲裝置至少包含有通用串行總線接口、一個連接該通用串行總線接口的通用串行總線控制器、至少一個連接該通用串行總線控制器的半導(dǎo)體存儲器,該測試方法包括下列步驟·該通用串行總線控制器經(jīng)由該通用串行總線接口接收由主機(jī)傳送的測試命令;·在該通用串行總線控制器接收到該測試命令后,該通用串行總線控制器對該半導(dǎo)體存儲器進(jìn)行寫入及讀出,并對比該寫入及讀出的兩份數(shù)據(jù)是否相同,以測試該半導(dǎo)體存儲器是好是壞;·在該通用串行總線控制器完成對該半導(dǎo)體存儲器的讀寫測試后,該通用串行總線控制器經(jīng)由該通用串行總線接口向該主機(jī)傳送測試結(jié)果數(shù)據(jù)。2.如權(quán)利要求1所述的測試方法,其中該半導(dǎo)體存儲器是快速存儲器。3.一種具有自測試通用串行總線接口的存儲裝置,包括通用串行總線接口;一個連接該通用串行總線接口的通用串行總線控制器;至少一個連接該通用串行總線控制器的半導(dǎo)體存儲器;連接到該通用串行總線控制器以向其提供指令的裝置,該指令包括指示通用串行總線控制器·接收由主機(jī)經(jīng)由該通用串行總線接口傳送的測試命令的指令;·對該半導(dǎo)體存儲器進(jìn)行寫入及讀出,并對比該寫入及讀出的兩份數(shù)據(jù)是否相同,以測試該半導(dǎo)體存儲器是好是壞的指令;·在完成對該半導(dǎo)體存儲器的讀寫測試后,經(jīng)由該通用串行總線接口傳送測試結(jié)果數(shù)據(jù)的指令。4.如權(quán)利要求3所述的存儲裝置,其中該半導(dǎo)體存儲器是快速存儲器。專利摘要本發(fā)明是測試具有通用串行總線(USB)接口的存儲裝置的測試方法,其應(yīng)用于存儲裝置,所述存儲裝置至少包含有USB接口、一個連接USB接口的USB控制器、至少一個連接USB控制器的半導(dǎo)體存儲器,該方法包括下列步驟USB控制器經(jīng)由USB接口接收由主機(jī)傳送的測試命令;在USB控制器接收到測試命令后,USB控制器對半導(dǎo)體存儲器進(jìn)行寫入及讀出,并對比寫入及讀出的兩份數(shù)據(jù)是否相同,以測試半導(dǎo)體存儲器是好是壞;在USB控制器完成對半導(dǎo)體存儲器的讀寫測試后,USB控制器經(jīng)由USB接口向主機(jī)傳送測試結(jié)果數(shù)據(jù)。文檔編號G06F11/22GKCN1321374SQ03106705公開日2007年6月13日申請日期2003年2月27日發(fā)明者邱延誠,葉奇典,邱文彬申請人:義隆電子股份有限公司導(dǎo)出引文BiBTeX,EndNote,RefMan專利引用(1),