USB flash memory device with integrated USB controller
Claim Score by NHIP
Abstract
A storage unit made of flash array and a USB controller, is implemented to be compatible with then USB specification. The unit includes memory modules which can accept write commands and read commands and are erasable and non-volatile herein referred to as flash modules. The USB/flash controller is configured to provide USB functionality and compatibility alone with common flash operations such as programming reading and erasing the above mentioned components.A USB flash memory device includes at least one flash memory module, a USB connector, a USB controller, and an identification structure for holding memory size and manufacturing type information of the flash memory module. The USB controller is configured to send and receive USB-defined data packets to or from a host via the USB connector, to extract operation codes and logical addresses from the USB-defined data packets, and to carry out at least one of reads, writes and erases in the flash memory module in accordance with the USB-defined data packets, and to interpret the operation codes into corresponding commands. The USB controller is configured to activate a respective memory technology driver in accordance with the memory size and manufacturing type information in the identification structure. The activated memory technology driver is configured to perform the commands on the flash memory module corresponding to the logical addresses.
Term
Term ended
Expired 5 April 2019, 7.5 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
41 claims: 6 independent, 35 dependent
- 1A USB flash memory device for connecting to a USB-defined bus, the flash memory device comprising:(a) at least one flash memory module for storing data;(b) a USB connector for connecting to the USB-defined bus and for sending packets on, and for receiving packets from, the USB-defined bus;(c) a USB controller for controlling said at least one flash memory module and for controlling said USB connector according to at least one packet received from the USB-defined bus, such that data is written to and read from said at least one flash memory module;(d) an electrical interface for connecting to said USB connector and for receiving said packets from said USB connector as a plurality of electrical signals;(e) a logical interface for connecting to said electrical interface and for translating said plurality of electrical signals to logic signals, said logic signals being passed to said at least one flash memory module;(f) a functional interface for receiving said logic signals such that if said logic signals represent a USB functional packet, said functional interface sends a USB command to said USB controller according to said USB functional packet;(g) an application packet extractor for connecting to said logical interface and for receiving said logic signals, said application packet extractor extracting at least one packet from said logic signals;and (h) an application command interpreter for receiving said at least one packet and for determining a command according to said at least one packet, said command being passed to said USB controller.
- 8A USB flash memory device for connecting to a USB-defined bus the flash memory device comprising:at least one flash memory module;a USB connector adapted for connection to a USB-defined bus;and a USB controller configured to interface with a host via the USB-defined bus, to send and receive USB-defined packets, including USB-defined data packets, via the USB connector to or from the host, and to manage memory reads, writes and erases in the at least one flash memory module in accordance with the USB-defined data packets, wherein the USB controller includes: a packet extractor to extract operation codes and logical addresses from the USB-defined data packets;a command interpreter which is adapted to interpret the operation codes into commands corresponding to one of the memory reads, writes and erases;and an address resolver module adapted for converting the logical addresses into corresponding physical addresses in one or more of the at least one flash memory module.
- 19Broadest claimClaim Score 45, average(NHIP)A data-processing method performed by a USB flash memory device, wherein the USB flash memory device includes at least one flash memory module, a USB controller, and a USB connector adapted for operatively coupling the at least one flash memory module and the USB controller to a host via a USB-defined bus, the method comprising:receiving USB-defined packets from the host via the USB-defined bus and the USB connector, wherein the USB-defined packets include one or more USB-defined data packets;under the control of the USB controller: extracting operation codes and logical addresses from the USB-defined data packets;interpreting the operation codes into commands corresponding to one of memory reads, writes and erases;converting the logical addresses into corresponding physical addresses in one or more of the at least one flash memory module;performing the commands to memory cells within the at least one flash memory module identified by the physical addresses.
- 29A USB flash memory device for connecting to a USB-defined bus, the flash memory device comprising:(a) at least one flash memory module;(b) a USB connector adapted for connection to a USB-defined bus and for conveying USB-defined packets sent to or received from a host via the USB-defined bus;and (c) a USB controller adapted to communicate with the host over the USB-defined bus via the USB connector and to manage the at least one flash memory module in accordance with the USB-defined packets, including for carrying out read, write and erase actions, wherein the USB controller comprises a USB-defined electrical and logical interface coupled to the USB connector for transferring the USB-defined packets, a packet extractor for receiving USB-defined data packets via the USB-defined electrical and logical interface and extracting packet information from the USB-defined data packets and a command interpreter which is adapted to interpret commands extracted from the USB-defined data packets into actions for the at least one flash memory module;and (d) memory technology drivers, each adapted for execution by the USB controller to perform actions on a respective type of flash memory module;wherein the USB controller is configured to activate a respective memory technology driver within the flash memory device based on an identification of a respective type of the at least one flash memory module and the activated memory technology driver is configured to perform actions on the identified flash memory module.
- 31A USB flash memory device comprising:a storage unit further comprising: at least one flash memory module;a USB connector adapted for connection to a USB-defined bus according to a USB standard;and a USB controller adapted for connecting the at least one flash memory module to the USB connector;wherein the USB controller is configured to support dual functionality including USB functionality according to the USB standard and memory functionality and control of the at least one flash memory module, the USB functionality further including physical, logical and functional interfaces for sending and receiving USB-defined packets, including USB-defined data packets, via the USB connector and the USB-defined bus to or from the host, and the memory functionality and control further including: a packet extractor to extract operation codes and logical addresses from the USB-defined data packets;a command interpreter which is adapted to interpret the operation codes into commands corresponding to one of memory reads, writes and erases;and an address resolver module adapted for converting the logical addresses into corresponding physical addresses in one or more of the at least one flash memory module.
- 37A method for communication between a storage unit and a host, wherein the storage unit includes:one or more flash memory modules, a USB connector adapted for connection to a USB-defined bus according to a USB standard, and a USB controller adapted for connecting the one or more flash memory modules to the USB connector, the method comprising: receiving one or more incoming USB packets sent from the host to the storage unit via the USB-defined bus;and in response to the one or more incoming USB packets, the USB controller performing memory operations to the one or more flash memory modules according to the one or more incoming USB packets;generating one or more outgoing USB packets according to results of performing the one or more operations;and sending the one or more outgoing USB packets to the host from the storage unit via the USB-defined bus;wherein the USB controller is configured to support dual functionality including USB functionality according to the USB standard and memory functionality and control of the one or more flash memory modules, the USB functionality further including physical, logical and functional interfaces for sending and receiving USB packets via the USB connector and the USB-defined bus to or from the host, and the memory functionality and control further including: a packet extractor to extract operation codes and logical addresses from the incoming USB packets;a command interpreter which is adapted to interpret the operation codes into commands corresponding to one of the memory operations;and an address resolver module adapted for converting the logical addresses into corresponding physical addresses in at least one of the one or more flash memory modules.
Independent claims6
71 paragraphs in 5 sections, as filed
id="REI-00003" date="20131210"
RELATED APPLICATIONS
id="REI-00003"
0001This application is a continuation reissue application of reissue application Ser. No. 10/292,868, filed Nov. 13, 2002 now U.S. Pat. No. Re. 42,443, which is a reissue application of U.S. Ser. No. 09/285,706, filed on Apr. 5, 1999, now U.S. Pat. No. 6,148,354, issued on Nov. 14, 2000.
0002More than one reissue application has been filed for the reissue of U.S. Pat. No. 6,148,354. The reissue applications are application Ser. No. 10/292,868, filed Nov. 13, 2002, now U.S. Pat. No. Re. 42,443, issued on Jun. 7, 2011; application Ser. No. 10/293,986, filed Nov. 14, 2002, now U.S. Pat. No. Re. 42,397, issued on May 24, 2011; application Ser. No. 13/005,501, titled “USB Flash Memory Device with Integral Memory Technology Driver,” filed Jan. 12, 2011, and application Ser. No. 13/005,505, (the present application), filed Jan. 12, 2011, all of which are reissues of U.S. Pat. No. 6,148,354 and are hereby incorporated by reference in their entirety.
FIELD AND BACKGROUND OF THE INVENTION
0003The present invention is related to semiconductor memory devices, and in particular to erasable and programmable nonvolatile memory modules which are connected to a host platform using the USB PC Bus.
0004Erasable and programmable non-volatile memory modules, hereinafter referred to as flash memory or flash devices, are known in the art for storage of information. Flash devices include electrically erasable and programmable read-only memories (EEPROMs) made of flash-type, floating-gate transistors and are non-volatile memories similar in functionality and performance to EPROM memories, with an additional functionality that allows an in-circuit, programmable, operation to erase pages of the memory. One example of an implementation of such a flash device is given in U.S. Pat. No. 5,799,168, incorporated by reference as if fully set forth herein.
0005Flash devices have the advantage of being relatively inexpensive and requiring relatively little power as compared to traditional magnetic storage disks. However, in a flash device, it is not practical to rewrite a previously written area of the memory without a preceding page erase of the area. This limitation of flash devices causes them to be incompatible with typical existing operating system programs, since data cannot be written to an area of memory within the flash device in which data has previously. been written, unless the area is first erased. A software management system, such as that disclosed in U.S. Pat. No. 5,404,485, filed on Mar. 5, 1993, which is incorporated as if fully set forth herein, is required to manage these functions of the flash memory device.
0006Currently, these flash memory devices have a second limitation, which is that they must be either attached statically to the host platform, or attached and detached dynamically using the PCMCIA [Personal Computer Memory Card International Association] interface. Both implementations have drawbacks, including difficulty of use and high cost.
0007A more useful implementation would follow the USB standard, as described in the USB Specification Version 1.1 which is incorporated as if fully set forth herein. The USB standard offers a smaller form factor and greater ease of use for the end user, while lowering the cost of the implementation. This standard is specified to be an industry-wide standard promoted by companies such as Compaq Computer Corporation, Microsoft, IBM and Intel to serve as an extension to the PC architecture with a focus on Computer Telephony Integration (CTI), the consumer, and productivity applications.
0008The criteria which were applied to define the architecture for the USB standard include the ease of PC (personal computer) peripheral expansion, low cost, support of transfer rates up to 12 Mb/second and full support for real-time data, voice, audio, and compressed video. This standard also offers protocol flexibility for mixed-mode isochronous data transfers and asynchronous messaging, integration in commodity device technology and provision of a standard interface for rapid integration into any given host product. In addition, the USB standard represents a single model for cabling and attaching connectors, such that all of the details of the electrical functions, including bus terminations, are isolated from the end user. Through the standard, the peripheral devices are self-identifying, and support automatic mapping of functions to a driver. Furthermore, the standard enables all peripheral devices to be dynamically attachable and re-configurable.
0009A system constructed according to the USB standard is described by three separate, defined areas: USB interconnection, USB devices and the USB host platform. The USB interconnection is the manner in which USB devices are connected to, and communicate with, the host platform. The associated functions and components include the bus topology, which is the connection model between USB devices and the host platform.
0010The USB physical interconnection has a tiered star topology. A hub is at the center of each star. Each wire segment is a point-to-point connection between the host platform and a hub or function, or a hub connected to another hub or function.
0011In terms of a capability stack, the USB tasks which are performed at each layer in the system include a data flow model and a schedule. A data flow model is the manner in which data moves in the system over the USB between data producers and data consumers. A schedule determines access to the interconnection, which is shared. Such scheduling enables isochronous data transfers to be supported and eliminates arbitration overhead.
0012The USB itself is a polled bus. The host controller on the host platform initiates all data transfers. All bus transactions involve the transmission of up to three packets. Each transaction begins when the host controller, on a scheduled basis, sends a USB packet describing the type and direction of transaction, the USB device address, and endpoint number. This packet is referred to as the “token packet.” The USB device, to which the packet is addressed, selects itself by decoding the appropriate address fields. In a given transaction, data is transferred either from the host platform to a device or from a device to the host platform. The direction of data transfer is specified in the token packet. The source of the transaction then sends a data packet or indicates that the source has no data to transfer. The destination, in general, responds with a handshake packet indicating whether the transfer was successful.
0013The USB data transfer model between a source and destination on the host platform and an endpoint on a device is referred to as a “pipe”. There are two types of pipes: stream and message. Stream data has no USB-defined structure, while message data does. Additionally, pipes have associations of data bandwidth, transfer service type, and endpoint characteristics like directionality and buffer sizes. Most pipes come into existence when a USB device is configured. One message pipe, the default control pipe, always exists once a device is powered, in order to provide access to the configuration, status, and control information for the device.
0014The transaction schedule for the USB standard permits flow control for some stream pipes. At the hardware level, this prevents situations in which buffers experience underrun or overrun, by using a NAK handshake to throttle the data rate. With the NAK handshake, a transaction is retried when bus time is available. The flow control mechanism permits the construction of flexible schedules which accommodate concurrent servicing of a heterogeneous mix of stream pipes. Thus, multiple stream pipes can be serviced at different intervals with packets of different sizes.
0015The USB standard, as described, has three main types of packets, including token packets, data packets and handshake packets. An example of each type of packet is shown in background art <figref idref="DRAWINGS">FIGS. 1-3</figref>. Background art <figref idref="DRAWINGS">FIG. 4</figref> shows an exemplary USB abstract device.
0016A token packet <b>10</b>, as shown in background art <figref idref="DRAWINGS">FIG. 1</figref>, features a PID (packet identification) field <b>12</b>, specifying one of three packet types: IN, OUT, or SETUP. If PID field <b>12</b> specifies the IN packet type, the data transaction is defined from a function to the host platform. If PID field <b>12</b> specifies the OUT or SETUP packet type, the data transaction is defined from the host platform to a function.
0017An ADDR field <b>14</b> specifies the address, while an ENDP field <b>16</b> specifies the endpoint for token packet <b>10</b>. For OUT and SETUP transactions, in which PID field <b>12</b> specifies that token packet <b>10</b> is an OUT packet type or a SETUP packet type, ADDR field <b>14</b> and ENDP field <b>16</b> uniquely identify the endpoint for receiving the subsequent data packet, shown in <figref idref="DRAWINGS">FIG. 2</figref>, which follows after token packet <b>10</b>. For IN transactions, in which PID field <b>12</b> specifies that token packet <b>10</b> is an IN packet type, ADDR field <b>14</b> and ENDP field <b>16</b> uniquely identify which endpoint should transmit a data packet. A CRC<b>5</b> field <b>18</b> contains the checksum, for determining that token packet <b>10</b> has been received without corruption. Only host platform can issue token packets <b>10</b>, such that token packets <b>10</b> provide control over transmission of the subsequent data packets.
0018As shown in background art <figref idref="DRAWINGS">FIG. 2</figref>, a background art USB data packet <b>20</b> also features a PID (packet identification) field <b>22</b> for identifying the type of data packet. Data packet <b>20</b> also features a data field <b>24</b> for optionally. containing data, and a CRC field <b>26</b> for containing the checksum as previously described.
0019Background art <figref idref="DRAWINGS">FIG. 3</figref> shows a background art USB handshake packet <b>28</b>, which features only a PID (packet identification) field <b>30</b>. Handshake packets <b>28</b> are used to report the status of a data transaction and can return values indicating successful reception of data, command acceptance or rejection, flow control, and halt conditions. Only transaction types which support flow control can return handshake packets <b>28</b>. Handshake packets <b>28</b> are always returned in the handshake phase of a transaction and may be returned, instead of data packets <b>20</b>, in the data phase of a transaction.
0020These three different types of packets are exchanged during various phases of the transaction which includes a USB device. A schematic block diagram of the functional blocks in a typical USB device <b>32</b> is shown in <figref idref="DRAWINGS">FIG. 4</figref> for an abstract background art USB device. USB device <b>32</b> typically includes a USB electrical interface <b>34</b>, featuring a cable and a connector, which is a physical interface for receiving and transmitting electrical signals which are compatible with the USB specification as previously described. The signals are then passed to a logical interface <b>36</b>, which includes one or more buffers, the device address decoder for decoding the address of the source device for the signals, and a SYNC field synchronizer for synchronizing the signals. Information and structures required for management of USB abstract device <b>32</b> as a USB device are stored in a USB class control and enumeration engine <b>38</b>. A function and device engine <b>40</b>, also termed the “application”, controls and manages the specific functions and properties of USB abstract device <b>32</b>. In addition, function and device engine <b>40</b> also consumes and produces most of the data over the USB bus.
0021The USB specification does not define the relationship between different entities in USB abstract device <b>32</b>, however. Rather, the USB specification describes only the requirements for the packets, and for the electrical and physical connection between USB abstract device <b>32</b> and the bus. Therefore the connections and relationships shown in background art <figref idref="DRAWINGS">FIG. 4</figref> are only one example of an implementation which fulfills the requirements of the USB specification. Thus, any specific device for fulfilling the USB specification must have a specifically defined and described architecture.
0022Unfortunately, no such architecture exists for a flash memory device containing one or more flash memory modules, which would enable the flash memory device to connect to a bus defined according to the USB specification and thereby to form part of a USB system on a host platform. For example, U.S. Pat. No. 5,799,168 does not teach or suggest such an implementation for the flash device. As mentioned previously, such an architecture would be particularly useful for a number of reasons, including low cost, ease of use and transparency to the end user.
0023There is thus a need for, and it would be useful to have, an architecture for defining and describing a flash memory device which is compatible with a USB system and which follows the USB specification, such that the flash memory device could sit on a USB-defined bus and communicate with the host platform through this bus.
BRIEF DESCRIPTION OF THE DRAWINGS
0024<figref idref="DRAWINGS">FIG. 1</figref> is a schematic block diagram of a background art USB token packet structure;
0025<figref idref="DRAWINGS">FIG. 2</figref> is a schematic block diagram of a background art USB data packet structure;
0026<figref idref="DRAWINGS">FIG. 3</figref> is a schematic block diagram of a background art USB handshake data packet structure;
0027<figref idref="DRAWINGS">FIG. 4</figref> is a schematic block diagram of an exemplary background art USB device;
0028<figref idref="DRAWINGS">FIG. 5</figref> is a schematic block diagram of a system with a flash USB device functionality according to the present invention;
0029<figref idref="DRAWINGS">FIG. 6</figref> is a schematic block diagram of the USB Flash disk;
0030<figref idref="DRAWINGS">FIG. 7</figref> is a schematic block diagram of a flash identification request packet;
0031<figref idref="DRAWINGS">FIG. 8</figref> is a schematic block diagram of a flash identification status packet;
0032<figref idref="DRAWINGS">FIG. 9</figref> is a schematic block diagram of a flash write request packet;
0033<figref idref="DRAWINGS">FIG. 10</figref> is a schematic block diagram of a flash write status packet;
0034<figref idref="DRAWINGS">FIG. 11</figref> is a schematic block diagram of a flash read request packet;
0035<figref idref="DRAWINGS">FIG. 12</figref> is sa schematic block diagram of a flash read status packet;
0036<figref idref="DRAWINGS">FIG. 13</figref> is a schematic block diagram of a flash erase request packet; and
0037<figref idref="DRAWINGS">FIG. 14</figref> is a schematic block diagram of a flash erase status packet.
SUMMARY OF THE INVENTION
0038The present invention is of a flash memory device, containing one or more flash modules, in which the flash memory is mapped to the address space of an ASIC or a controller which has a USB-defined electrical interface and a USB-defined logical interface. This controller/ASIC (hereinafter termed a “controller”) supports the USB functionality according to the USB standard, thereby supporting enumeration onto the USB bus, as well as data reception and transmission over USB pipes to and from USB endpoints. This controller also supports the functionality and control of the flash memory device, as well as the processing of command and data packets from the host controller. The host controller uses one of several possible protocols, either standard or proprietary, to signal the next command to be performed to the USB flash controller. Thus, the entire device acts as a dynamically attachable/detachable non-volatile storage device for the host platform.
0039According to the present invention, there is provided a USB flash memory device for connecting to a USB-defined bus, the flash memory device comprising: (a) at least one flash memory module for storing data; (b) a USB connector for connecting to the USB-defined bus and for sending packets on, and for receiving packets from, the USB-defined bus; and (c) a USB controller for controlling the at least one flash memory module and for controlling the USB connector according to at least one packet received from the USB-defined bus, such that data is written to and read from the at least one flash memory module.
0040Hereinafter, the term “computer” includes, but is not limited to, personal computers (PC) having an operating system such as DOS, Windows™, OS/2™ or Linux; Macintosh™ computers; computers having JAVA™-OS as the operating system; and graphical workstations such as the computers of Sun Microsystems™ and Silicon Graphics™, and other computers having some version of the UNIX operating system such as AIX™ or SOLARIS™ of Sun Microsystems™; or any other known and available operating system, including operating systems such as Windows CE™ for embedded systems, including cellular telephones, handheld computational devices and palmtop computational devices, and any other computational device which can be connected to a network. Hereinafter, the term “Windows™” includes but is not limited to Windows95™, Windows 3.X™ in which “x” is an integer such as “1”, Windows NT™, Windows98™, Windows CE™ and any upgraded versions of these operating systems by Microsoft Inc. (Seattle, Wash., USA).
DETAILED DESCRIPTION OF THE INVENTION
0041The present invention is of a flash memory device, containing one or more flash modules, in which the flash memory is mapped to the address space of an ASIC or a controller which has a USB-defined electrical interface and a USB-defined logical interface. This controller/ASIC (hereinafter termed a “controller”) supports the USB functionality according to the USB standard, thereby supporting enumeration onto the USB bus, as well as data reception and transmission over USB pipes to and from USB endpoints. This controller also supports the functionality and control of the flash memory device, as well as the processing of command and data packets from the host controller. The host controller uses one of several possible protocols, either standard or proprietary, to signal the next command to be performed to the USB flash controller. Thus, the entire device acts as a dynamically attachable/detachable non-volatile storage device for the host platform.
0042While the invention is susceptible to various modifications and can be implemented using many alternative forms, the embodiment is shown by way of example in the drawings and will be described in details in the following pages. It should be understood that one of ordinary skill in the art appreciates that the present invention could be implemented in various other ways. The intention is to cover all modifications and alternatives falling within the spirit of the current invention.
0043The principles and operation of a USB flash device and system according to the present invention may be better understood with reference to the drawings and the accompanying description, it being understood that these drawings are given for illustrative purposes only and are not meant to be limiting.
0044Referring now to the drawings, <figref idref="DRAWINGS">FIG. 5</figref> is a schematic block diagram of the main components of a flash memory device and system according to the present invention. A flash memory system <b>42</b> includes a host platform <b>44</b> as shown. Host platform <b>44</b> operates USB flash device <b>46</b> as a non-volatile storage space.
0045Host platform <b>44</b> is connected to USB flash device <b>46</b> according to the present invention through a USB cable <b>48</b>. Host platform <b>44</b> connects to USB cable <b>48</b> through a USB host connector <b>50</b>, while USB flash device <b>46</b> connects to USB cable <b>48</b> through a USB flash device connector <b>52</b>. Host platform <b>44</b> features a USB host controller <b>54</b> for controlling and managing all USB transfers on the USB bus.
0046USB flash device <b>46</b> features a USB flash device controller <b>56</b> for controlling the other components of USB flash device <b>46</b> and for providing an interface for USB flash device <b>46</b> to the USB bus, USB flash device connector <b>52</b> and at least one flash memory module <b>58</b>. Flash memory module <b>58</b> is preferably an array of flash memory modules <b>58</b> in which the data is stored.
0047Whenever USB flash device <b>46</b> becomes connected to host platform <b>44</b>, a standard USB enumeration process takes place. In this process host platform <b>44</b> configures USB flash device <b>46</b> and the mode of communication with USB flash device <b>46</b>. Although there are many different methods for configuring USB flash device <b>46</b>, for the purposes of clarity only and without intending to be limiting, the present invention is explained in greater detail below with regard to a method in which host platform <b>44</b> issues commands and requests to USB flash device <b>46</b> through one endpoint. Host platform <b>44</b> queries USB flash device <b>46</b> through the other endpoint for status changes, and receives related packets if any such packets are waiting to be received.
0048Host platform <b>44</b> requests services from USB flash device <b>46</b> by sending request packets to USB host controller <b>54</b>. USB host controller <b>54</b> transmits packets on USB cable <b>48</b>. These requests are received by USB flash device controller <b>56</b> when USB flash device <b>46</b> is the device on the endpoint of the request. USB flash device controller <b>56</b> then performs various operations such as reading, writing or erasing data from or to flash memory module(s) <b>58</b>, or supporting basic USB functionality such as device enumeration and configuration. USB flash device controller <b>56</b> controls flash memory module(s) <b>58</b> by using a control line <b>60</b> to control the power of flash memory module(s) <b>58</b>, and also through various other signals such as chip enable, and read and write signals for example. Flash memory module(s) <b>58</b> are also connected to USB flash device controller <b>56</b> by an address/data bus <b>62</b>. Address/data bus <b>62</b> transfers commands for performing read, write or erase commands on flash memory module(s) <b>58</b>, as well as the addresses and data for these commands as defined by the manufacturer of flash memory module(s) <b>58</b>.
0049In order for USB flash device <b>46</b> to notify host platform <b>44</b> on the result and status for different operations requested by host platform <b>44</b>, USB flash device <b>46</b> transmits status packets using the “status end point”. According to this procedure, host platform <b>44</b> checks (polls) for status packets and USB flash device <b>46</b> returns either an empty packet if no packets for new status messages are present, or alternatively returns the status packet itself.
0050A more detailed structure of the functional components of USB flash device <b>46</b> is shown in <figref idref="DRAWINGS">FIG. 6</figref>. USB flash device <b>46</b> includes the physical and electrical interface defined for the USB standard, shown here as USB flash device connector <b>52</b> and a connector interface <b>64</b>. USB flash device connector <b>52</b> receives the electrical signals from USB cable <b>48</b> which carries electrical signals from host controller (not shown). These signals are then passed through connector interface <b>64</b>. Every millisecond, a USB frame is carried on the USB-defined bus, such that packets could be sent to USB flash device <b>46</b>.
0051Connector interface <b>64</b> then receives these packets through a first interface component, which is a combined physical and logical interface <b>66</b>. A functional interface <b>68</b> is specifically designed to receive token packets as defined in the USB specification and as previously described with regard to <figref idref="DRAWINGS">FIG. 1</figref>. These token packets are related only to particular functional aspects of USB flash device <b>46</b> which are required for the USB standard, and do not have any relation to particular application of USB flash device <b>46</b> as a flash disk according to the present invention. These token packets and their respective returned data packets enable USB host controller <b>54</b> (not shown) and host platform <b>44</b> (not shown) to identify USB flash device <b>46</b> and allocate resources for USB flash device <b>46</b> on the USB bus. Thus, functional interface <b>68</b> only supports USB functionality needed for the identification and registration of USB flash device <b>46</b> on the USB bus.
0052USB flash device <b>46</b> also features an application packet extractor <b>70</b> which extracts the application data and commands from the USB application packets, such that application packet extractor <b>70</b> supports only application related packets. Next, any requests to USB flash device <b>46</b> by host platform <b>44</b> (not shown), in the form of read, write, identify and erase commands, are interpreted by an application command interpreter <b>72</b>. For any commands which involve data or an address, such as read, write and erase commands, an address resolve module <b>74</b> translates the address from the logical address space to the physical address space. Host platform <b>44</b> (not shown) relates to a linear address space of logical addresses, while USB flash device <b>46</b> contains at least one, and preferably a plurality of, flash modules <b>58</b>, each of which has a physical address space. Thus, a translation must be performed between the logical address space of host platform <b>44</b> (not shown) and physical address space or spaces of USB flash device <b>46</b>. There are many ways to implement such a translation which are suitable for the present invention. One example of a suitable implementation of an address translation method is described with regard to U.S. Pat. No. 5,404,485, previously incorporated by reference as if fully set forth herein, which teaches a method for managing a flash memory as a flash disk and which is suitable for operation with the present invention.
0053A data handler <b>76</b> handles data related aspects of any received commands, and conveying the data through functional interface <b>68</b> to and from flash module(s) <b>58</b>. Optionally and preferably, data handler <b>76</b> performs any error correction and detection methods. Application command interpreter <b>72</b>, data handler <b>76</b> and address resolve module <b>74</b> all operate with an underlying Memory Technology Driver (MTD) <b>78</b> to write, read or erase a particular flash module <b>58</b> and the desired address on that flash module <b>58</b>.
0054Host platform <b>44</b> checks for status changes in USB flash device <b>46</b> and reads status packets from USB flash device <b>46</b> when a new status packet is available. Using these status packets, USB flash device <b>46</b> can transmit, to host platform <b>44</b>, the results of different commands issued by host platform <b>44</b> in its requests (not shown). For example, the read command status packet contains one of the available status words such as “success”, “error” or “invalid address”, which enables host-platform <b>44</b> to determine the result of the read command (not shown). Similarly, the erase status packet contains a status word indicating the completion of the erase process. A write status packet is used by USB flash device <b>46</b> to notify host platform <b>44</b> about the result of the write command, for example whether the command was successful or erroneous, and whether USB flash device <b>46</b> is ready for additional write requests from host platform <b>44</b>.
0055A Memory Technology Driver, or MTD <b>78</b> typically contains routines to read, write and erase the flash memory device controlled by the controller operating MTD <b>78</b>. In addition, MTD <b>78</b> optionally contains an identification routine for recognizing the proper type of flash memory device for which MTD <b>78</b> was designed, so that the controller can determine which MTD should be activated upon interacting with a particular flash memory device array. In addition, an identification routine should be able to detect the size of the array of flash memory devices, including the number of flash memory devices within the array, and various features of the flash array geometry, such as interleaving and bus width. This information later enables host platform <b>44</b> platform to determine the address space and size of the storage media. U.S. Pat. No. 5,799,168, previously incorporated by reference, discloses an example of such an MTD for a flash device.
0056Using the above described protocol and architecture, host platform <b>44</b> can optionally implement any application which is implementable with any regular memory mapped or I/O mapped flash memory device. For example, host platform <b>44</b> can give a standard block device interface to each application, such as a magnetic storage medium “hard disk” drive, as disclosed in the previously described U.S. Pat. No. 5,404,485.
0057As an example of a preferred embodiment of the present invention, the operation of a host system connected to a USB flash device according to the present invention is described with regard to the processes of identifying, programming, reading and erasing the flash device. For the purposes of illustration only and without intending to be limiting in any way, the exemplary USB flash device has an array of two flash memory modules, each of which is 64 Mbit in size. The address translation table is within the flash device so that host platform operates with logical addresses. All commands and return codes between the flash device and the host platform are carried on USB data packets, and are transferred through USB data pipes. The exact structure of the packets, pipes and timings are described in the USB specification.
0058The operation of the exemplary device and system according to the present invention is as follows. When the USB flash device is first connected to the host platform, the USB host controller assigns an address to the USB flash device on the USB bus, and also assigns resources as described in the USB specification. The USB flash device actually asks the host platform to assign these resources, and must inform the host platform how much of these resources are needed. Thus, the USB flash disk can optionally support slower device speeds if the USB host platform has already allocated resources to other devices.
0059The USB controller also negotiates with the flash modules and determines the size and manufacturing type of these modules. The controller then builds an identification structure holding this information, as well as the translation table and logical address space.
0060After the USB host controller identifies the USB flash device, the host platform often uploads a USB client driver. The driver issues an identification request command to the USB host controller, causing the controller to transmit an identification data packet <b>80</b>, shown in <figref idref="DRAWINGS">FIG. 7</figref>. Identification packet <b>80</b> contains PID field <b>22</b> and checksum field <b>26</b>, as described previously for background art <figref idref="DRAWINGS">FIG. 2</figref>. Identification packet <b>80</b> also contains an “identify” operation code in an operation code field <b>82</b>. The packet extractor of the USB flash device receives identification data packet <b>80</b> and transfers the operating code of the “identify” command to the application command interpreter.
0061In response to the “identify” command, the flash device then sends an identification data packet <b>84</b>, shown in <figref idref="DRAWINGS">FIG. 8</figref>. In addition to the fields shown in <figref idref="DRAWINGS">FIG. 7</figref>, identification data packet <b>84</b> also contains information about the size of the flash device in a flash device size field <b>86</b>, as well as information about the size of the minimal erase unit for erasing the flash memory in an erase unit size field <b>88</b>.
0062All of the packets described in this example are only data packets which are sent on the USB bus. Before each data packet is sent, a USB token packet is transmitted, instructing the USB controller as to the identity of the device end point to which the data packet should be transmitted. Upon successful reception of the packet, the USB controller issues a USB ACK packet as described in the USB specification.
0063Once the device drivers in the host platform receive this status packet, the drivers can start issuing read and write commands to the USB flash device with the application commands. When a write request is sent, a USB data packet with the operation code for the “write” command, and the buffer containing the data, is transferred to the USB flash device. A write data packet <b>90</b> is shown in <figref idref="DRAWINGS">FIG. 9</figref>, which again includes the fields shown previously in <figref idref="DRAWINGS">FIG. 8</figref>, except that write data packet <b>90</b> also includes a write field <b>92</b> with the “write” operational code; an ADDR field <b>94</b> with the logical address to be written; a LEN field <b>96</b> with the length to be written; and a DATA field <b>98</b> which contains the actual data to write. The packet extractor extracts the operational code from write data packet <b>90</b> and transfers this code to the application command interpreter. The logical address is transferred to the address resolve module which translates this logical address to a physical address on one of the flash modules. The data handler optionally calculates error correction and detection mechanisms if employed by the USB flash device. Once all of the flash memory modules are ready, a “write” command is sent to the flash module or modules containing the physical address, which may optionally span across more than one flash module to the MTD block. The MTD block then issues a “write” command on the data/address bus which connects the flash modules to the USB device controller. Once the operation is complete and a status packet is returned to the MTD, the result of the operation is transmitted to the host controller and passed to the device driver in the host platform.
0064When the flash controller finishes the writing process, the controller signals to the host platform that the status of the USB flash memory device has changed, by sending a “write status” packet <b>100</b>, as shown in <figref idref="DRAWINGS">FIG. 10</figref>. In place of data field <b>98</b>, write status packet <b>100</b> contains a status field <b>102</b>. The host platform reads the status packets from the flash memory device, and from write status packet <b>100</b>, the host platform retrieves information on the completion status of the write command by reading status field <b>102</b>. In this example, the flash memory device repeats ADDR field <b>94</b> and LEN field <b>96</b> in order for the host platform to have a reference to the specific command related to status packet <b>100</b>.
0065As shown in <figref idref="DRAWINGS">FIG. 11</figref>, a “read request” packet <b>104</b> contains the operation code for the “read” command in a read field <b>106</b>, and the logical address of the desired location from which the flash controller should read in an ADDR field <b>108</b>. Upon receiving this command, the flash controller issues a read command to the MTD block, after the address resolve module has translated the address contained in ADDR field <b>108</b> to a specific physical address in one of the flash components.
0066When the flash controller receives the data from the flash device, either after the read command was issued, or if an error occurred, the flash controller sends a signal to the host platform to indicate that a new status packet must be read. The host platform issues a read request and receives a “read status” packet <b>110</b> as shown in <figref idref="DRAWINGS">FIG. 12</figref>. Read status packet <b>110</b> contains the address of the read data in ADDR field <b>108</b>, as well as the length of the read data in a LEN field <b>112</b> and the data itself in a data field <b>114</b>. Read status packet <b>110</b> also features the status word, according to which the operation was completed, in a status field <b>116</b>. The read operation can be completed with many different status situations such as success, fail, error detected, invalid address, invalid length and so forth.
0067When the host platform needs to erase an erase unit in the flash device, the host platform issues an “erase request” packet <b>118</b>, shown in <figref idref="DRAWINGS">FIG. 13</figref>. This packet contains the “erase” operation code in an erase field <b>120</b>, and the logical address of the erase unit in an ADDR field <b>122</b>. Upon receiving such a request, the flash controller translates the logical address to a physical erase unit address on one of the physical address spaces of the flash modules, and issues an erase command to the MTD block.
0068The erase process generally takes more time then a read or write process. When this erase process is finished, the controller notifies the host platform a new status packet is ready to transmit. The controller then transmits an “erase status” packet <b>124</b>, as shown in <figref idref="DRAWINGS">FIG. 14</figref>. Erase status packet <b>124</b> contains the address of the erased unit in ADDR field <b>122</b>, thereby providing the host platform with a reference to the erase requests. The status according to which the operation was completed is provided in a status field <b>126</b>.
0069It will be appreciated that the above descriptions are intended only to serve as examples, and that many other embodiments are possible within the spirit and the scope of the present invention.
Contents5
Every citation, both waysCites: the store holds 100 of 101
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10585674B2 | Cited by | United States of America | Applicant |
| US4203001A | Cites | United States of America | Applicant |
| US4958342A | Cites | United States of America | Applicant |
| US4979167A | Cites | United States of America | Applicant |
| US5067105A | Cites | United States of America | Applicant |
| US5226168A | Cites | United States of America | Applicant |
| US5291584A | Cites | United States of America | Applicant |
| US5297148A | Cites | United States of America | Applicant |
| US5341330A | Cites | United States of America | Applicant |
| US5375243A | Cites | United States of America | Applicant |
| US5388083A | Cites | United States of America | Applicant |
| US5404485A | Cites | United States of America | Applicant |
| US5412798A | Cites | United States of America | Applicant |
| US5420412A | Cites | United States of America | Applicant |
| US5434648A | Cites | United States of America | Applicant |
| US5437031A | Cites | United States of America | Applicant |
| US5459850A | Cites | United States of America | Applicant |
| US5485519A | Cites | United States of America | Applicant |
| US5491774A | Cites | United States of America | Applicant |
| US5509134A | Cites | United States of America | Applicant |
| US5519843A | Cites | United States of America | Applicant |
| US5524230A | Cites | United States of America | Applicant |
| US5532945A | Cites | United States of America | Applicant |
| US5535197A | Cites | United States of America | Applicant |
| US5535357A | Cites | United States of America | Applicant |
| US5544356A | Cites | United States of America | Applicant |
| US5546402A | Cites | United States of America | Applicant |
| US5568134A | Cites | United States of America | Applicant |
| US5581723A | Cites | United States of America | Applicant |
| US5588146A | Cites | United States of America | Applicant |
| US5602987A | Cites | United States of America | Applicant |
| US5630093A | Cites | United States of America | Applicant |
| US5659705A | Cites | United States of America | Applicant |
| US5661677A | Cites | United States of America | Applicant |
| US5663901A | Cites | United States of America | Applicant |
| US5684742A | Cites | United States of America | Applicant |
| US5719808A | Cites | United States of America | Applicant |
| US5724285A | Cites | United States of America | Applicant |
| US5732092A | Cites | United States of America | Applicant |
| US5745418A | Cites | United States of America | Applicant |
| US5760986A | Cites | United States of America | Applicant |
| US5774744A | Cites | United States of America | Applicant |
| US5778418A | Cites | United States of America | Applicant |
| US5781028A | Cites | United States of America | Applicant |
| US5784581A | Cites | United States of America | Applicant |
| US5799168A | Cites | United States of America | Applicant |
| US5815426A | Cites | United States of America | Applicant |
| US5822251A | Cites | United States of America | Applicant |
| US5841424A | Cites | United States of America | Applicant |
| US5845151A | Cites | United States of America | Applicant |
| US5845313A | Cites | United States of America | Applicant |
| US5845332A | Cites | United States of America | Applicant |
| US5847997A | Cites | United States of America | Applicant |
| US5860124A | Cites | United States of America | Applicant |
| US5860157A | Cites | United States of America | Search report |
| US5867417A | Cites | United States of America | Applicant |
| US5878142A | Cites | United States of America | Applicant |
| US5890016A | Cites | United States of America | Applicant |
| US5928347A | Cites | United States of America | Applicant |
| US5928370A | Cites | United States of America | Applicant |
| US5935244A | Cites | United States of America | Applicant |
| US5937423A | Cites | United States of America | Applicant |
| US5937425A | Cites | United States of America | Applicant |
| US5938750A | Cites | United States of America | Applicant |
| US5943692A | Cites | United States of America | Applicant |
| US5949882A | Cites | United States of America | Applicant |
| US5963983A | Cites | United States of America | Applicant |
| US5974486A | Cites | United States of America | Applicant |
| US5991194A | Cites | United States of America | Applicant |
| US5991546A | Cites | United States of America | Applicant |
| US6003135A | Cites | United States of America | Applicant |
| US6009480A | Cites | United States of America | Applicant |
| US6011486A | Cites | United States of America | Applicant |
| US6011741A | Cites | United States of America | Applicant |
| US6012103A | Cites | United States of America | Applicant |
| US6016530A | Cites | United States of America | Applicant |
| US6016553A | Cites | United States of America | Applicant |
| US6028807A | Cites | United States of America | Applicant |
| US6038320A | Cites | United States of America | Applicant |
| US6038640A | Cites | United States of America | Applicant |
| US6044428A | Cites | United States of America | Applicant |
| US6058441A | Cites | United States of America | Applicant |
| US6067625A | Cites | United States of America | Applicant |
| US6069827A | Cites | United States of America | Applicant |
| US6081850A | Cites | United States of America | Applicant |
| US6088755A | Cites | United States of America | Applicant |
| US6088802A | Cites | United States of America | Applicant |
| US6102103A | Cites | United States of America | Applicant |
| US6109939A | Cites | United States of America | Applicant |
| US6128675A | Cites | United States of America | Applicant |
| US6131141A | Cites | United States of America | Applicant |
| US6137710A | Cites | United States of America | Applicant |
| US6145045A | Cites | United States of America | Applicant |
| US6145046A | Cites | United States of America | Applicant |
| US6148354A | Cites | United States of America | Applicant |
| US6151657A | Cites | United States of America | Applicant |
| US6163816A | Cites | United States of America | Applicant |
| US6168077B1 | Cites | United States of America | Applicant |
| US6170743B1 | Cites | United States of America | Applicant |
| US6174205B1 | Cites | United States of America | Applicant |
88 members in 19 offices
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 28570699 | United States of America | A | |
| 28570699 | United States of America | A | |
| 29286802 | United States of America | A | |
| 29286802 | United States of America | A | |
| 201113005505 | United States of America | A | |
| 09285706 | – | – | – |
| 10292868 | – | – | – |
| US19990285706 | – | – | – |
| US20020292868 | – | – | – |
| US201113005505 | – | – | – |
Members88
| Document | Office | Kind | |
|---|---|---|---|
| CA2334113A1 | Canada | A1 | |
| WO0060476A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU3756400A | Australia | A | |
| US6148354A | United States of America | A | |
| BR0006063A | Brazil | A | |
| EP1092193A1 | European Patent Office (EPO) | A1 | |
| CN1304509A | China | A | |
| KR20010071332A | Republic of Korea | A | |
| IL139662D0 | Israel | D0 | |
| EP1092193A4 | European Patent Office (EPO) | A4 | |
| JP2002541554A | Japan | A | |
| TW550454B | Taiwan Province of China | B | |
| AU766478B2 | Australia | B2 | |
| KR20030084947A | Republic of Korea | A | |
| AU2003268851A1 | Australia | A1 | |
| IL139662A | Israel | A | |
| IL158578D0 | Israel | D0 | |
| CN1527210A | China | A | |
| HK1065869A1 | Hong Kong, China | A1 | |
| EP1092193B1 | European Patent Office (EPO) | B1 | |
| AT295570T | Austria | T | |
| ATE295570T1 | Austria | T1 | |
| DE60020046D1 | Germany | D1 | |
| EP1548604A2 | European Patent Office (EPO) | A2 | |
| KR100505972B1 | Republic of Korea | B1 | |
| ES2241593T3 | Spain | T3 | |
| AU2003268851B2 | Australia | B2 | |
| SG117466A1 | Singapore | A1 | |
| DE60020046T2 | Germany | T2 | |
| JP2006031733A | Japan | A | |
| AU2006200756A1 | Australia | A1 | |
| CN1264100C | China | C | |
| EP1548604A3 | European Patent Office (EPO) | A3 | |
| IL158578A | Israel | A | |
| EP1746513A2 | European Patent Office (EPO) | A2 | |
| KR20070015480A | Republic of Korea | A | |
| DE20023887U1 | Germany | U1 | |
| CN1937073A | China | A | |
| SG131813A1 | Singapore | A1 | |
| JP2007200351A | Japan | A | |
| AU2006200756B2 | Australia | B2 | |
| CN100385426C | China | C | |
| AU2008202866A1 | Australia | A1 | |
| KR20080098450A | Republic of Korea | A | |
| EP1746513A3 | European Patent Office (EPO) | A3 | |
| CN101345077A | China | A | |
| JP4261069B2 | Japan | B2 | |
| KR100914427B1 | Republic of Korea | B1 | |
| EP1092193B2 | European Patent Office (EPO) | B2 | |
| KR100922766B1 | Republic of Korea | B1 | |
| EP2120435A2 | European Patent Office (EPO) | A2 | |
| EP1548604B1 | European Patent Office (EPO) | B1 | |
| DE60020046T3 | Germany | T3 | |
| AT453896T | Austria | T | |
| ATE453896T1 | Austria | T1 | |
| DE60043623D1 | Germany | D1 | |
| PT1548604E | Portugal | E | |
| EP2163991A2 | European Patent Office (EPO) | A2 | |
| DK1548604T3 | Denmark | T3 | |
| ES2241593T5 | Spain | T5 | |
| EP1746513B1 | European Patent Office (EPO) | B1 | |
| EP2120435A3 | European Patent Office (EPO) | A3 | |
| EP2163991A3 | European Patent Office (EPO) | A3 | |
| AT467308T | Austria | T | |
| ATE467308T1 | Austria | T1 | |
| ES2339255T3 | Spain | T3 | |
| DE60044381D1 | Germany | D1 | |
| PT1746513E | Portugal | E | |
| DK1746513T3 | Denmark | T3 | |
| ES2344359T3 | Spain | T3 | |
| SG163430A1 | Singapore | A1 | |
| AU2010257369A1 | Australia | A1 | |
| AU2008202866B2 | Australia | B2 | |
| JP2011054187A | Japan | A | |
| USRE42397E | United States of America | E | |
| USRE42443E | United States of America | E | |
| AU2010257369B2 | Australia | B2 | |
| AU2012216828A1 | Australia | A1 | |
| JP5044254B2 | Japan | B2 | |
| SG186496A1 | Singapore | A1 | |
| EP2120435B1 | European Patent Office (EPO) | B1 | |
| EP2163991B1 | European Patent Office (EPO) | B1 | |
| USRE44641EThis record | United States of America | E | |
| USRE44653E | United States of America | E | |
| BR0006063B1 | Brazil | B1 | |
| CN101345077B | China | B | |
| CY1109871T1 | Cyprus | T1 | |
| CY1111146T1 | Cyprus | T1 |
111 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Ex Parte Quayle ActionA.QU | A.QU | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Ex Parte Quayle Action (PTOL - 326)MCTEQ | MCTEQ | |
| Quayle actionCTEQ | CTEQ | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail-Petition Decision - GrantedMPTGR | MPTGR | |
| Petition Decision - GrantedPTGR | PTGR | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Response after Non-Final ActionA... | A... | |
| Petition EnteredPET. | PET. | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| to Close the A/R Record and Reset the Status for Expired Suspensions.EOSP | EOSP | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Letter Suspending Prosecution at Applicant's RequestMAISP | MAISP | |
| Suspension Letter- Applicant InitiatedAISP | AISP | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Letter Requesting Suspension of ProsecutionM856 | M856 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Mail Notice of Withdrawn ActionMW/AC | MW/AC | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Withdrawing/Vacating Office Action LetterW/AC | W/AC | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Terminal Disclaimer FiledDIST | DIST | |
| Terminal Disclaimer FiledDIST | DIST | |
| Terminal Disclaimer FiledDIST | DIST | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 |
Numbers
- Publication
- RE044641
- Publication, DOCDB
- RE44641
- Publication, EPODOC
- USRE44641E
- Application
- 13005505
- Application, DOCDB
- 201113005505
- Application, EPODOC
- US201113005505
Titles
- English
- USB flash memory device with integrated USB controller
Classification
- CPC, 7
- G06F3/0661
- G06F13/36
- G06F3/0607
- G06F3/0679
- G06F13/385
- G11C7/1006
- H04M1/72409
- IPC, 8
- G06F12 00
- G06F3 06
- G06F13 10
- G06F3 08
- G06F13 36
- G06F13 38
- G11C7 10
- H04M1 72409
- USPC, 2
- 710301000
- 711115000