A storage module can be embedded in a host device, such as a smart phone, by physically soldering the storage module onto a printed circuit board of the host device. Before the soldering occurs, the storage module is preloaded with data (e.g., an operating system, a GPS map, etc.), and the embedded MultiMediaCard (eMMC) 5.0 standard describes a process for preloading data into a storage module. According to the standard, a production station writes the value of 1 into a production-enablement register in the storage module to enable the preloading of data. When the preloading of data is completed, the production-enablement register is cleared. The standard specifies various ways in which the production-enablement register can be cleared. In one way, known as the “auto mode,” the host informs the storage module of the size of the preloaded data. The storage module can contain a counter to track how much data is received by the host, and when the counter reaches the expected size, firmware in the storage module knows that it has received all of the preloaded data and clears the production-enablement register.
Once the production-enablement register is cleared, it cannot be set to 1 again, meaning that data can only be preloaded into the storage module once. This can present a problem in certain situations. For example, if the production-enablement register is cleared before it has verified that the preloaded data was written correctly in the memory, the preloaded data cannot be re-written—even if an error is identified. As another example, a vendor may want to preload another image at a later time into the storage module. Again, this cannot be done after the production-enablement register has been cleared. In each of these situations, the storage module may need to be discarded.
Embodiments of the present invention are defined by the claims, and nothing in this section should be taken as a limitation on those claims.
By way of introduction, the below embodiments relate to a storage module and method for re-enabling preloading of data in the storage module. In one embodiment, a storage module is provided with a memory and a register. In response to receiving a register-setting command, the storage module sets a value in the register to enable preloading of data in the memory. The storage module then receives the data for storage in the memory. After the storage module has determined that all of the data has been received, the storage module changes the value in the register to disable further preloading of data. In response to receiving a register-resetting command, the storage module resets the value in the register to re-enable preloading of data even though the storage module already changed the value in the register to disable further preloading of data.
Other embodiments are possible, and each of the embodiments can be used alone or together in combination. Accordingly, various embodiments will now be described with reference to the attached drawings.
As mentioned above, in certain standards, such as the embedded MultiMediaCard (eMMC) 5.0 standard, preloaded data cannot be re-written into a storage module after a production-enablement register in the storage module has been cleared—even if there was a problem with the data or if the vendor wants to preload another image to the storage module. These embodiments provide a technique to re-enable preloading of data in the storage module. Before these embodiments are discussed, the following paragraphs provide a discussion of an exemplary storage module and host device that can be used with these embodiments. Of course, these are just examples, and other suitable types of storage modules and host devices can be used.
As illustrated in
As shown in
As shown in
In
The below embodiments discuss the storage module or host device being configured to perform certain functions. It should be understood that such configuring can be done by programming the controllers of the storage module and host device to perform these functions.
Returning to
The non-volatile memory 120 can also take any suitable form. For example, in one embodiment, the non-volatile memory 120 takes the form of a solid-state (e.g., flash) memory and can be one-time programmable, few-time programmable, or many-time programmable. The non-volatile memory 120 can also use single-level cells (SLC) or multi-level cell (MLC). The non-volatile memory 120 can take the form of NAND Flash memory or of other memory technologies, now known or later developed. The non-volatile memory 120 can be used to store user or other data.
Returning to the drawings,
If there is no preloading or if there is on-board preloading, the method jumps to the soldering stage 360. However, if there is preloading, then an optional pre-production act can take place (act 320). In this pre-production act, user partitions are established, and the host can test write and read data in the device. Before the preloading stage, all written data for testing purposes can be erased, to ensure the memory 120 is clean before preloading. After this optional pre-production phase, the data is preloaded into the memory 120 of the storage device. In one embodiment, the memory cells in the memory 120 can be used either as single-level cells (SLCs) storing one bit per cell or multi-level cells (MLCs) storing more than one bit per cell. Some of the MLC cells can temporarily be used as SLC cells to receive the pre-loaded data, as data stored in SLC cells are less susceptible to uncorrectable errors caused by the soldering process than are MLC cells. After the soldering phase (act 360), the preloaded data is move from the SLC cells to the MLC cells, and the SLC cells are re-provisioned to MLC cells to return the capacity of the memory 120 to its exported device capacity (act 370).
As discussed above, standards have been established that describe the process of preloading data into a storage module. For example, according to the embedded MultiMediaCard (eMMC) 5.0 standard, the production station needs to write the value of 1 into the production-enablement register 125 in the storage module 100 in order to have the storage module 100 enter the production mode and preload data. The eMMC 5.0 standard describes several production awareness flows, and one of these production awareness flows is known as the auto mode (act 350). The auto mode act 350 will be discussed with reference to
In the auto mode, the production station enables the preloading of data (act 400) and informs the storage module 100 of the size of preloaded data (act 405). The production station then sends a command to the storage module 100 to set a value in the production-enablement 125 (act 410) and begins to preload data in the storage module 100 (act 415). In the auto mode, the storage module's controller 110 contains a software counter to track how much data is received by the host. (The storage module 100 can commit the received data to memory 120 as it is being received or after all the data has been received.) When the counter reaches the expected size, the controller 110 knows that the storage module 100 has received all of the preloaded data that is it expecting and clears the production-enablement register 125. The storage module 100 can then go through a power cycle, as specified by the standard (act 420).
The eMMC 5.0 standard specifies that once the production-enablement register 125 is cleared, it cannot be set to 1 again. This means that once the storage module 100 detects that all the data has been received and clears the production-enablement register 125, data cannot be preloaded again in the memory 120. This can present a problem in certain situations. For example, a “read-back test after preloading” operation may determine that the preloaded data was not written correctly in the memory 120 (act 425). This can be due to an over-cycled production station, for example. As illustrated in act 430 in
To overcome this problem, the production station can send a command to the storage module 100 to cause the storage module to reset the value in the register 125 to re-enable preloading of data even though the storage module 100 already changed the value in the register 125 to disable further preloading of data. This command is referred to in
The command to reset the value in the register 125 can take any suitable form. Where the storage module 100 operates under a standard that specifies that the value in the register 125 can only be set once to enable preloading of data, the command can be a vendor-specific command to perform an operation not specified in the standard. For example, in the eMMC 5.0 standard, the “Restore to Production Default” command is implemented as a vendor-specific command (CMD62), which allows hosts to perform out-of-spec operations. These operations are typically password-protected and, therefore, require the production station/host to enter the correct password before executing the command. Preferably, the password is only known by the manufacturer to prevent the preloaded data from being changed in the field by an unauthorized entity. In operation, the production station/host enters the configuration mode by ending CMD 62 with the appropriate op-code and exits it the same way. In-between, the production station/host can issue CMD62 along with the op-codes of the desired operations, like partition resize, restore to default, etc. CMD62 with the op-code of RTD (restore to default) enables the production station/host to reset the storage module 100 to factory configuration. This typically involves clearing the RPMB key and counter, restoring the production awareness state, logically erasing all data, and resetting EXT_CSD/CSD/CID to factory defaults (e.g., deleting GPPs/EUDA partitions, clearing WP, etc.). Thus, CMD62 with the op-code of RTD for the production-enablement register 125 (Production Awareness State) logically erases all host data from the storage module 100 and enables the production station/host to reset the production-enablement register 125, which allows restarting the preloading of data again. Accordingly, if storage module 100 fails during Read-Back test after preloading, a vendor-specific command (e.g., a “Restore to Default” command) can be sent to the storage module 100 (from the same or different production station) to restore the ability of storage module 100 to preload data.
As noted above, the eMMC 5.0 standard describes other modes, in addition to the auto mode, to enabling preloading of data in the storage module 100. For example, in the “manual mode” (act 340 in
Other modes of operation that are not defined in the specification can also be used, such as the “implicit mode.” Like in the auto mode, the storage module 100 in the implicit mode automatically clears the production-enablement register after a certain amount of data has been received from the production station. However, unlike the auto mode, the threshold amount of data is not set by the production station but rather by the size allocated in the storage module 100 for the preloaded data. If the size of the preloaded data is less that the size allocated for the preloaded data the production-enablement register 125 is cleared by the production station, as in the manual mode with an additional vendor specific command. Accordingly, “implicit mode” may or may not encounter the problem discussed above.
It is intended that the foregoing detailed description be understood as an illustration of selected forms that the invention can take and not as a definition of the invention. It is only the following claims, including all equivalents, that are intended to define the scope of the claimed invention. Finally, it should be noted that any aspect of any of the preferred embodiments described herein can be used alone or in combination with one another.