This invention relates to memory cards and systems containing memory cards, including host systems that interface with two or more memory cards.
Nonvolatile memory systems are used in various applications. Some nonvolatile memory systems are embedded in a larger system such as a personal computer. Other nonvolatile memory systems are removably connected to a host system and may be interchanged between different host systems. Examples of such removable memory systems include memory cards and USB flash drives. Electronic circuit cards, including non-volatile memory cards, have been commercially implemented according to a number of well-known standards. Memory cards are used with personal computers, cellular telephones, personal digital assistants (PDAs), digital still cameras, digital movie cameras, portable audio players and other host electronic devices for the storage of large amounts of data. Such cards usually contain a re-programmable non-volatile semiconductor memory cell array along with a controller that controls and supports operation of the memory cell array and interfaces with a host to which the card is connected. Several of the same type of card may be interchanged in a host card slot designed to accept that type of card. However, the development of the many electronic card standards has created different types of cards that are incompatible with each other in various degrees. A card made according to one standard is usually not useable with a host designed to operate with a card of another standard. In some cases, cards may support the same standard, but have different form factors, e.g. SD, MiniSD, and MicroSD cards follow the SD standard but have different form factors. Memory card standards and/or form factors include PC Card, CompactFlash™ card (CF™ card), SmartMedia™ card, MultiMediaCard (MMC™), Secure Digital (SD) card, a miniSD™ card, Subscriber Identity Module (SIM), Memory Stick™, Memory Stick Duo card and microSD/TransFlash™ memory module standards. There are several USB flash drive products commercially available from SanDisk Corporation under its trademark “Cruzer®.” USB flash drives are typically larger and shaped differently than the memory cards described above. One type of SIM card contains a large amount of memory capacity, so that the SIM card may be used for mass data storage applications in addition to SIM functions. An example of such a memory card is a MegaSIM™ card from SanDisk.
A host system may be connected to two or more memory cards at the same time. However, where two or more memory cards are connected to a host, data may be stored in different memory cards, so keeping track of where particular data is stored can become a burden. Failure to keep track of the location of data may result in loss of data or failure of the host system.
In order to keep track of data in different memory cards, card identifiers may be assigned to individual cards. A card identifier may be assigned according to the type of memory card, so that for example, a MegaSIM card is assigned an identifier “M” while a Secure Digital card is assigned an “S” according to a predetermined mapping. Partitions within such cards may then be assigned volume identifiers. For example, volume identifiers may be assigned sequentially in each card. The combination of card identifier and volume identifier may then be used in a pathname when accessing data in a partition. Such a pathname clearly indicates the type of card being accessed, providing a convenient way to access different memory cards. Various method and system embodiments implement this approach examples of which are provided herein.
According to one embodiment, a method of generating identifiers for memory cards and for volumes within memory cards, when two or more memory cards are connected to a host, may comprise: maintaining a recorded relationship that maps memory card types to card identifiers, in a one-to-one mapping scheme; determining that a first memory card of a first type is connected to the host and in response assigning a first card identifier to the first memory card, the first card identifier assigned according to the recorded relationship; and determining that the first memory card contains at least a first partition and a second partition and in response assigning a first volume identifier to the first partition and assigning a second volume identifier to the second partition. Other method embodiments are possible and can be implemented as exemplified here.
In one instance, an application may refer to a file stored in the first partition using a pathname that includes the first drive identifier and the first volume identifier. Also, as implemented, the first partition may be a public partition that can be accessed without authentication, and the second partition may be a hidden partition that requires authentication for gaining access to data stored therein. Moreover, a recorded relationship may be maintained in a table that includes a unique identifier for each of a plurality of memory card types, including the first memory card type, a second memory card type, and additional memory card types. The first and second memory card types may each be any one of MegaSIM, Secure Digital, Trusted Flash or like card. Furthermore, a host may be connected to a wireless network and the first memory card may include Subscriber Identity Module information that identifies the host to the wireless network.
According to another embodiment, a host device with capacity for two or more memory cards may comprise: a first physical interface that connects the host device to a first memory card of a first type; a second physical interface that connects the host device to a second memory card of a second type; and a storage medium in the host device, the storage medium storing software that associates a first card identifier with the first memory card in response to a determination that the first memory card is of the first type and associates a second card identifier with the second memory card in response to a determination that the second memory card is of the second type. Different embodiments of a host device are possible and can be implemented as exemplified here.
In one instance, a host device may comprise additional software stored in the storage medium that associates a first partition of the first memory card with a first volume identifier and associates a second partition of the first memory card with a second volume identifier. A host device may comprise an application that accesses data in the first portion of the first memory card using the first card identifier and the first volume identifier in a pathname. A host device software may be generated using a software toolkit that specifies the first identifier for any card of the first type and specifies the second identifier for any card of the second type. The software toolkit may include routines that are incorporated in the software stored in a storage medium. As used with the method embodiments, the first and second memory card types may each be any one of MegaSIM, Secure Digital, Trusted Flash or like card. A first memory card, such as a SIM card, can be used by the host to connect to a wireless network.
According to yet another embodiment, a toolkit for developing software that manages a host interface to two or more memory cards may comprise: a data recording medium; a mapping recorded in the data recording medium, the mapping including a one-to-one relationship between types of memory card and card identifiers; and software program recorded in the data recording medium, the software program including a routine for mapping two or more memory cards to card identifiers according to the mapping recorded in the data recording medium.
With such a tool kit, mapping may be recorded as a table that includes identifiers for memory card types including the MegaSIM, Secure Digital, and Trusted Flash and any other like card. A routine is typically stored in a dynamic-linked library or statically-linked library that contains additional routines. Then, a toolkit may comprise additional routines for managing interactions between a host and two or more memory cards.
Where two or more memory cards are connected to a host, the host may store data in different memory cards, so some system must be used to distinguish between memory cards. For some applications it is critical that data be stored in a particular type of memory card (e.g. for security purposes). With memory cards that are removable and interchangeable, keeping track of data stored in different memory cards is not always straight-forward. Assigning identifiers allows cards, or partitions within cards, to be conveniently managed.
One possible scheme for assigning identifiers to memory cards, and to partitions within memory cards, assigns identifiers on a dynamic basis, so that the same card or partition may be assigned a different identifier depending on when it is connected to the host.
Memory card identifiers may be assigned in a predetermined manner based on the type of memory card. For example, a Trusted Flash card is assigned a particular identifier that is reserved exclusively for Trusted Flash cards, while a MegaSIM card is assigned a different identifier that is reserved exclusively for MegaSIM cards. Thus, rather than dynamically assigning identifiers to cards, identifiers are mapped to card types in a one-to-one mapping, and this mapping is used to assign the appropriate identifier to a particular memory card according to its card type.
In addition to identifying each card by a card identifier, a volume identifier may be assigned to each partition within a card. The same volume identifiers may be used in different cards, because the different card identifiers clearly identify each card and thus the combination of card identifier and volume identifier provides a unique identification of each partition, even if the same volume identifier is used in two or more cards.
In order to assign an identifier from a table such as table 481, an interface manager determines the type of memory card that is present. In some cases, this is determined by the physical interface to which it is connected. Certain memory card slots are exclusively used with one type of memory card, so that any card detected in such a memory card slot must be of the corresponding card type. However, some memory card slots may be used with more than one type of memory card. In this case, an interface manager may perform a detection routine to determine the type of card that is present. For example, the interface manager may interrogate the card to obtain identifying information, or may obtain the card type from another part of the host system that obtains this information from the memory card.
In one example, the first partition of a card is a public access partition, which an application can access without providing any authentication. The second partition is a secure partition, or hidden partition, which an application can only access after providing some authentication. In this way, secure content may be kept in the second partition and may only be accessed by users having permission. For example, music or other content that is subject to restricted use may be stored in the second partition.
In one example, a host is a mobile device such as a cell phone or Personal Digital Assistant (PDA) that is in communication with a wireless network. A SIM card (MegaSIM card or other type of SIM card) is connected to the host to identify the host to the network and allow the host to communicate over the network. Where a MegaSIM card is used, additional content may be stored in the MegaSIM card. If a regular SIM card (not a MegaSIM card) is used, then it may not have storage capacity for a large volume of content. In this case, such content may be stored within a memory card, such as an SD card, Trusted Flash card or in the host's internal memory. Additional network-specific content may be stored in the MegaSIM card or in the TrustedFlash card. For example Mobile Network Operators (MNOs) may provide content in such cards that is accessible to their customers. Another memory card, such as an SD card, may be connected to the host and may store content that is unrelated to the network to which the host is connected. For example, the second memory card may store a user's music files or other content. Such content is specific to the user, and may be accessed by other hosts when the card is moved, but is unrelated to the network. Using identifiers that are specific to the type of memory card, the division between network-specific storage and user-specific storage is clear. An OS, and applications can easily direct access to one or the other by using appropriate identifiers
An interface manager, such as those discussed above, may be implemented by software that is created using a Software Development Toolkit (SDK). For example, a memory card manufacturer may provide an SDK to assist host manufacturers in integrating memory cards into their devices. SDKs may include software routines and data that are incorporated into host software as part of the OS, within applications, or in software that is separate from the OS and applications. For example, software routines from the SDK may be incorporated into an interface manager, such as interface managers described above, thus facilitating the integration of different memory cards with a host.
Although the foregoing describes various aspects of these embodiments, it is understood that modifications thereto and other embodiments with similar or different aspects are possible. Accordingly, the claims should not be limited to the embodiments described herein.