EP2171618A2 - Methods and systems for communicating with a non-volatile memory storage device - Google Patents

Methods and systems for communicating with a non-volatile memory storage device

Info

Publication number
EP2171618A2
EP2171618A2 EP08781179A EP08781179A EP2171618A2 EP 2171618 A2 EP2171618 A2 EP 2171618A2 EP 08781179 A EP08781179 A EP 08781179A EP 08781179 A EP08781179 A EP 08781179A EP 2171618 A2 EP2171618 A2 EP 2171618A2
Authority
EP
European Patent Office
Prior art keywords
storage device
command
host system
module
information regarding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
EP08781179A
Other languages
German (de)
French (fr)
Inventor
Haluk Kent Tanik
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/771,203 external-priority patent/US8429328B2/en
Priority claimed from US11/771,165 external-priority patent/US8433842B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of EP2171618A2 publication Critical patent/EP2171618A2/en
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • G06F12/0661Configuration or reconfiguration with centralised address assignment and decentralised selection
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/177Smart card

Definitions

  • the present description relates to non-volatile memory storage devices, and more particularly, to communication with non-volatile memory storage devices.
  • Non-volatile memory storage devices are commonly used to store information. These devices are used with " cellular phones, digital cameras, desktop computers, laptop computers and other similar systems (jointly and interchangeably referred to herein as a "host system” or “host”).
  • host system or “host”
  • Different host system platforms use a software layer (may also be referred to as software development kit (SDK) layer) to communicate with a non-volatile memory storage device via a non-volatile memory storage device driver. Additional SDK layers may be used by host systems to access additional features of a non-volatile memory storage device that are not offered otherwise. Porting SDKs to different host system providers is a burden and it is desirable to reduce that burden.
  • SDK software development kit
  • a method for a storage device includes interpreting a command from a host system, wherein a command parser module for a storage device interprets the command; and extracting information regarding an operation from the command, wherein the command parser module extracts the information.
  • a method for a storage device is provided.
  • the method includes receiving a command from a host system in a platform independent format, wherein the storage device receives the command; interpreting the command, wherein a command parser module for the storage device interprets the command; extracting information regarding an operation from the command, wherein the command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system.
  • the method includes receiving a command from a host system in a platform independent format, wherein the storage device receives the command; detecting if the command includes an operational directive, wherein firmware code for the storage device detects if the command includes an operational directive; extracting information regarding an operation from the command, wherein a command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system.
  • a storage device includes a command parser module for interpreting a command from a host system in a platform independent format; and for extracting information regarding an operation from the command, wherein the command parser module interfaces with the host system.
  • a storage device includes a command parser module for receiving a command from a host system in a platform independent format; for interpreting the command; extracting information regarding an operation from the command; and for sending a response to the host system, after the operation is performed by the storage device.
  • a storage device is provided.
  • the storage device includes a command parser module for receiving a command from a host system in a platform independent format; for extracting information regarding an operation from the command, after firmware code for the storage device detects if the command includes an operational directive; and for sending a response to the host system, after the operation is performed by the storage device.
  • a command parser module for receiving a command from a host system in a platform independent format; for extracting information regarding an operation from the command, after firmware code for the storage device detects if the command includes an operational directive; and for sending a response to the host system, after the operation is performed by the storage device.
  • Figure 1A shows a block diagram of a host system operationally coupled to a non-volatile memory device
  • Figure 1 B shows an example of a block diagram of a memory controller for a non-volatile memory device
  • Figure 1C shows a block diagram of a typical software architecture used to communicate with a non-volatile memory device
  • Figure 1D shows a block diagram of a system with a command parser module, according to one embodiment
  • Figure 2 shows a process flow diagram for communicating with a non-volatile memory device, according to one embodiment
  • Figure 3 shows an example of the process and system for communicating with a non-volatile memory device, according to one embodiment.
  • FIG. 1A shows a block diagram of a typical host system 100 that includes a central processing unit (“CPU”) (or microprocessor or processor) 101 connected to a system bus 105.
  • CPU central processing unit
  • RAM random access main memory
  • CPU 101 stores the process steps in RAM 103 and executes the stored process steps out of RAM 103.
  • Host system 100 connects to a computer network (not shown) via network interface 104.
  • a computer network (not shown)
  • One such network is the Internet that allows host system 100 to download applications, code, documents and others electronic information.
  • Read only memory (“ROM”) 102 is provided to store invariant instruction sequences such as start-up instruction sequences or basic Input/output operating system (BIOS) sequences.
  • I/O devices 106 for example, a keyboard, a keypad, a pointing device ("mouse”), a monitor, a modem and the like are also provided.
  • Host system 100 is coupled to a non-volatile memory storage device 111 that includes a controller module 108 (may also be referred to as “memory controller” or “controller”) and solid-state memory modules 109-110 (shown as Memory Module #1 and Memory Module #N). Controller module 108 interfaces with host processor 101 via a bus interface 107 or directly via system bus 105 or any another peripheral bus (not shown).
  • non-volatile memory storage device 111 may be a flash memory device (or card). There are currently many different flash memory cards that are commercially available, examples being the CompactFlash (CF), the MultiMediaCard (MMC), Secure Digital (SD), miniSD, Memory Stick, SmartMedia and TransFlash cards.
  • CF CompactFlash
  • MMC MultiMediaCard
  • SD Secure Digital
  • miniSD Memory Stick
  • SmartMedia SmartMedia
  • each of these cards has a unique mechanical and/or electrical interface (or any other type of interface, including a wireless interface) according to its standardized specifications (for example, the Universal Serial Bus (USB) specification based interface, incorporated herein by reference in its entirety), the flash memory included in each is very similar.
  • USB Universal Serial Bus
  • These cards are all available from SanDisk Corporation, assignee of the present application.
  • SanDisk also provides a line of flash drives under its Cruzer trademark, which are hand held memory systems in small packages that have a Universal Serial Bus (USB) plug for connecting with a host system by plugging into the host's USB receptacle.
  • USB Universal Serial Bus
  • Each of these memory cards and flash drives include controllers that interface with the host system and control operation of the flash memory within them.
  • Host systems for example, 100 that use such memory cards and flash drives are many and varied. They include personal computers (PCs), laptop and other portable computers, cellular telephones, personal digital assistants (PDAs), digital still cameras, digital movie cameras and portable audio players.
  • the host typically includes a built-in receptacle for one or more types of memory cards or flash drives but some require adapters into which a memory card is plugged.
  • Figure 1 B shows a block diagram of the internal architecture of controller module 108.
  • Controller module 108 includes a microcontroller 114 that interfaces with various other components via interface logic 116.
  • Memory 115 stores firmware and software instructions that are used by microcontroller 114 to control the operation of non-volatile memory storage device 111.
  • Memory 115 may be volatile re-programmable random access memory ("RAM”), a non-volatile memory that is not re-programmable (“ROM”), a one-time programmable memory or a re-programmable flash electrically-erasable and programmable read-only memory (“EEPROM”).
  • RAM re-programmable random access memory
  • ROM non-volatile memory that is not re-programmable
  • EEPROM electrically-erasable and programmable read-only memory
  • Figure 1C shows a top-level block diagram of a conventional operating system that uses a storage device driver 121 and SDK layer 118 to communicate with non-volatile memory storage device 111.
  • a software application 117 executed by host system 100 sends commands for reading information stored in non-volatile memory storage device 111 , writing information at non-volatile memory storage device 111 , or for performing any other function.
  • Micro-controller 114 executing firmware instructions 119 performs these operations.
  • Host system 100 may need SDK layer 118 to access nonvolatile memory storage device 111. Different host system 100 may use different operating systems and hence different versions of SDK layer 118 are needed. This becomes burdensome for storage device providers and also may affect user experience of using non-volatile memory storage device 111.
  • a simplified architecture is provided so that either SDK layer 118 is not needed or a partial SDK layer 120 (i.e. a thin version of SDK layer 118) (referred to as "thin SDK layer”) is used to access non-volatile memory storage device 111A.
  • Figure 1 D shows a block diagram of a top-level architecture that uses a platform independent format to communicate with non-volatile memory storage device 111A.
  • Non-volatile memory storage device 111A includes all components of non-volatile memory storage device 111 and also includes a command parser module 122 for interfacing with host system 100, as described below.
  • Command parser module 122 parses commands that are sent by host system 100 via storage driver 121 and thin SDK layer 120. The commands are in a generic format so that individual SDK layer 118 is not needed for different host systems.
  • command parser module 122 may be an XML parser.
  • XML stands for Extensible Markup language, a standard markup language, defined by the W3C consortium, incorporated herein by reference in its entirety.
  • XML is a text-based markup language that is becoming popular. As with HTML (hyper-text markup language), one identifies data using tags (for example, identifiers enclosed in angle brackets: ⁇ ...>). Collectively, the tags are known as "markup".
  • XML tags identify data, rather than specifying how to display it. Where an HTML tag may state "display this data in bold font" ( ⁇ b>... ⁇ /b>), an XML tag acts like a field name in a program. XML tags may be customized, based on different application type.
  • command parser module 122 is capable of receiving and interpreting an XML tag (command) from host system 100.
  • XML tags for various file system commands for example, read, write, delete, create a directory and other commands are defined between partial SDK layer 120 and command parser module 122.
  • An XML tag sent by host system 100 may include instructions to perform more than one operation, for example, to create a directory, write data and read data.
  • FIG. 1 shows a process flow diagram for communicating with non-volatile memory storage device 111A either using thin SDK layer 120 or without a SDK layer 118.
  • the process begins in step S200, when host system 100 sends a query command to non-volatile memory storage device 111A.
  • step S202 non-volatile memory storage device 111A sends information regarding features that are supported by non-volatile memory storage device 111 A.
  • step S204 host system 100 sends a command in a platform independent format.
  • platform independent format means that the command format does not depend on host system 100 operating system/environment. Examples of platform independent format include XML and others.
  • command parser module 122 parses the command (or tag) and extracts information regarding any operation that the host system 100 wants to be performed. A single tag may include information regarding multiple operations. Command parser module 122 notifies the module that needs to perform the operation.
  • step S208 the operation is performed and command parser module 122 sends a response back to host system 100, if host system 100 wants a response back.
  • the following provides an example of using XML tags, according to one embodiment. In this example, a host system may send a command to create a directory.
  • the text in italics below shows the XML tags that may be used to perform this operation.
  • the tag "Path” includes the directory name; and the tag “RetStatus” stores the operation "return status", if the host wants to know the status.
  • the following shows the XML tags to create a directory:
  • Figure 3 shows an example of using the process steps of
  • host system 100 is a cell phone.
  • Host system 100 creates a XML tag (or packet/file for example, "write SNDK.XML") for example, to create a directory.
  • the XML tag is identified as a File System Operation. If non-volatile memory storage device 111 A does not support the operation specified by the XML tag, then it can simply return a command stating "lnterface_Not_Supported".
  • firmware 119 determines if the XML tag has operational directives. This may be achieved by using a special identifier that firmware 119 can use to identify a file system operation.
  • Command parser module 122 intercepts the XML packet and notifies the appropriate module to perform the requested operation. After the operation is performed, command parser module 122 sends a status XML packet to host system 100. [0044] If host system 100 wants to check the status of the operations, host system 100 can read the tag back, for example, as shown in Figure 3, creating "0: ⁇ myDir ⁇ MyMusic" returns "SD_SUCCESS". [0045] In one embodiment, partial or no SDK layers are needed to communicate and access non-volatile memory storage device features.
  • non-volatile memory storage device may be implemented in any type of storage device, including hard disks, tape drives or any other storage device that uses a memory controller, state machine or any other type of hardware/software to interface with a host system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Methods and systems for a storage device are provided. One method includes interpreting a command from a host system, wherein a command parser module for a storage device interprets the command; and extracting information regarding an operation from the command, wherein the command parser module extracts the information and interfaces with the host system.

Description

DESCRIPTION
METHODS AND SYSTEMS FOR COMMUNICATING WITH A NONVOLATILE MEMORY STORAGE DEVICE
CROSS REFERENCE TO RELATED APPLICATIONS
[oooi] This application claims the benefit of U.S. Patent Application Serial No. 11/771 ,203 filed June 29, 2007, and U.S. Patent Application Serial No. 11/771 ,165 filed June 29, 2007; the disclosures of each which are incorporated herein by reference in their entireties.
1. Technical Field
[0002] The present description relates to non-volatile memory storage devices, and more particularly, to communication with non-volatile memory storage devices.
2. Related Art
[0003] Non-volatile memory storage devices are commonly used to store information. These devices are used with" cellular phones, digital cameras, desktop computers, laptop computers and other similar systems (jointly and interchangeably referred to herein as a "host system" or "host"). [0004] Different host system platforms use a software layer (may also be referred to as software development kit (SDK) layer) to communicate with a non-volatile memory storage device via a non-volatile memory storage device driver. Additional SDK layers may be used by host systems to access additional features of a non-volatile memory storage device that are not offered otherwise. Porting SDKs to different host system providers is a burden and it is desirable to reduce that burden.
SUMMARY [0005] In one embodiment, a method for a storage device is provided. The method includes interpreting a command from a host system, wherein a command parser module for a storage device interprets the command; and extracting information regarding an operation from the command, wherein the command parser module extracts the information. [0006] In another embodiment, a method for a storage device is provided. The method includes receiving a command from a host system in a platform independent format, wherein the storage device receives the command; interpreting the command, wherein a command parser module for the storage device interprets the command; extracting information regarding an operation from the command, wherein the command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system. [0007] In yet another embodiment, a method for a storage device is provided. The method includes receiving a command from a host system in a platform independent format, wherein the storage device receives the command; detecting if the command includes an operational directive, wherein firmware code for the storage device detects if the command includes an operational directive; extracting information regarding an operation from the command, wherein a command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system.
[0008] In an embodiment, a storage device is provided. The storage device includes a command parser module for interpreting a command from a host system in a platform independent format; and for extracting information regarding an operation from the command, wherein the command parser module interfaces with the host system. [0009] In another embodiment, a storage device is provided. The storage device includes a command parser module for receiving a command from a host system in a platform independent format; for interpreting the command; extracting information regarding an operation from the command; and for sending a response to the host system, after the operation is performed by the storage device. [ooio] In yet another embodiment, a storage device is provided. The storage device includes a command parser module for receiving a command from a host system in a platform independent format; for extracting information regarding an operation from the command, after firmware code for the storage device detects if the command includes an operational directive; and for sending a response to the host system, after the operation is performed by the storage device.
[0011] This brief summary has been provided so that the nature of the description may be understood quickly. A more complete understanding of the description can be obtained by reference to the following detailed description of the preferred embodiments thereof in connection with the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS [0012] The foregoing features and other features will now be described with reference to the drawings of various embodiments. In the drawings, the same components have the same reference numerals. The illustrated embodiments are intended to illustrate, but not to limit the description. The drawings include the following Figures: [0013] Figure 1A shows a block diagram of a host system operationally coupled to a non-volatile memory device;
[0014] Figure 1 B shows an example of a block diagram of a memory controller for a non-volatile memory device;
[0015] Figure 1C shows a block diagram of a typical software architecture used to communicate with a non-volatile memory device;
[0016] Figure 1D shows a block diagram of a system with a command parser module, according to one embodiment;
[0017] Figure 2 shows a process flow diagram for communicating with a non-volatile memory device, according to one embodiment; and [0018] Figure 3 shows an example of the process and system for communicating with a non-volatile memory device, according to one embodiment. DETAILED DESCRIPTION
[0019] To facilitate an understanding of the various embodiments, the general architecture and operation of a computing system and a non-volatile memory storage device will first be described. The specific architecture and operation will then be described with reference to the general architecture.
[0020] Figure 1A shows a block diagram of a typical host system 100 that includes a central processing unit ("CPU") (or microprocessor or processor) 101 connected to a system bus 105. Random access main memory ("RAM") 103 is coupled to system bus 105 and provides CPU 101 with access to memory storage. When executing program instructions, CPU 101 stores the process steps in RAM 103 and executes the stored process steps out of RAM 103.
[0021] Host system 100 connects to a computer network (not shown) via network interface 104. One such network is the Internet that allows host system 100 to download applications, code, documents and others electronic information.
[0022] Read only memory ("ROM") 102 is provided to store invariant instruction sequences such as start-up instruction sequences or basic Input/output operating system (BIOS) sequences. [0023] Input/Output ("I/O") devices 106, for example, a keyboard, a keypad, a pointing device ("mouse"), a monitor, a modem and the like are also provided.
[0024] Host system 100 is coupled to a non-volatile memory storage device 111 that includes a controller module 108 (may also be referred to as "memory controller" or "controller") and solid-state memory modules 109-110 (shown as Memory Module #1 and Memory Module #N). Controller module 108 interfaces with host processor 101 via a bus interface 107 or directly via system bus 105 or any another peripheral bus (not shown). [0025] In one embodiment, non-volatile memory storage device 111 may be a flash memory device (or card). There are currently many different flash memory cards that are commercially available, examples being the CompactFlash (CF), the MultiMediaCard (MMC), Secure Digital (SD), miniSD, Memory Stick, SmartMedia and TransFlash cards. Although each of these cards has a unique mechanical and/or electrical interface (or any other type of interface, including a wireless interface) according to its standardized specifications (for example, the Universal Serial Bus (USB) specification based interface, incorporated herein by reference in its entirety), the flash memory included in each is very similar. These cards are all available from SanDisk Corporation, assignee of the present application. [0026] SanDisk also provides a line of flash drives under its Cruzer trademark, which are hand held memory systems in small packages that have a Universal Serial Bus (USB) plug for connecting with a host system by plugging into the host's USB receptacle. Each of these memory cards and flash drives include controllers that interface with the host system and control operation of the flash memory within them.
[0027] Host systems (for example, 100) that use such memory cards and flash drives are many and varied. They include personal computers (PCs), laptop and other portable computers, cellular telephones, personal digital assistants (PDAs), digital still cameras, digital movie cameras and portable audio players. The host typically includes a built-in receptacle for one or more types of memory cards or flash drives but some require adapters into which a memory card is plugged. [0028] Figure 1 B shows a block diagram of the internal architecture of controller module 108. Controller module 108 includes a microcontroller 114 that interfaces with various other components via interface logic 116. Memory 115 stores firmware and software instructions that are used by microcontroller 114 to control the operation of non-volatile memory storage device 111. Memory 115 may be volatile re-programmable random access memory ("RAM"), a non-volatile memory that is not re-programmable ("ROM"), a one-time programmable memory or a re-programmable flash electrically-erasable and programmable read-only memory ("EEPROM"). [0029] A host interface 113 interfaces with host system 100, while a memory interface 112 interfaces with memory modules 109-110.
[0030] Figure 1C shows a top-level block diagram of a conventional operating system that uses a storage device driver 121 and SDK layer 118 to communicate with non-volatile memory storage device 111. A software application 117, executed by host system 100 sends commands for reading information stored in non-volatile memory storage device 111 , writing information at non-volatile memory storage device 111 , or for performing any other function. Micro-controller 114 executing firmware instructions 119 performs these operations.
[0031] Host system 100 may need SDK layer 118 to access nonvolatile memory storage device 111. Different host system 100 may use different operating systems and hence different versions of SDK layer 118 are needed. This becomes burdensome for storage device providers and also may affect user experience of using non-volatile memory storage device 111.
[0032] In one embodiment, a simplified architecture is provided so that either SDK layer 118 is not needed or a partial SDK layer 120 (i.e. a thin version of SDK layer 118) (referred to as "thin SDK layer") is used to access non-volatile memory storage device 111A. Figure 1 D shows a block diagram of a top-level architecture that uses a platform independent format to communicate with non-volatile memory storage device 111A. Non-volatile memory storage device 111A includes all components of non-volatile memory storage device 111 and also includes a command parser module 122 for interfacing with host system 100, as described below.
[0033] Command parser module 122 parses commands that are sent by host system 100 via storage driver 121 and thin SDK layer 120. The commands are in a generic format so that individual SDK layer 118 is not needed for different host systems. [0034] In one embodiment, command parser module 122 may be an XML parser. XML stands for Extensible Markup language, a standard markup language, defined by the W3C consortium, incorporated herein by reference in its entirety. XML is a text-based markup language that is becoming popular. As with HTML (hyper-text markup language), one identifies data using tags (for example, identifiers enclosed in angle brackets: <...>). Collectively, the tags are known as "markup". But unlike HTML, XML tags identify data, rather than specifying how to display it. Where an HTML tag may state "display this data in bold font" (<b>...</b>), an XML tag acts like a field name in a program. XML tags may be customized, based on different application type. In this embodiment, command parser module 122 is capable of receiving and interpreting an XML tag (command) from host system 100. [0035] XML tags for various file system commands, for example, read, write, delete, create a directory and other commands are defined between partial SDK layer 120 and command parser module 122. An XML tag sent by host system 100 may include instructions to perform more than one operation, for example, to create a directory, write data and read data. Command parser module 122 extracts information regarding the operation and notifies the proper component/module of non-volatile memory storage device 111A (for example, microcontroller 114) to perform the operation. [0036] Figure 2 shows a process flow diagram for communicating with non-volatile memory storage device 111A either using thin SDK layer 120 or without a SDK layer 118. The process begins in step S200, when host system 100 sends a query command to non-volatile memory storage device 111A. In step S202, non-volatile memory storage device 111A sends information regarding features that are supported by non-volatile memory storage device 111 A. [0037] In step S204, host system 100 sends a command in a platform independent format. The term platform independent format means that the command format does not depend on host system 100 operating system/environment. Examples of platform independent format include XML and others. [0038] In step S206, command parser module 122 parses the command (or tag) and extracts information regarding any operation that the host system 100 wants to be performed. A single tag may include information regarding multiple operations. Command parser module 122 notifies the module that needs to perform the operation. [0039] In step S208, the operation is performed and command parser module 122 sends a response back to host system 100, if host system 100 wants a response back. [0040] The following provides an example of using XML tags, according to one embodiment. In this example, a host system may send a command to create a directory. The text in italics below shows the XML tags that may be used to perform this operation. The tag "Path" includes the directory name; and the tag "RetStatus" stores the operation "return status", if the host wants to know the status. The following shows the XML tags to create a directory:
<FileSystemOperation>
<OpType>CreateO\rectory</OpType> <Parameters>
<Path>"0:\\MyDir\\MyMus\c"</Path>
</Parameters>
<RetStatus></RetStatus>
</FileSystemOperation>
[0041] Figure 3 shows an example of using the process steps of
Figure 2. In this example, host system 100 is a cell phone. Host system 100 creates a XML tag (or packet/file for example, "write SNDK.XML") for example, to create a directory. The XML tag is identified as a File System Operation. If non-volatile memory storage device 111 A does not support the operation specified by the XML tag, then it can simply return a command stating "lnterface_Not_Supported".
[0042] Before the tag is written, firmware 119 determines if the XML tag has operational directives. This may be achieved by using a special identifier that firmware 119 can use to identify a file system operation.
[0043] Command parser module 122 intercepts the XML packet and notifies the appropriate module to perform the requested operation. After the operation is performed, command parser module 122 sends a status XML packet to host system 100. [0044] If host system 100 wants to check the status of the operations, host system 100 can read the tag back, for example, as shown in Figure 3, creating "0:\\myDir\\MyMusic" returns "SD_SUCCESS". [0045] In one embodiment, partial or no SDK layers are needed to communicate and access non-volatile memory storage device features.
[0046] It is noteworthy that although the foregoing embodiments have been illustrated using a non-volatile memory storage device, the foregoing embodiments may be implemented in any type of storage device, including hard disks, tape drives or any other storage device that uses a memory controller, state machine or any other type of hardware/software to interface with a host system.
[0047] While the present description is described above with respect to what is currently considered its preferred embodiments, it is to be understood that the description is not limited to that described above. To the contrary, the description is intended to cover various modifications and equivalent arrangements within the spirit and scope of the appended claims.

Claims

CLAIMS What is claimed is:
1. A method for a storage device, comprising: receiving a command from a host system in a platform independent format, wherein the storage device receives the command; interpreting the command, wherein a command parser module for the storage device interprets the command; extracting information regarding an operation from the command, wherein the command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system.
2. The method of Claim 1 , wherein information regarding a plurality of operations is embedded in the command.
3. The method of Claim 1 , wherein the command parser module provides information regarding the operation to a module of the storage device.
4. The method of Claim 3, wherein the module is a micro-controller.
5. The method of Claim 1 , wherein the command parser module is an XML parser.
6. The method of Claim 1 , wherein the storage device is a non-volatile memory storage device.
7. A method for a storage device, comprising: receiving a command from a host system in a platform independent format, wherein the storage device receives the command; detecting if the command includes an operational directive, wherein firmware code for the storage device detects if the command includes an operational directive; extracting information regarding an operation from the command, wherein a command parser module extracts the information; and sending a response to the host system, after the operation is performed by the storage device, wherein the command parser module sends the response to the host system.
8. The method of Claim 7, wherein information regarding a plurality of operations is embedded in the command.
9. The method of Claim 7, wherein the command parser module provides information regarding the operation to a module of the storage device.
10. The method of Claim 9, wherein the module is a micro-controller.
11. The method of Claim 7, wherein the command parser module is an XML parser.
12. The method of Claim 7, wherein the storage device is a non-volatile memory storage device.
13. The method of Claim 7, wherein the command parser module interfaces with the host system via a partial software layer.
14. A method for a storage device, comprising: interpreting a command from a host system, wherein a command parser module for the storage device interprets the command and the command is in a platform independent format; and extracting information regarding an operation from the command, wherein the command parser module extracts the information and interfaces with the host system.
15. The method of Claim 14, wherein information regarding a plurality of operations is embedded in the command.
16. The method of Claim 14, wherein the command parser module provides information regarding the operation to a module of the storage device.
17. The method of Claim 16, wherein the module is a micro-controller.
18. The method of Claim 14, wherein the command parser module is an XML parser.
19. The method of Claim 14, wherein the storage device is a non-volatile memory storage device.
20. The method of Claim 14, wherein the command parser module interfaces with the host system via a partial software layer.
21. A storage device, comprising: a command parser module for receiving a command from a host system in a platform independent format; for interpreting the command; for extracting information regarding an operation from the command; and for sending a response to the host system, after the operation is performed by the storage device.
22. The storage device of Claim 21 , wherein information regarding a plurality of operations is embedded in the command.
23. The storage device of Claim 21 , wherein the command parser module provides information regarding the operation to a module of the storage device.
24. The storage device of Claim 23, wherein the module is a micro controller.
25. The storage device of Claim 21, wherein the command parser module is an XML parser.
26. The storage device of Claim 21 , wherein the storage device is a non-volatile memory storage device.
27. A storage device, comprising: a command parser module for receiving a command from a host system in a platform independent format; for extracting information regarding an operation from the command, after firmware code for the storage device detects if the command includes an operational directive; and for sending a response to the host system, after the operation is performed by the storage device.
28. The storage device of Claim 27, wherein information regarding a plurality of operations is embedded in the command.
29. The storage device of Claim 27, wherein the command parser module provides information regarding the operation to a module of the storage device.
30. The storage device of Claim 29, wherein the module is a micro- controller.
31. The storage device of Claim 27, wherein the command parser module is an XML parser.
32. The storage device of Claim 27, wherein the storage device is a nonvolatile memory storage device.
33. The storage device of Claim 27, wherein the command parser module interfaces with the host system via a partial software layer.
34. A storage device, comprising: a command parser module for interpreting a command from a host system in a platform independent format; and for extracting information regarding an operation from the command, wherein the command parser module interfaces with the host system.
35. The storage device of Claim 34, wherein information regarding a plurality of operations is embedded in the command.
36. The storage device of Claim 34, wherein the command parser module provides information regarding the operation to a module of the storage device.
37. The storage device of Claim 36, wherein the module is a microcontroller.
38. The storage device of Claim 34, wherein the command parser module is an XML parser.
39. The storage device of Claim 34, wherein the storage device is a nonvolatile memory storage device.
40. The storage device of Claim 34, wherein the command parser module interfaces with the host system via a partial software layer.
EP08781179A 2007-06-29 2008-06-30 Methods and systems for communicating with a non-volatile memory storage device Ceased EP2171618A2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/771,203 US8429328B2 (en) 2007-06-29 2007-06-29 System for communicating with a non-volatile memory storage device
US11/771,165 US8433842B2 (en) 2007-06-29 2007-06-29 Method for communicating with a non-volatile memory storage device
PCT/US2008/068796 WO2009006408A2 (en) 2007-06-29 2008-06-30 Methods and systems for communicating with a non-volatile memory storage device

Publications (1)

Publication Number Publication Date
EP2171618A2 true EP2171618A2 (en) 2010-04-07

Family

ID=39930812

Family Applications (1)

Application Number Title Priority Date Filing Date
EP08781179A Ceased EP2171618A2 (en) 2007-06-29 2008-06-30 Methods and systems for communicating with a non-volatile memory storage device

Country Status (4)

Country Link
EP (1) EP2171618A2 (en)
JP (1) JP5416697B2 (en)
KR (1) KR101570662B1 (en)
WO (1) WO2009006408A2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102267041B1 (en) 2015-06-05 2021-06-22 삼성전자주식회사 Storage device and operation method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046434A1 (en) * 2001-08-14 2003-03-06 Microsoft Corporation Method and system for synchronizing mobile devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004046817A (en) 2002-05-23 2004-02-12 Ricoh Co Ltd Program, storage medium, data management device, and data management system
DE10234158A1 (en) * 2002-07-26 2004-02-05 Giesecke & Devrient Gmbh Set up a file system on a disk
US20040052166A1 (en) * 2002-09-16 2004-03-18 Koninklijke Philips Electronics N.V. Command set for removable rewritable computer storage
CN1260642C (en) * 2002-11-18 2006-06-21 深圳市朗科科技有限公司 Method for transmitting command and data to portable storage device
JP2004318940A (en) 2003-04-14 2004-11-11 Renesas Technology Corp Storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046434A1 (en) * 2001-08-14 2003-03-06 Microsoft Corporation Method and system for synchronizing mobile devices

Also Published As

Publication number Publication date
KR101570662B1 (en) 2015-11-23
JP5416697B2 (en) 2014-02-12
KR20100058452A (en) 2010-06-03
WO2009006408A3 (en) 2009-04-30
JP2010534873A (en) 2010-11-11
WO2009006408A2 (en) 2009-01-08

Similar Documents

Publication Publication Date Title
CN101553783B (en) For receiving the system and method for control command at ancillary equipment
CN105144097B (en) Firmware updates for multiple product configurations
EP2097811B1 (en) System and method for receiving control commands at a peripheral device
EP1473664B1 (en) Smart card device as mass storage device
US7447821B2 (en) U3 adapter
CN101454746B (en) A method of communication with multi-function memory card
US8745304B2 (en) USB to SD bridge
US20110113212A1 (en) Systems for Accessing Memory Card and Methods for Accessing Memory Card by a Control Unit
US8429328B2 (en) System for communicating with a non-volatile memory storage device
CN103092648B (en) A kind of image upgrade method, system and subscriber equipment and personal computer
US8433842B2 (en) Method for communicating with a non-volatile memory storage device
US20160266912A1 (en) External devices, electronic devices, methods for starting external devices, and methods for data processing
KR101570662B1 (en) Methods and systems for communicating with a non-volatile memory storage device
US20090100238A1 (en) Memory card and memory card control changeover method
US20120072643A1 (en) Method of managing data in a portable electronic device having a plurality of controllers
US7516261B2 (en) Method for U3 adapter
CN102112976B (en) Depend on the electronic equipment that the platform in connected host apparatus provides self-adaptation to serve
KR20090104043A (en) Method and apparatus for starting a program application
CN101814057B (en) Method for driving information security equipment and information security equipment
WO2007124293A2 (en) U3 adapter
US12608194B2 (en) Operation methods, memory systems, system and readable storage media
US9672390B2 (en) IC card and command processing method for IC card
EP1830276B1 (en) Method for a host end fixedly naming a common serial port device
JP2025099278A (en) Electronic information storage medium, ic card, ic chip, method of using logical channel, and program

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20100122

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA MK RS

17Q First examination report despatched

Effective date: 20110221

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: SANDISK TECHNOLOGIES INC.

DAX Request for extension of the european patent (deleted)
REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20131220