# Patent

## Title
High volume testing for USB electronic data flash cards

## Abstract

A high volume testing/formatting process is provided for Universal Serial Bus-based (USB-based) electronic data flash cards (USB devices) that meets the increasing demand for USB electronic data flash cards (USB devices). A test host is simultaneously coupled to the multiple USB devices (e.g., using a multi-port card reader or a probe fixture), a controller endpoint value is read from each of the USB devices and verified with a known good value, and then testing/formatting is performed on each of the USB devices by writing predetermined data into each USB device in a pipelined manner, then reading out and testing the predetermined data. In one embodiment, the test host implements a special a USB driver that blocks standard USB registration procedures upon detecting the plurality of USB devices. Control and/or boot code data are written onto the flash memory device (i.e., instead of being provided on a controller ROM).

## Background
RELATED APPLICATIONS
This application is a continuation-in-part (CIP) of U.S. Patent application for “ELECTRONIC DATA STORAGE MEDIUM WITH FINGERPRINT VERIFICATION CAPABILITY”, U.S. application Ser. No. 09/478,720, filed Jan. 6, 2000, and “Flash Memory Controller For Electronic Data Flash Card”, U.S. application Ser. No. 11/466,759, filed on Aug. 23, 2006, which is a CIP of “System and Method for Controlling Flash Memory”, U.S. application Ser. No. 10/789,333, filed on Feb. 26, 2004, now abandoned. This application is also related to “Integrated circuit card with fingerprint verification capability” application Ser. No. 09/366,976, filed on Aug. 4, 1999, now U.S. Pat. No. 6,547,130, all of which are incorporated herein as though set forth in full.


FIELD OF THE INVENTION
The present invention relates to an electronic data flash card, and more particularly to a system and method for testing USB electronic data flash cards during their manufacture.
BACKGROUND OF THE INVENTION
Confidential data files are often stored in floppy disks or are delivered via networks that require passwords or that use encryption coding for security. Confidential documents are sent by adding safety seals and impressions during delivery. However, confidential data files and documents are exposed to the danger that the passwords, encryption codes, safety seals and impressions may be broken (deciphered), thereby resulting in unauthorized access to the confidential information.
As flash memory technology becomes more advanced, flash memory is replacing traditional magnetic disks as storage media for mobile systems. Flash memory has significant advantages over floppy disks or magnetic hard disks such as having high-G resistance and low power dissipation. Because of the smaller physical size of flash memory, they are also more conducive to mobile systems. Accordingly, the flash memory trend has been growing because of its compatibility with portable (mobile) systems and low-power feature.
USB electronic data flash cards are portable, low power devices that utilize Universal Serial Bus (USB) technology to interface between a host computer and a flash memory device of the flash card. USB electronic data flash cards take many forms, such as pen drive storage devices, MP3 players, and digital cameras. In each instance, the USB electronic data flash card typically includes a flash memory device, a processor, and USB interface circuitry.
Due to their rapidly increasing popularity, the manufacturing volume of USB electronic data flash cards (or USB flash cards) continues to grow. With increasing production volume, a problem faced by the manufacturer is how to efficiently and reliably test the USB flash cards before shipping to the end users. Conventional testing methods utilize a personal computer (PC) to test the USB flash cards for low cost reasons, also for compatibility and reliability reasons (i.e., so that the end user, who typically utilizes the USE flash card in conjunction with a PC, will be able to reliably use the USB flash card immediately after purchase). A problem with such conventional testing methods utilizing PC is that normal PC WindowsTM (or MACTM) operating systems only support a few USB devices at a time, and a significant amount of time is required to manually plug in each USB flash card, for the operating system to detect and test the USB flash cards, and then to manually unplug each USB flash card. As such, conventional testing methods cannot keep up with the increasing manufacturing volume.
What is needed is a high volume testing method that meets the increasing demand for USB electronic data flash cards.
SUMMARY OF THE INVENTION
The present invention is generally directed to an electronic data flash card including a flash memory device, an optional fingerprint sensor, an input-output interface circuit and a processing unit. The electronic data flash card is adapted to be accessed by a host (external) computer such as a personal computer, notebook computer or other electronic host device. As an electronic data flash card is easier to carry and durable for ruggedness, personal data can be stored inside the flash memory device in an encrypted form such that it can only be accessed, for example, by way of the optional fingerprint sensor associated with card body to make sure unauthorized person cannot misuse the card.
The present invention is also directed to a high volume testing/formatting process for Universal Serial Bus-based (USE-based) electronic data flash cards (USB devices) that meets the increasing demand for USB electronic data flash cards (USB devices). In particular, a system and method is provided for high volume formatting/testing of USB devices in which a test host is simultaneously coupled to the multiple USB devices (e.g., using a multi-port card reader or a probe fixture), a controller endpoint value is read from each of the USB devices and verified with a known good value, and then formatting is performed on each of the USB devices in a “pipelined” manner by writing predetermined data into each USB device. The USB devices are then tested by reading out and testing the predetermined data. In one embodiment, the test host implements a special USB driver that blocks standard USB registration procedures upon detecting the plurality of USB devices. By bypassing conventional USB registration procedures and verifying the controller endpoint values before testing/formatting, the present invention facilitates the efficient and high volume testing/formatting of USB devices by eliminating the time consuming and unnecessary registration process. In addition, by writing data into the USB devices in a “pipelined” manner, the present invention facilitates high volume formatting/testing of USB devices that greatly reduces production time.
In accordance with an aspect of the present invention, each USB device is modified to minimize controller ROM size by storing selected control code data, boot code data, device information and configuration information on the flash memory device. Because much of this code and information is required and accessed during the conventional USB registration process (i.e., because the conventional USB registration process presumes this code and information is available in controller ROM), bypassing the conventional USB registration process provides a further function of avoiding system failure or long delays as the host system waits for this code and information when an un-formatted USB device (with blank flash memory device) is coupled to the test host.
In accordance with another aspect of the present invention, the purpose of the testing/formatting process includes checking that all chips are correctly soldered, that current consumption levels meet specifications, and that each component device (e.g., the controller and flash memory devices) is compatible with the testing/formatting program being implemented by the test host system. The formatting process serves to load all entry point values needed for correct controller operation, erase the flash memory and build up redundant bad_block_list files for future bad block management, and to provide low level formatting that that facilitates OS recognition.
In accordance with an embodiment of the present invention, the controller endpoint values read during the initial stages of the testing/formatting process include at least one of a configuration descriptor value, a mass storage class code value, a vendor identification value, and a product identification value. When the controller endpoint value read from each USB device matches the known good value stored in the test host, a flag displayed on the test host monitor is asserted to indicate success (e.g., the flag changes from red to green).
In accordance with another embodiment, the testing/formatting process includes one or more of scanning bad block data stored in the flash memory device and verifying that reserved storage capacity of each flash memory device is equal to a predetermined amount (e.g., a specified percentage of the total memory capacity), writing at least two copies of the bad block data into the flash memory device, writing control code data and/or boot code data into the flash memory device, writing customer-provided data into the flash memory device, and writing updated serial number, date code, and product version code values into the flash memory device.



BRIEF DESCRIPTION OF THE DRAWINGS
These and other features, aspects and advantages of the present invention will become better understood with regard to the following description, appended claims, and accompanying drawings, where:
FIG. 1(A) is a block diagram showing an electronic data flash card and host system according to an embodiment of the present invention.
FIG. 1(B) is a block diagram showing an electronic data flash card and host system according to another embodiment of the present invention.
FIG. 1(C) is a block diagram showing an electronic data flash card and host system according to another embodiment of the present invention.
FIG. 1(D) is a block diagram of a processing unit utilized in an electronic data flash card in accordance with another embodiment of the present invention.
FIG. 2 is a flow diagram showing a generalized method for high volume manufacturing of USB devices according to an embodiment of the present invention.
FIG. 3(A) is a plan view showing an exemplary surface mount technology (SMT) panel produced in accordance with an embodiment of the present invention.
FIG. 3(B) is a plan view showing a printed circuit board assembly (PCBA) separated from the panel of FIG. 3(A).
FIG. 3(C) is a plan view showing the PCBA of FIG. 3(B) after packaging.
FIGS. 4(A) and 4(B) are simplified perspective views showing test host systems utilized in accordance with alternative embodiments of the present invention.
FIGS. 5(A) and 5(B) are simplified flow diagrams showing conventional and novel methods for testing and formatting USB devices, respectively.
FIG. 6 is a flow diagram showing a simplified method for testing and formatting USB devices according to an embodiment of the present invention.
FIGS. 6(A), 6(B), 6(C), 6(D) and 6(E) are flow diagrams showing portions of the testing and formatting method of FIG. 6 in additional detail.
FIG. 7 is a simplified block diagram depicting an exemplary USB device produced in accordance with another embodiment of the present invention.
FIG. 8 is a simplified block diagram depicting the various address structures and partitions of a flash memory device utilized in a USB device according to an embodiment of the present invention.
FIG. 9 is simplified diagram showing exemplary bad block list structures stored in a flash memory device of a USB device according to an embodiment of the present invention.
FIG. 10(A) is a flow diagram of a manufacture software algorithm for performing the testing/formatting process according to another embodiment of the present invention.
FIG. 10(B) is a flow diagram of a manufacture software algorithm for performing enumeration of a USB device according to another embodiment of the present invention.
FIG. 11 is an operational flowchart showing the overall operation of the test host system with respect to USB devices according to another embodiment of the present invention.
FIGS. 12(A) and 12(B) are simplified diagrams showing dual channel and single channel defect flash chip operations, respectively, according to another embodiment of the present invention.
FIGS. 13(A) and 13(B) are block diagrams depicting the flash memory configurations associated with the dual channel and single channel defect flash chip operations of FIGS. 12(A) and 12(B), respectively.
FIG. 14 is a block diagram showing depicting the information stored in various memory fields of each USB device formatted in accordance with the present invention.



DETAILED DESCRIPTION OF THE DRAWINGS
The present invention relates to an improvement in methods for producing electronic data flash cards. Although the present invention is described below with specific reference to USB electronic data flash cards, the present novel aspects of the present invention can be used in the manufacture of a wide range of flash card types, including but not limited to PCI Express, Secure Digital (SD), Memory Stick (MS), Compact Flash (CF), IDE and SATA flash memory cards.
Referring to FIG. 1(A), according to an embodiment of the present invention, an electronic data flash card 10 is adapted to be accessed by an external (host) computer 9 either via an interface bus 13 or a card reader (not shown) or other interface mechanism (not shown), and includes a card body 1, a processing unit 2, one or more flash memory devices 3, an optional fingerprint sensor (security device) 4, an input/output interface circuit 5, an optional display unit 6, an optional power source (e.g., battery) 7, and an optional function key set 8.
Flash memory device 3 is mounted on the card body 1, and stores in a known manner therein a data file, a reference password, and fingerprint reference data obtained by scanning a fingerprint of a person authorized to access the data file. The data file can be a picture file or a text file. As set forth below, the flash memory device 3 also includes boot code data and control code data.
The fingerprint sensor 4 is mounted on the card body 1, and is adapted to scan a fingerprint of a user of electronic data flash card 10 to generate fingerprint scan data. One example of the fingerprint sensor 4 that can be used in the present invention is that disclosed in a co-owned U.S. Pat. No. 6,547,130, entitled “INTEGRATED CIRCUIT CARD WITH FINGERPRINT VERIFICATION CAPABILITY”, the entire disclosure of which is incorporated herein by reference. The fingerprint sensor described in the above patent includes an array of scan cells that defines a fingerprint scanning area. The fingerprint scan data includes a plurality of scan line data obtained by scanning corresponding lines of array of scan cells. The lines of array of scan cells are scanned in a row direction as well as column direction of said array. Each of the scan cells generates a first logic signal upon detection of a ridge in the fingerprint of the holder of card body, and a second logic signal upon detection of a valley in the fingerprint of the holder of card body.
The input/output interface circuit 5 is mounted on the card body 1, and can be activated so as to establish communication with the host computer 9 by way of an appropriate socket via an interface bus 13 or a card reader. In one embodiment, input/output interface circuit 5 includes circuits and control logic associated with one of a Universal Serial Bus (USB), PCMCIA and RS232 interface structure that is connectable to an associated socket connected to or mounted on the host computer 9. In another embodiment, the input/output interface circuit 5 may include one of a Secure Digital (SD) interface circuit, a Multi-Media Card (MMC) interface circuit, a Compact Flash (CF) interface circuit, a Memory Stick (MS) interface circuit, a PCI-Express interface circuit, a Integrated Drive Electronics (IDE) interface circuit, and a Serial Advanced Technology Attachment (SATA) interface circuit, which interface with the host computer 9 via an interface bus 13 or a card reader.
The processing unit 2 is mounted on the card body 1, and is connected to the memory device 3, the fingerprint sensor 4 and the input/output interface circuit 5 by way of associated conductive traces or wires disposed on card body 1. In one embodiment, processing unit 2 is one of an 8051, 8052, 80286 microprocessor available, for example, from Intel Corporation. In other embodiments, processing unit 2 includes a RISC, ARM, MIPS or other digital signal processor. In accordance with an aspect of the present invention, processing unit 2 is controlled by a program stored at least partially in flash memory device 3 such that processing unit 2 is operable selectively in: (1) a programming mode, where the processing unit 2 activates the input/output interface circuit 5 to receive the data file, the boot code data, the control code data, and optional fingerprint reference data from the host computer 9, and to store the data in the flash memory device 3 (as an option, in a compressed format to increase storage capacity of the memory device 3); (2) a reset mode in which the boot code data and the control code data are read from the flash memory device and utilized to configure and control the operation of the processing unit 2; (3) a data retrieving mode, where the processing unit 2 reads the fingerprint scan data from the fingerprint sensor 4, compares the fingerprint scan data with at least a segment of the fingerprint reference data in the flash memory device 3 to verify if the user of the electronic data flash card 10 is authorized to access the data file stored in the flash memory device 3, and activates the input/output interface circuit 5 to transmit the data file to the host computer 9 upon verifying that the user is authorized to access the data file stored in the flash memory device 3; (4) a code updating mode in which the boot code data and the control code data are updated in the memory device 3; and (5) a data resetting mode, where the data file and the fingerprint reference data are erased from the memory device 3. In operation, host computer 9 sends write and read requests to electronic data flash card 10 via a card reader or interface bus 13 and input/output interface circuit 5 to the processing unit 2, which in turn utilizes a flash memory controller (not shown) to read from or write to the associated one or more flash memory device 3. In one embodiment, the processing unit 2 automatically initiates the data resetting mode operation upon detecting that a preset time period has elapsed since storage of the data file and the fingerprint reference data in the memory device 3.
8051, 8052 and 80286 are microprocessors developed by Intel Corporation, using complex instruction set. 8051 and 8052 have 8-bit data bus, whereas 80286 has 16-bit data bus. RISC, ARM and MIPS are microprocessors using the architecture of reduced instruction set. 8051 and 8052 are widely used in low cost application. 80286 can be used for higher speed/performance applications. RISC, ARM and MIPS are higher cost microprocessors better suited to more complex applications such as advanced ECC (Error Correction Code) and data encryption.
The optional power source 7 is mounted on the card body 1, and is connected to the processing unit 2 and other associated units on card body 1 for supplying needed electrical power thereto.
The optional function key set 8, which is mounted on the card body 1, is connected to the processing unit 2, and is operable so as to initiate operation of processing unit 2 in a selected one of the programming, reset, data retrieving, code updating, and data resetting modes. The function key set 8 is operable to provide an input password to the processing unit 2. The processing unit 2 compares the input password with the reference password stored in the flash memory device 3, and initiates authorized operation of electronic data flash card 10 upon verifying that the input password corresponds with the reference password.
The optional display unit 6 is mounted on the card body 1, and is connected to and controlled by the processing unit 2 for showing the data file exchanged with the host computer 9 and for displaying the operating status of the electronic data flash card 10.
The following are some of the advantages of the present invention: first, the electronic data flash card has a small volume but a large storage capability, thereby resulting in convenience during data transfer; and second, because everyone has a unique fingerprint, the electronic data flash card only permits authorized persons to access the data files stored therein, thereby resulting in enhanced security.
Additional features and advantages of the present invention are set forth below.
FIG. 1(B) is a block diagram of an electronic data flash card 10A in accordance with an alternative embodiment of the present invention in which a generalized sensor unit 4A is provided in place of the fingerprint sensor described above. Exemplary sensor units include retina (eye) scanners or voice recognition devices that are capable of detecting a physical characteristic of an authorized user, and operates in a manner similar to that described above with reference to fingerprint sensor 4.
FIG. 1(C) is a block diagram of an electronic data flash card 10B in accordance with yet another alternative embodiment of the present invention. Electronic data flash card 10B omits the fingerprint sensor and the associated user identification process. The electronic data flash card 10B also includes a highly integrated processing unit 2B including an input/output interface circuit 5B and a flash memory controller 21 for integration cost reduction reasons. Input/output interface circuit 5B includes a transceiver block, a serial interface engine block, data buffers, registers and interrupt logic. Input/output interface circuit 5B is coupled to an internal bus to allow for the various elements of input/output interface circuit 5B to communicate with the elements of flash memory controller 21. Flash memory controller 21 includes a microprocessor unit, a ROM, a RAM, flash memory controller logic, error correction code logic, and general purpose input/output (GPIO) logic. In one embodiment, the GPIO logic is coupled to a plurality of LEDs for status indication such as power good, read/write flash activity, etc., and other I/O devices. Flash memory controller 21 is coupled to one or more flash memory devices 3B.
In this embodiment, host computer 9B includes a function key set 8B, is connected to the processing unit 2B via an interface bus or a card reader when electronic data flash card 10B is in operation. Function key set 8B is used to selectively set electronic data flash card 10B in one of the programming, reset, data retrieving, code updating, and data resetting modes. The function key set 8B is also operable to provide an input password to the host computer 9B. The processing unit 2B compares the input password with the reference password stored in the flash memory device 3B, and initiates authorized operation of electronic data flash card 10B upon verifying that the input password corresponds with the reference password.
Also in this embodiment, a host computer 9B includes display unit 6B, is connected to the processing unit 2B when electronic data flash card 10B is in operation via an interface bus or a card reader. Display unit 6B is used for showing the data file exchanged with the host computer 98, and for showing the operating status of the electronic data flash card 10B.
In accordance with an embodiment of the present invention, processing unit 2 includes a flash memory type algorithm for detection if a flash memory type is supported by the flash memory controller logic. Advance of flash memory technology has also created a greater variety of flash memory types for reasons of performance, cost and capacity. Due to the potential shortage, cost reason, the need for sourcing flexibility of flash memories, and the fact that unique control is required to access each different flash memory type, it is important to implement a processing unit with intelligent algorithm to detect and access the different flash memory types. The typical flash memory contains ID code which identifies the flash memory type, the manufacturer, and the features/parameters of the flash memory such as page size, block size, organization, capacity, etc. The intelligent algorithm controls processing unit 2 at reset to read the ID of flash memory 3, and to compare the ID against the table of flash memory types that are supported by the flash memory controller. If the flash memory 3 is not supported, the flash memory controller will not be able to access the flash memory 3, and the incompatibility can be indicated by LED via the output port of the flash memory controller. If the flash memory 3 is supported, the flash memory controller will be configured in the manner set forth below before the flash memory controller begins accessing the flash memory 3. Flash memory controllers with such intelligent algorithms are disclosed, for example, in co-pending U.S. patent application Ser. No. 11/466,759, entitled FLASH MEMORY CONTROLLER FOR ELECTRONIC DATA FLASH CARD, which is incorporated herein by reference in its entirety.
The electronic data flash card is a flash memory system uses flash memories for data storage. Typically the system architecture of flash memory system includes flash memory controller having processor, ROM and RAM, in which the boot code and control code are residing in the ROM as ROM code. Upon power up, the processor fetches the boot code for execution, the boot code initializes the system components and loads the control code into RAM. Once the control code is loaded into the RAM, it takes control of the system. The control code includes drivers to perform basic tasks such as controlling and allocating memory, prioritizing the processing of instructions, controlling input and output ports etc. The control code also includes the flash type detection algorithm and the flash memory parameters data.
The ROM is a read only memory, after the flash memory controller design is done and moved into production, the software code in ROM is frozen and cannot be changed to support new flash types released to the market in the later time. In such a situation, a new flash memory controller has to be developed to support new flash memories from time to time, which is costly and time consuming.
FIG. 1(D) shows processing unit 2A of FIG. 1(B) in additional detail. Electronic data flash card 10A includes a power regulator 22 for providing one or more power supplies. The power supplies provide different voltages to processing unit 2A and other associated units of electronic data flash card 10A according to the power requirements. Capacitors (not shown) may be required for power stability. Electronic data flash card 10A includes a reset circuit 23 for providing a reset signal to processing unit 2A. Upon power up, reset circuit 23 asserts reset signal to all units. After internal voltages reach a stable level, the reset signal is then de-asserted, and resisters and capacitors (not shown) are provided for adequate reset timing adjustment. Electronic data flash card 10A also includes a quartz crystal oscillator (not shown) to provide the fundamental frequency to a PLL within processing unit 2A.
In accordance with an embodiment of the present invention, input/output interface circuit 5A, reset circuit 23, and power regulator 22 are integrated or partially integrated within processing unit 2A. The high integration substantially reduces the overall space needed, the complexity, and the cost of manufacturing. Compactness and reduced cost are key factors to removable devices such as the electronic data flash cards described herein. Modern IC (Integrated Circuits) packaging can integrate discrete IC components with different technology and material into one IC package. For example, the input/output interface circuit is analog and digital mixed circuitry, which can be integrated into one MCP (Multi-Chip Package) with the processing unit. The reset circuit and power regulator are analog circuitry, which can also be integrated into the MCP with the processing unit. The nature of mixed signal IC technology allows the hybrid integration of both analog and digital circuitry. Therefore, higher integration can be incorporated into the same chip/die for the processing unit which includes input/output interface circuit, flash memory controller, reset circuit and power regulator.
In accordance with another aspect of the present invention, an electronic data flash card includes boot code and the control code stored in the flash memory instead of in the flash memory controller ROM. As a result, the boot code and control code can be updated in the field without having to change the flash memory controller. A flash card including boot code and control code stored in flash memory is disclosed, for example, in co-pending U.S. patent application Ser. No. 11/611,811, entitled FLASH MEMORY CONTROLLER FOR ELECTRONIC DATA FLASH CARD, filed Dec. 13, 2006, which is incorporated herein by reference in its entirety.
FIG. 2 is a flow chart showing a generalized method for manufacturing USB devices according to an embodiment of the present invention, and FIGS. 3(A) to 3(C) are simplified plan views showing USE devices during various stages of the manufacturing process. Referring to block 50 of FIG. 2, the manufacturing method begins by mounting all components of the USB device (e.g., flash memory, controller, and all passive components such as resistors and capacitors) on panels that include multiple printed circuit boards (PCBs), e.g., using surface mount technology (SMT). FIG. 3(A) shows an exemplary SMT panel 211 including multiple PCB assemblies 212 that are connected along respective edges in a manner that facilitates efficient assembly of various SMT components including, for example, controller chip 214, flash chip 215, and other devices omitted for clarity. PCB assemblies 212 include wiring traces that facilitate electrical connections between the various SMT components, and between controller chip 214 and four USB pins 217 (i.e., VDD, D+, D− and GND) according to known practices. Referring again to FIG. 2, testing/formatting of the respective PCB assemblies 212 is then performed according to the present invention using the process described in additional detail below. In one embodiment, panel 211 (see FIG. 3(A)) is subjected to singulation (block 52A), whereby the individual PCBAs 212 are cut or otherwise separated from each other, and then the individual (singulated) PCB assemblies (PCBAs) 212 (see FIG. 3(B)) are subjected to the test/format procedure (block 52B). In an alternative embodiment, PCBAs 212 are subjected to testing while still connected to panel 211 (block 53A), and then the tested/formatted PCBAs 212 are singulated (block 53B). Testing/formatting PCBAs 212 while still attached to panel 211 is presently preferred by the inventors in that this alternative allows multiple PCBAs 212 to be maintained in a fixed relationship for testing by a single fixture, thus avoiding the additional processing time needed to handle individual PCBAs 212 (e.g., to insert PCBAs 212 piece by piece into a test fixture). Referring again to FIG. 2, each PCBA 212 that successfully completes testing/formatting is subjected to product packaging (block 54) whereby a housing is molded or mounted over the components of each PCBA 212, thereby completing USB device 10B for final testing (block 55) and shipping preparation. Note that the final test performed in block 55 differs from the testing/formatting performed in blocks 52B and 53A in that, because all initial contents are downloaded into each packaged device 10B, the final test performed in block 55 involves a simple plug-in test to check, e.g., device capacity to make sure an end user's expectations are satisfied. FIGS. 4(A) and 4(B) are perspective views showing exemplary systems for testing/formatting USB devices in accordance with the present invention. FIG. 4(A) shows a first system for testing individual (singulated) PCBAs (alternatively referred to below as Devices Under Test (DUTs)) in accordance with block 52B of FIG. 2. The first system includes a PC test host (e.g., a general purpose personal computer (PC)) 202, a monitor 201, a USB multiple card reader 204, and other necessary peripheral 10 devices such as a keyboard and mouse (not shown). In one embodiment, all test parameters are shown on monitor 201 for monitoring test status, where color flags are used to distinguish test Pass/Fail. Some parameters utilized during the test may be keyed in by an operator, as indicated on monitor 201. USB card reader 204 includes multiple (e.g., sixteen or more) USB sockets (receptacles), where each socket has an assigned number (e.g., #1, #2, etc.) corresponding to flags displayed on monitor 201. Card reader 204 is connected to test host 202 by normal USB cables that are connected to a standard USB socket 203 of test host 202. As each DUT is plugged into a corresponding port of multiple card reader 204, which couples the DUT to test host 202 by way of USB port 203. Detection of each plugged-in DUT causes a corresponding flag displayed on monitor 201 to reflect the detection (e.g., the corresponding flag changes from red to green upon detection).
FIG. 4(B) shows a second system that utilizes a probing fixture to test pre-assembled PCBAs 212 that are still connected to panel 211. The second system includes a SMT probe test host (e.g., a general purpose personal computer (PC)) 207, monitor 201, a probe fixture 205, and other necessary peripheral IO devices. Probe fixture 205 includes multiple test probes 206 are grouped and arranged to contact USB pins 217 of each PCBA 212 when fixture 205 is lowered onto a panel 211. Probes 206 provide the four signal paths that are used to format/test each device of panel 211. A congregate cable 208 is used to connect fixture 205 to test host 207. FIG. 5(A) is a simplified flow diagram showing a conventional method for testing and formatting a conventional USB device using a conventional USB test system that utilizes a conventional host operating system (OS) USB driver (block 301). As indicated in block 302, upon connecting a conventional USB DUT to the host system, the host OS registers the conventional USB DUT using pre-established USB protocols. The pre-established USB protocols are based on the assumption that certain device information (e.g., device identifications and serial numbers which may be identical before test) are stored in predetermined locations on a read-only memory (ROM) device on the controller that is provided on the DUT. In addition, the pre-established USB protocols require that the registration process be performed on one DUT at a time (i.e., the registration process must be completed for one DUT before beginning the registration process on another DUT), if one fails, whole chain of DUTs will be held until operator re-installs the process. As indicated in block 302, a problem with utilizing these pre-established USB protocols is that they take a significant amount of time to register each DUT, and to store the registration information on the host OS registry bank (and eventually stored on the host's hard disk), and they are not suitable for simultaneously testing/formatting a large number of DUTs. Additional problems with the conventional pre-established USB protocols are that they are not compatible with the novel USB device described herein (i.e., where control code data and boot code data, along with component and device identification information, are stored in the flash memory device instead of in predetermined locations on a ROM). For example, as indicated in blocks 304 and 305, because untested/unformatted devices formed in accordance with the present invention do not include component identification serial numbers and product identification numbers, the conventional pre-established USB protocols may cause the host test system to hang up (block 306), and/or to take a long time to complete the test (block 307), and/or to simply fail to complete the formatting/testing process (block 308). FIG. 5(B) is a simplified flow diagram showing a method for testing and formatting the novel USB device of the present invention according to another embodiment of the present invention. As shown in block 501, new software is loaded into the test host that blocks the traditional OS USB registry driver, and implements a dedicated USB test. The purpose of blocking the conventional OS USB driver is to make the testing time shorter by eliminating the time consuming registration process that has the problems discussed above. The dedicated USB test bypasses the portions of the registration process that request information from the USB device (which is not yet written into the flash memory device), and instead initiates the testing/formatting process by directing the controller of the USB device to write at least one of boot code data, control code data, and device identification data into the flash device. In particular, as indicated in block 502, to avoid regular lengthy registration of USB devices, which number might be over sixteen devices at a time, the testing/formatting method software running on the test host system is modified to begin by reading controller hard-coded descriptor values and comparing these descriptor values with stored program parameters to verify that the DUT is ready to be formatted, and to provide the DUT with correct parameters for normal operation. Only a successful check will continue the software flow. Next, as indicated in block 503, master Boot Block (MBR), file allocation table (FAT) and initial system files are written into the flash device in order to make the USB device available for end customer usage. Traditional USB drivers will not perform this formatting process because conventional USB devices are programmed correctly for initial system operation using a ROM. This formatting step is crucial for manufacture software purpose, to facilitate later use. In addition, as shown in block 504, several values are written into the flash to meet USB specifications. The device serial number is one such value, and the device serial number written to each device is changed either sequentially or randomly by software from some starting number keyed in by the test operator. Other variables, like Product ID for example, also need to be changed by different product or volume capacity. Again, conventional OS USB registry drivers do not perform these value and variable writing functions, thus making volume USB testing unfeasible.
As indicated in block 505, 506 and 507, the present invention provides several benefits over conventional OS USB registry drivers for testing because the present invention utilizes specially-designed manufacture software, the time required to format/test a large volume of USB devices is minimized. In addition, partitions (or volumes, drive letters) can be customized to fit each different requirement according to known techniques. FIG. 6 is a simplified flow diagram showing a USB device manufacturing formatting/testing method according to a specific embodiment of the present invention. The method of FIG. 6 may be used for sigulated devices or multiple devices connected to a panel to achieve a high speed “pipelined” formatting/testing procedure, instead of slow individual DUT testing (e.g., as shown in FIG. 3(A)).
As indicated in block 101, prior to beginning the formatting/testing process on a selected DUT (or group of DUTs), modified USB driver software is installed on the test host system that is operable to block the conventional OS USB driver section identified as “HCDI.sys”. Software commands that can be used to prevent the execution of section “HCDI.sys” are known to those skilled in the art. In one embodiment, some minor files of the OS USB Bus Driver are replaced for this purpose, as is understood by those skilled in the art.
In block 102, one or more “brand new” (unformatted and untested) USB devices formed in accordance with the present invention are probed, plugged or otherwise coupled to a suitable test fixture (e.g., one of the fixtures shown in FIGS. 4(A) and 4(B)).
In block 110, an initial brief check of the multiple USB devices is then performed by checking contents in the controller hard-code values, which will identify most common errors. In particular, as shown in FIG. 6(A), once the USB devices are coupled, a count value is set at “1”, and the host test software reads at least some hard-coded data stored in a first device (e.g., one or more of the configuration, interface, and endpoint descriptors that are hard coded in the controller ROM (block 120), mass storage class codes (block 121), and vendor identification (VID) and product identification (PID) values (block 122)), and compares the hard-coded data with predetermined known-good values to determine if an incorrect USB device is coupled to the test host. If an incorrect device is detected (NO branch in block 123), a warning signal is generated by way of a colored (e.g., red) display flag associated with the corresponding DUT (e.g., “DUT[1]” or “DUT[2]”, generally referred to as “DUT[COUNT]”; block 103A), alerting an operator to remove the incorrect device. After the successful brief check of a selected device (YES branch in block 123), a color (e.g., yellow) display flag or other graphic signal is displayed on the host test system (block 103B). The device count value is then compared against a predetermined maximum device number corresponding to the number of devices that are currently under test (e.g., all devices connected to a panel) in block 103C. If the count value is less than the maximum device number, then the count is incremented (block 102A) and the brief check is repeated on another USB device coupled to the test system (i.e., blocks 120-123 and block 103 are repeated), until every device coupled to the host test system has been successfully briefly checked (YES branch in block 103C), at which point the count value is reset. As indicated in block 103D, once initialization of all of the DUTs is completed, the process is optionally paused and waits for a “continue” signal issued by an operator (e.g., pressing a space bar on the host system keyboard, or using a mouse to click a START icon on monitor display). This pause allows the operator time to visually check the display flags for all of the DUTs, and to replace any DUTs that are indicated as being defective (in this case, the initialization process will be repeated for the newly added DUT). By briefly checking at least some hard-coded data before testing and/or formatting the flash memory device, the method according to the present invention facilitates efficient and reliable processing of USB devices.
Referring again to FIG. 6, once the brief initial check of all USB devices is completed, the test host performs the actual testing and formatting of the flash memory device. This testing/formatting process begins by reserving the first block of flash memory for registering (storing) predetermined code entry points (block 130; FIG. 6). As shown in FIG. 6(B), in one embodiment, this reservation process is performed on each DUT in succession by setting a count value to “1” (block 131), selecting the current DUT (DUT[Count], reserving the first block of flash memory in the current DUT for entry point registers (block 133), and then incrementing the count value (blocks 135, 137) and repeating the reservation process for the next DUT until all of the DUTs have been processed (“Yes” branch in block 135). The code entry points that are eventually stored in the reserved space include an OS entry point, a firmware entry point, and a non-volatile register entry point. Note that the actual code entry point values are written (loaded) in associated fields of the reserved first block after the testing/formatting process is completed.
Next, the capacity of the flash memory provided on each USB device is checked (block 140; FIG. 6). FIG. 6(C) is a flow diagram showing the capacity check process of each DUT according to one embodiment. The process begins be setting the count value to “1” (block 141). The memory capacity check is then sequentially performed in each DUT by reading initial bad block information provided in the flash memory device (i.e., reading flags located in fixed locations of the flash memory device that are programmed by the flash memory device manufacturer or vendor; block 142). The bad block information generated from the scan is then used to determine whether the specified percentage of reserved memory is present (blocks 143 and 144), and the DUT is rejected if insufficient reserve memory is provided. A predetermined amount (e.g., 20%) of reserve memory (expressed as a specified percentage of the total “good” memory) is required according to test specifications for future bad block data relocation purposes (i.e., at some point when one or more flash cells of a good block fail, the data from that good block is copied and relocated in a reserved good memory block). Note that, for USB devices having an even number (two or more) flash memory chips, when a high percentage of bad blocks is detected, dual channel (parallel accessing two chips) operation is not suitable for mass volume production, only single channel (access) is recommended. By checking the flash memory reserve capacity of each USB device before formatting the flash memory, the present invention facilitates early identification and rejection of unsuitable USB devices, thereby reducing manufacturing costs by minimizing the total amount of time needed to program multiple USB devices. After an acceptable reserve capacity is verified (YES branch in block 144), two or more copies of the bad block identification data (bad_block_list) are stored in reserved areas of the flash memory for safety purposes (block 145). In one embodiment, the bad block data is stored in memory locations that are located after the memory locations reserved for the entry point data (e.g., the second and third memory blocks), and two additional memory blocks (e.g., the fourth and fifth memory blocks) are reserved for future expansion. Storing two copies of the bad block data provides redundancy that assures reliable long-term operation of the USB device. Upon completing the capacity check and bad block data storage process for the first DUT, the count value is incremented (block 147), and the capacity check and bad block data storage process is sequentially repeated in each DUT until all DUTs have been processed (“Yes” branch in block 146).
Next, in accordance with another aspect of the present invention, at least one of control code data (dynamic control firmware) and boot code data is written into selected memory blocks of the flash memory using a burst writing process (block 150, FIG. 6). The control firmware is generated by the manufacturer to facilitate later controller operation. Typically, conventional USB devices include two categories of ROM-based control code, static control code and dynamic control code. Static control code consists of an initial reset jump address plus basic flash erase/write/read operation state machine information that is designed to accommodate a wide range of flash memory types (e.g., the static control code includes relatively long write time delays that facilitate write operations to “worst case” (slowest) flash memory types). In accordance with the present invention, this static control code is stored in a ROM that is accessed by the controller at start-up. Dynamic control code includes timing adjustment control information for the particular flash memory type utilized by the DUT to both facilitate optimal flash memory performance (e.g., optimal write operation times), and to maintain field adjustability. In accordance with an aspect of the present invention, this dynamic control firmware is stored in selected blocks of the flash memory in order to reduce controller die size and to facilitate field adjustability. After the dynamic control firmware is written into the flash memory, a control bit of the DUT is reset to move control of the DUT processor from the static control code to the dynamic firmware code. To facilitate this move to the dynamic firmware, the static “jump start” firmware provided in the ROM includes an entry point address of the dynamic control code for further execution access.
FIG. 6(D) is a simplified flow diagram illustrating a burst writing process for writing the control firmware into each DUT in a “pipelined” manner that minimizes processing time. A count value associated with a current DUT is initialized (block 151), and then one page (or block) of instructions and/or data are written into the SRAM (volatile) buffer of the first DUT (block 152). As indicated to the right of block 152, the page of instructions and/or data include writing the control firmware in the block immediately following the bad block list. After one page is written, the host system instructs the DUT to write the instructions/data from the SRAM buffer into the flash memory cells (block 153). Note that at this stage of the formatting/testing process the dynamic control code is not yet written into the flash memory, so the writing process employed by the DUT is based on the slower static control code. In accordance with the present invention, in order to facilitate this writing process in a time efficient manner, once one page of instructions/data are written into the SRAM and the DUT is instructed to perform the write operation, the host system “moves on” to the next DUT (i.e., the count value is incremented in block 157, and then the host system writes the same instructions/data into the next sequential DUT). Eventually, the page of instructions/data is written into each of the DUTs (YES branch in block 155). At this point, the host system determines if all necessary instructions data have been written into each of the DUTs. If not, then the count number is re-initialized (block 151), and the write process is repeated to write the next page of instructions/data into the DUTs. Note that, when the second page of instructions/data is written into the first DUT (i.e., DUT[1]), the first DUT has completed the process of writing the first page of instructions/data from its SRAM buffer into the designated block of flash memory. Using this “pipelines” approach, the process of writing dynamic control code into each DUT is performed in a highly efficient manner that avoids long delays while the host system waits for each DUT to write information/data into its flash memory.
In addition to the control firmware, in one embodiment of the invention, one or more blocks of the flash memory are designated as non-volatile registers, and these non-volatile registers are used to store write-protected information, for example, volume partition numbers and user passwords, whose values cannot be lost as power is switch off after initial usage. This information is written into each DUT either during the burst writing process described above, or in a subsequent (i.e., second) burst writing process after the dynamic control code is written into each DUT. Note that, if a subsequent burst writing process is used, then the dynamic control code may be used to speed up the writing process.
Next, as indicated in block 160 (FIG. 6), low-level formatting of the flash memory based on customer-provided specification is performed. In one embodiment, this low-level formatting process includes writing Master Boot Block (MBR) information, file allocation table (FAT1/2) information, and initial root directory information into selected memory blocks of the flash memory. Without this information, the USB device is unusable by end customers. Note that, if an end customer obtains a USB device that has not been subjected to low-level formatting, the USB device will be unusable, and the end customer cannot perform this step themselves by utilizing OS provided format software. However, after low-level formatting is completed, the end customer is able to change FAT styles as they wish. The low-level-formatting information is written into each DUT either during the burst writing process described above (e.g., as indicated by block 160A in FIG. 6(D)), or in a subsequent burst writing process after the dynamic control code is written into each DUT.
Following low-level formatting, updated serial number, date code, and product version code values are written into the non-volatile registers (block 170; FIG. 6). The descriptor information is written into each DUT either during the burst writing process described above (e.g., as indicated by block 170A in FIG. 6(D)), or in a subsequent burst writing process after the dynamic control code is written into each DUT.
Next, all information written to the flash memory is read by the test host (block 180), and then compared against pre-stored values in a buffer of the test host for verification that the USB devices is properly formatted. A verification process in accordance with an embodiment of the present invention is shown in FIG. 6(E). A count value is set to “1” (block 181), and then the host system directs the current DUT to read back predetermined information from the flash memory (192). Note that the read-back process is performed using the dynamic control code previously written into the DUT. The information read from the DUT is then compared with the pre-stored data in the host system (block 183). If any of the data read from the USB device is incorrect (NO branch in block 184), a corresponding flag is displayed (e.g., a red flag) on the host test system monitor indicating to an operator that the USB device failed the testing/formatting process (block 185A). Conversely, if all of the data read from the current USB device is correct (YES branch in block 184), a corresponding flag is displayed (e.g., a green flag) on the host test system monitor indicating that the testing/formatting process is successful (block 185B). The device count value is then compared against the predetermined maximum device number corresponding to the number of devices that are currently under test (e.g., all devices connected to a panel) in block 187. If the count value is less than the maximum device number, then the device count is incremented by one (block 189), and the testing process is repeated on another USB device coupled to the test host until every device coupled to the host test system has been checked (Yes branch in block 187). Then the test host program terminates.
FIG. 7 is a simplified block diagram depicting an exemplary USB device 10B in accordance with a specific embodiment of the present invention. As set forth above, USB device 10B includes a flash card controller 214 and one or more flash memory devices 215.
Referring to the left side of FIG. 7, flash memory 215, which is depicted in a simplified form in FIG. 7 and described in additional detail below, includes entry point registers 420, bad block data 413, a control select bit 415A, control firmware 415B, and non-volatile registers 421. As indicated, communication between controller 214 and flash memory 215 is directed through entry point registers 420, which direct controller requests to control firmware 415B and non-volatile registers 421, depending on the function being performed.
Referring to the right side of FIG. 7, controller 214 includes a microprocessor 450, a control endpoint register 451, an address decoder 452, a static random-access memory (RAM) 453, a ROM 454, and an input/output interface circuit 470. Control endpoint register 451 supports a default address 0, which is required of every controller. Control endpoint register 451 is used to communicate with this device, even if later the address is changed. Static RAM 453 includes a RAM buffer 453A and flash access timing registers 453B. Buffer 453A includes sufficient memory to store at least one block of flash memory 215, and is used, for example, when implementing block copy operations (e.g., reading data from flash memory 215 and writing to RAM 453) to improve execution speed. Flash access timing registers 453B store command codes that are utilized by controller 214 during communications with flash memory 215. ROM 454 comprises hard-wired data (i.e., data that cannot be modified) that includes jump start firmware 454A, and various descriptors 454B. Jump start firmware 454A includes a reset address vector which causes microprocessor 450 to execute a far jump operation to entry point register 420 of flash memory device 215. Jump start firmware 454A register also includes most of the basic read/write/erase timing state machine information and block copy commands, because changing this code is not required. In addition, jump start firmware 454A includes the static command code that is written to flash access timing registers 453B and utilized as default timing, for example, during initial read/write operations from/to flash memory 215. Note, however, that the dynamic control code used to support different types of flash memory is stored in control firmware register 415B in flash device 215 to facilitate easier updating. Various descriptor values 454E, which are also hard-coded in ROM 454, are used when the test host requests specific information from USB device 10B. Failing to respond or responding with wrong values can cause rejection of USB device 10B by the test host, and also considered as being a controller failure. Detail descriptor values are provided, for example, in the USB mass-storage class specification. Controller 214 includes a Bulk-only-transport (BOT) command decoder 456 to facilitating communication with flash device 215 using BOT commands. LBA-to-PBA address transformer/decoder 452 is used for decoding logical addresses generated by BOT command decoder 456. Input/output interface circuit 470 includes a physical layer USB transceiver 470A for transmitting and receiving USB differential NRZI signals, a serial interface engine 470B for performing serial to parallel (receive mode) operations and parallel to serial (transmit mode) operations, a data buffer 470C for buffering incoming/outgoing data frames, since speed matching is different when dealing with SIE, and various registers and interrupt handling logic 470D for USB protocol handling.
FIG. 8 is a simplified block diagram depicting the various address structures and partitions of flash memory 215 after the testing/formatting process (described above) is completed. As indicated on the left side of FIG. 8, flash memory 215 is generally divided into read-only zone 405 and read/write zone 406.
Read-only zone 405 includes entry point registers 420, bad block list 413, reserved blocks 414, control firmware 415B, Master Boot Block 416, and non-volatile registers 421. As indicated on the right side of FIG. 8, entry point registers 420 include a control firmware entry point address 420A that stores the location of control firmware 415B, non-volatile registers entry point address 420B that store the locations of the various values stored in non-volatile registers 421, and an operating system (OS) entry address 420C which stores the location of MBR 416. Read-only zone 405 can only be updated by Manufacture test software, and cannot be altered by normal user host PC system. Control firmware 415B is executed by microprocessor 450 of controller 214 (see FIG. 7), and is read-only (i.e., cannot be updated by end users). Similarly, non-volatile registers 421 store several values that may be modified during the test/formatting process (e.g., product serial or ID number), but cannot be changed by an end user.
Read-write zone 406 includes memory blocks that are accessible to an end user. In one embodiment, read-write zone 406 includes a basic file structure so that files can be read/written by a host OS, and is divided into multiple partitions (e.g., Partition 1, 2, 3, 4). The first partition (Partition 1) includes file allocation tables FAT1 417A and FAT2 417B, a root directory 418, and file clusters 419.
In accordance with an embodiment of the present invention, when device 10B is initially powered up, the static command code is read from the jump start firmware 454A into flash accessing timing registers 453A. During the initialization step (block 110 of FIG. 6), controller 214 accesses flash device 215 using the default timing provided by the static command code to read, for example, the product identification data for flash memory 215. This product identification data is passed to the host system, which compares this data with a stored table to identify updated timing parameters (alternatively, the operator can provide the flash memory product identification to the host system prior to initializing the formatting process). The updated timing parameters are then written by the host system to the controller, which stores the updated timing parameters in flash access timing registers 453B. Once this process is completed, the controller utilizes the updated timing parameters to write the formatting information into flash device 215 in a highly efficient manner, thereby further reducing manufacturing time. Note that once formatting is completed, control select bit 415A is set in flash memory 215, and when device 10B is subsequently powered up, control select bit 415A causes controller 214 to write the dynamic control code from control firmware 415B into flash access timing registers 453B.
FIG. 9 is a diagram showing exemplary bad block list structures stored in flash memory 215 according to an embodiment of the present invention. In this embodiment, a binary “1” value indicates a good memory block 402, and a binary “0” indicates a bad memory block 401. Two copies of bad block data 413A and 413B are stored to guarantee accurate bad block data is available, even if one copy is subsequently corrupted. Another two blocks 414 (see FIG. 8) are reserved for future use, in case one of the bad-block-lists 413A or 413B becomes bad. During manufacture testing, all the bad block updating is governed by manufacture test software. A bad block occurring during normal operation will trigger an update of bad-block-lists 413A and 413B according to processes defined in control code firmware 415B. Since one more bit will be updated to “0” for every one more bad block found, there is never a need to erase all bits to “1” before updating the bad-block-lists 413A and 413B as is required for updating other flash data blocks. Therefore, reliability is much higher for the blocks dedicated for storage of bad block data.
FIG. 10(A) is a flow diagram of a manufacture software algorithm for performing the testing/formatting process of a USB DUT according to another embodiment of the present invention. The test is initiated when a DUT is coupled to the test host and all parameters prompted by the test host are keyed in by an operator (block 601). The software executes a Get_descriptor (read) process that transmits instructions to read controller internal hard-coded descriptor values (block 602), and then a Set_descriptor command is executed by the software to set correct values, and to add or change descriptors other than those stored in the controller RAM registry. Initial configuration values are then read by software as a Get_configuration command is issued (block 604), then each different configuration value is loaded by Set_Configuration software (block 605). An interface descriptor value is then read by software in response to a Get_interface command (block 606), and correct values are loaded by the software using Set_interface command (block 607). Device fixed addresses are then loaded to the USB device in response to software Set_address command and, when successful, an associated color flag will change to reflect plug-in status (block 608). Device register values are then reset in response to a Clear_feature command (block 609), and some special features like remote_wakeup or endpoint_halt capability are set_feature by software (block 610). As USB devices can be in many different classes, mass storage class as example, can be issued by different class-specific command like get_max_lun (block 611) to read in partition numbers supported by software, for unformatted devices, software will issue command to set default supported partition number to flash devices. A Get_status command is then used for checking if the programming is successful or not (block 612), and if successful, the color of individual icon on the test host monitor is changed to reflect the successfully programmed status (block 613).
FIG. 10(B) is a flow diagram of a manufacture software algorithm for performing enumeration of a USB DUT according to another embodiment of the present invention. The enumeration process begins when the DUT is plugged into the test hub, which in turn connects to the test host (e.g., a normal PC). Because the DUT is untested, either D+ or D− pins should have a 1.5K ohm pull up resister attach to it for full speed or low speed identification (block 702), if resistor values is not correct or not even connected, color flag will indicate it is a faulty device and should be rejected. Once the test host PC recognizes the DUT, the test host drives a Reset command to the DUT for at least 10 msec (block 703). If the DUT responds properly to the reset command and indicates a successful reset status, the test host addresses the DUT using the default control endpoint 0 (block 704). The test host PC then sends the Get_descriptor to the DUT controller hard-coded value to get MaxPacketSize parameter (block 705), and the DUT responds by sending its transfer packet size (block 706). The test host PC then sends the Set_Address to the DUT to assign a unique address. If all communication between the test host PC and the DUT are successful to this point (YES branch in block 707A), a short version mass storage driver is then sent to the DUT and is utilized for later communications (block 708). The test host then sends a Get_descriptor command to the DUT, and compares the device descriptor with default values already set by the program; any inconsistencies are reflected on the test host PC that alert the operator to reject the DUT (block 709). If the device descriptor value is correct, the test host PC sends a set_configuration command to set the configuration number (block 710), all necessary values are written into the DUT's flash memory, thus completing the enumeration (block 711).
FIG. 11 is an operational flowchart showing the overall operation of the test host system with respect to USB flash devices according to another embodiment of the present invention.
Referring to the top of FIG. 11, the operator starts up the test program (block 801), and all configuration and possible types of flash memories characteristic values are loaded into the program (block 802), those files are stored in the hard disk before loading the program. The program then waits for the operator key in correct parameters relating to the desired test (block 803), for example, the starting serial number of the selected DUT, or even a password to enable the running of this program. As shown below block 804, there are two major paths that command will be decoded and executed: low level formatting (on the rightside branch below block 804), and flash memory software configuration (on the leftside branch below block 804).
Referring the lower right portion of FIG. 11, low level formatting includes performing a flash memory erase/read/write check for all flash memory blocks (block 810), during which test read/write (R/W) patterns are written into the flash memory for all flash memory blocks (as shown in block 810A) because the flash memory may be previously used by other controller vendor and they generally have different algorithm to mark user bad blocks. Each R/W pattern is then read back and compared with expected values. Next, depending on either all the blocks are erased despite of the fact some blocks already marked bad. Low level formatting is then performed during which only good blocks are erased to all binary “1” values (block 811). However since flash memory might be dirty due to previous use, a total scan of bad block is possible through parameter scan type selection entry.
Individual information of each card is then written into the flash memory to updated individual card information (block 812). In one embodiment the information includes serial number, product ID, vendor ID, and LED light pattern (block 817). The control firmware is then written into the flash memory (block 813), for example, by copying Binary (image) files to flash memory (block 818). In addition, the firmware entry point address is recorded in the non-volatile registers of the flash memory. The File allocation table (FAT) of the flash device is then updated (block 814) according to customer request by software loading into pre-programmed file at OS entry point address stored in non-volatile registers. All initial files are then copied into the flash memory as requested by customers (block 815). These files may include auto-executing images or executable files for applications that are stored in a Precopy directory of the test host (block 819). The stored data is then read back from the DUT and stored in the test host hard drive for testing and future reference (block 816).
The left side of FIG. 11 includes an optional procedure for updating, e.g., flash timing stored in the dynamic control code. Initially, and in case some parameters are changed, for instance, due to a change in flash memory types in the test procedure, it may become necessary to, for example, verify the test operator password is correctly entered, and also to verify the updated correct flash timing is entered. However, if the process of FIG. 11 is used continuously to test the DUTs having the same flash devices, then there may be no need to perform the optional process shown on the left side of FIG. 11, since the program maintains correct parameters for testing. Referring to the left side of FIG. 11, the flash memory software configuration, which is used after low level formatting is performed, begins with a check of a pre-stored password entered by an operator (block 805). Flash memory software configuration is restricted to authorized personnel (e.g., the device manufacturer), and unauthorized persons not having the password are denied access to the program. Once the correct password is verified, the software will wait for operator enter the commands (block 805A). Flash memory is produced by many different vendors, and has many different parameter settings as the memory capacity from each vendor continually increases. The first step of the software configuration is to identify the particular flash memory used in the target DUT (block 806). To make the configuration program robust, a sequence of flash memory types is pre-programmed for flexibility purposes. The operator can update this sequence (block 807), and all update information displayed on the device monitor for easy correction (block 808), and then changes are stored into files for future reference (block 809).
FIGS. 12(A) and 12(B) are simplified diagrams showing dual channel and single channel defect flash chip operations, respectively, and FIGS. 13(A) and 13(B) are block diagrams depicting the associated flash memory configuration. When an even number of flash chips are integrated in the device, two options can be applied: single channel and dual channel operation.
In dual channel operation, which is shown in FIG. 12(A), the data buss from controller 214 is separated into two parts: data lines data[7:0] are connected to flash memory chip set 215-1, and data lines data[15:8] are connected to flash memory chip set 215-2, where both memory share the same controller address and control bus 90. An advantage of the dual channel operation shown in FIG. 12(A) is speed performance, since data bus access is doubled. A disadvantage of dual channel operation is shown in 13(A), where the bad block (BB) regions on either side of flash chip 215-1 are normally not symmetric, but since address and control bus connected together, symmetric operation cause induce bad blocks and reduce usable good block capacity. Addresses for these two sets of flash chips are also staggered to reflect data bus connection.
FIG. 12(B) depicts single channel operation, wherein both memory sets 215-1A and 215-1B are connected to data bus lines data[7:0]. In single channel operation, the physical address ranges are sequential, as shown in FIG. 13(B), and do not have induced bad block situation of the dual channel operation depicted in FIG. 13(A). Accordingly, the usable capacity of single channel operation is increased compared to dual channel operation, and the reserved area is enlarged to ease tension caused by bad block reservation purpose. However, a disadvantage of single channel operation is operating speed, which is lower because only eight bus lines data[7:0] are used, instead of the sixteen data bus lines utilized in dual channel operation. However, because of higher bad block ratio flash chips, as introduced by recent mass volume flash production, single channel operation is preferred.
FIG. 14 is a block diagram showing depicting the information stored in various memory fields of each USB device formatted in accordance with the present invention, along with parameter settings. All parameters can be changed by an operator, and are divided into two categories: device information and configuration information.
The device information stored in each device 10B is depicted in the blocks (fields) located in the upper section of FIG. 10. Block 905 includes maximum device capacity (e.g., 256 MB). Block 901 includes effective device capacity as established by the device manufacturer (e.g., for a device having a 256 MB maximum capacity, the effective device capacity may be set at 250 MB, with 6 MB reserved for bad block management). Block 902 includes the flash memory part used, for example, the manufacturer's part number established by Samsung or Infineon (e.g., K9K8G08U0M for Samsung 1 Gbyte flash memory device). Block 903 includes the flash memory ID information read through flash initial command address 90H, and is used to determine whether the device flash memory is correct or not, because some flash memory have different timing properties but sharing same ID code. This feature is provided to facilitate adjustment of the flash-id in order to allow the end customer to easily enter different NAND flash timing specifications. Block 904 includes the number of flash chips used in the particular device 10B. Blocks 905A, 905B and 905C store various passwords that used during formatting/testing and subsequent modification of the USB devices. Because the operator passwords are very crucial for controlling manufacturing process, password modify (block 905B) and confirm (block 905C) are key to the MIS of plant to control official access of the test procedure in order to maintain test quality and responsibilities.
The configuration information of device 10B is depicted in the blocks located below the device information in FIG. 10. Block 906 includes production line number information or operator ID number for production control information. Block 907 includes pre-scan flash type information, including the different ways to scan (erase/write/read) the flash memory, a skip back block check value (block 907A), a full scan of all blocks value (block 907B), a scan only the good blocks and bypass those bad blocks marked by manufacture plant (block 907C). For those devices implementing used flash memory parts, a full scan is recommended that rebuilds the bad_block_list (block 907B). Block 908 includes the general serial number (S/N), block 908A includes an initial S/N of this particular device, with block 908B including updated serial number information, and whether the serial number is generated using a predetermined sequence, or is generated randomly (i.e., the serial numbers can be generated incremently or decremently, and also can be randomly generated as operator entered (e.g., the software calls a random number generator and a seed value (e.g., host tester time/date) to make sure its randomness)—the basic principle is that the serial number needs to be different for every device according to USB specifications. Block 909 includes device current specifications and limitations (i.e., maximum current consumption of the device), where device currents exceeding this number are an indication of device failure (e.g., 500 ma is maximum specified current listed in USB devices). Block 910 includes a time interval and brightness value for the device's LED light under various conditions, and is used to notify the operator of operational status (for example, when a test is stalled (hanging), or successful, or the device is idling or in use). Block 917 includes the correct controller vendor/product ID numbers, and is used to authorize the testing/formatting process (i.e., devices having non-matching vendor/product numbers stored in this field are rejected at the beginning of the testing/formatting program). Block 911 includes vendor name and product text coding information, and block 912A includes product string name and revision information. Block 913 stores a statistical value indicating a number of pass/fail tests associated devices tested on the test production line (block 913A is used to reset this value), and block 915 includes a maximum test number of the test production line since testing is initiated by a particular operator—this information is used to provide an operator with useful statistical information. Block 919 includes a maximum reserved ratio of the flash memory (i.e., the amount of reserved memory that is required for bad block allocations for future operation purposes). Block 921 contains a write protection toggle (on or off). Block 920A includes a volume partition number that is recorded for flash memory, where storage can be partitioned into many different areas for data categorization purposes. Block 920 stores the beginning volume label, for example D: (E:, F: follows). Finally, Block 920 includes BIN numbers of each device corresponding to each slot, and this information is used to reveal error codes when a device fails the testing/formatting process.
Although the present invention has been described with respect to certain specific embodiments, it will be clear to those skilled in the art that the inventive features of the present invention are applicable to other embodiments as well, all of which are intended to fall within the scope of the present invention. For example, while the systems and methods described herein are specifically directed to USB devices, the spirit and scope of the present invention is intended to cover different interface bus types, which may include one or more of PCI Express, Secure Digital (SD), Memory Stick (MS), Compact Flash (CF), IDE and SATA.

## Claims

1. A method for formatting/testing a plurality of USB devices using a test host, wherein each USB device including a controller and one or more flash memory devices, and the test host includes a computing system, the method comprising:
coupling all of said plurality of USB devices to the test host;
reading at least one controller endpoint descriptor value from each of the plurality of USB devices, and verifying that the controller endpoint descriptor values of each of the plurality of USB devices matches stored descriptor values stored in the test host; and
testing/formatting each of the USB devices having a valid endpoint descriptor value by writing predetermined data into the flash memory devices in a pipelined manner, and then reading the predetermined data from the flash memory device and comparing the read predetermined data with known good data stored in the test host.

2. The method according to claim 1, further comprising installing a USB driver into the test host that directs the computing system to block standard USB registration procedures upon detecting the plurality of USB devices.

3. The method according to claim 1, further comprising fabricating the plurality of USB devices such that the plurality of USB devices are connected to a panel.

4. The method according to claim 3, further comprising singulating the panel before said coupling said USB devices to said test host.

5. The method according to claim 4, wherein coupling all of said plurality of USB devices comprises plugging each of the plurality of USB devices into a corresponding port of a card reader, wherein the card reader is connected by a USB cable to the test host.

6. The method according to claim 3, further comprising singulating the panel after sequentially testing/formatting all of said plurality of USB devices.

7. The method according to claim 6, wherein coupling all of said plurality of USB devices to the test host comprises mounting a probe fixture onto the panel such that pins of each of the plurality of USB devices are contacted by corresponding probes of the probe fixture.

8. The method according to claim 1, wherein said reading said controller endpoint descriptor values from each of the plurality of USB devices comprises reading at least one of a configuration descriptor value, a mass storage class code value, a vendor identification value, and a product identification value.

9. The method according to claim 1, further comprising asserting a corresponding color flag displayed on a monitor of the test host upon verifying that the controller endpoint descriptor value stored in each of the plurality of USB devices matches said stored descriptor value.

10. The method according to claim 1, wherein said testing/formatting comprises scanning bad block data stored in the flash memory device, and verifying that reserved storage capacity of each flash memory device is equal to a predetermined amount.

11. The method according to claim 1, wherein said testing/formatting comprises writing at least two copies of bad block data identifying bad blocks on the flash memory device into predetermined blocks of the flash memory device.

12. The method according to claim 1, wherein said testing/formatting comprises writing at least one of control code data and boot code data into predetermined blocks of the flash memory device.

13. The method according to claim 12, wherein writing to the flash memory devices comprises transmitting predetermined data from the test host to a first buffer of a first USB device, and causing the first USB device to write the predetermined data from the first buffer into the flash memory device of the first USB device while the test host transfers the predetermined data to a second buffer of a second USE device.

14. The method according to claim 1, wherein said sequentially testing/formatting comprises writing customer-provided data into predetermined blocks of the flash memory device.

15. The method according to claim 1, wherein said sequentially testing/formatting comprises writing updated serial number, date code, and produce version code values into predetermined write-protected portions of the flash memory device.

16. A testing/formatting system for formatting/testing a plurality of electronic data flash cards using a test host, wherein each electronic data flash card including a controller and one or more flash memory devices, wherein the testing/formatting system comprises:
a test host;
means for coupling all of said plurality of electronic data flash cards to the test host;
means for reading at least one controller endpoint descriptor value from each of the plurality of electronic data flash cards, and for verifying that the controller endpoint descriptor values of each of the plurality of electronic data flash cards matches stored descriptor values; and
means for testing/formatting each of the electronic data flash cards having a valid endpoint descriptor value by writing predetermined data into the flash memory devices in a pipelined manner, and then reading the predetermined data from the flash memory device and comparing the read predetermined data with known good data.