Data storage device with multiple firmware slots
Multiple firmware slots in data storage devices address the limitations of single-slot systems by ensuring redundancy, enabling seamless firmware updates, and enhancing system reliability through backup and rollback features.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- QUALCOMM INC
- Filing Date
- 2024-11-14
- Publication Date
- 2026-05-21
AI Technical Summary
Existing data storage devices, such as Universal Flash Storage (UFS) devices, are limited to a single firmware slot, lacking redundancy, safety, ease of updates, testing, validation, and flexibility, which prevents them from benefiting from backup and flexibility in firmware versions for different use cases.
Implementing multiple firmware slots in data storage devices to store and maintain more than one firmware version, providing redundancy, enabling backup, testing, and validation of new firmware updates, and allowing flexibility for different use cases.
Enhances system reliability by ensuring device functionality during firmware updates, allowing seamless switching between firmware versions, and minimizing device disruption through rollback capabilities.
Smart Images

Figure CN2024131934_21052026_PF_FP_ABST
Abstract
Description
DATA STORAGE DEVICE WITH MULTIPLE FIRMWARE SLOTSTECHNICAL FIELD
[0001] The present disclosure relates generally to a data storage device and more particularly to a data storage device with multiple firmware slots.BACKGROUND
[0002] Data storage devices (DSDs) are utilized in a wide variety of devices in stationary and mobile computing environments. Examples of DSDs include solid state devices (SSDs) with non-volatile memories (NVMs) . SSDs can be included in desktop computers, portable notebook computers, tablets, portable hard disk drives, mobile devices, cellular phones, portable media players, wearable devices, etc. One example of SSDs is the Universal Flash Storage (UFS) device. A UFS device is commonly used as data storage in mobile devices (e.g., mobile phones, smartphones, smartwatches, tablets, vehicles, drones, portable computers, etc. ) because the UFS device can provide high performance and low power storage memory. Specifications for UFS and its associated UFS Host Controller Interface (UFSHCI) are included in the Joint Electron Device Engineering Council (JEDEC) standards. The UFS Host Controller is responsible for managing the interface between a host (or host software) and UFS device and the data transfer in between the host and the UFS device.SUMMARY
[0003] The following presents a summary of one or more implementations in order to provide a basic understanding of such implementations. This summary is not an extensive overview of all contemplated implementations and is intended to neither identify key or critical elements of all implementations nor delineate the scope of any or all implementations. Its sole purpose is to present some concepts of one or more implementations in a form as a prelude to the more detailed description that is presented later.
[0004] Aspects of the disclosure provides various systems, apparatuses, and techniques for managing firmware in data storage devices. An example of a data storage device is a Universal Flash Storage (UFS) device. A UFS device can have multiple firmware slots to store and maintain more than one firmware version. Multiple firmware slots can provide redundancy and backup in case of firmware update failure. Furthermore, multiple firmware slots enable testing and validation of a new firmware update before deleting the current firmware. In addition, multiple firmware slots provide the flexibility to provision different firmware versions for different use cases.
[0005] One aspect of the disclosure provides a data storage device that includes a non-volatile memory including a plurality of firmware slots and a controller connected to the non-volatile memory. The controller is configured to receive a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device. The controller is further configured to execute the operation using a first firmware slot among the plurality of firmware slots.
[0006] One aspect of the disclosure provides a method of using a data storage device. The method includes a process of receiving a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device including a plurality of firmware slots. The method further includes a process of executing the operation using a first firmware slot among the plurality of firmware slots.
[0007] One aspect of the disclosure provides a host device that includes one or more memories and one or more processors connected to the one or more memories. The one or more processors are configured to read a device descriptor from a data storage device, the device descriptor indicating that the data storage device includes a plurality of firmware slots. The one or more processors are further configured to send a command message to the data storage device, the command message indicating an operation among a plurality of operations pertaining to a firmware associated with a firmware slot of the plurality of firmware slots.BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 is a schematic block diagram illustrating an apparatus including a data storage device in accordance with some aspects of the disclosure.
[0009] FIG. 2 is a schematic diagram illustrating a Universal Flash Storage (UFS) device with multiple firmware slots in accordance with some aspects of the disclosure.
[0010] FIG. 3 is a diagram conceptually illustrating a control command for a UFS storage device with multiple firmware slots in accordance with some aspects of the disclosure.
[0011] FIG. 4 is a diagram illustrating exemplary data fields in the control command of FIG. 3 in accordance with some aspects of the disclosure.
[0012] FIG. 5 illustrates an exemplary message flow for performing a firmware update process between a UFS host and a UFS storage device in accordance with some aspects of the disclosure.
[0013] FIG. 6 is a diagram illustrating an exemplary firmware update process of a UFS storage device with multiple firmware slots in accordance with some aspects of the disclosure.
[0014] FIG. 7 is a flow chart illustrating a method of operating a UFS device with multiple firmware slots in accordance with some aspects of the disclosure.
[0015] FIG. 8 is a flow chart illustrating a method of reading a device descriptor of a UFS storage device with multiple firmware slots in accordance with some aspects of the disclosure.DETAILED DESCRIPTION
[0016] The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
[0017] Several aspects of the invention will now be presented with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various blocks, modules, components, circuits, steps, processes, algorithms, etc. (collectively referred to as “elements” ) . These elements may be implemented using electronic hardware, computer software, firmware, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
[0018] A data storage system is widely used in various devices such as smartphones, tablets, digital cameras, and automotive systems, etc. An exemplary data storage system is the Universal Flash Storage (UFS) that can provide significant performance improvements over older storage standards. A UFS can provide only one firmware slot, which means the device can only maintain a single firmware version at a time. This limitation prevents the system from benefiting from redundancy, safety, ease of updates, testing, validation, and flexibility. Using multiple firmware slots can store a backup in case of firmware issues, enable updates without interrupting the device, and allow testing of new firmware versions while keeping a stable version available. Multiple firmware slots also provide flexibility for switching between firmware versions optimized for different purposes, such as performance or power efficiency.
[0019] Aspects of the disclosure provide various techniques for managing firmware in data storage devices. An example of a data storage device is a Universal Flash Storage (UFS) device. In some aspects, a data storage device can have multiple firmware slots, and the data storage device can store and maintain more than one firmware version in the device. Multiple firmware slots can provide redundancy and backup in case of firmware update failure. Furthermore, multiple firmware slots enable testing and validation of a new firmware update before deleting the current firmware. In addition, multiple firmware slots provide the flexibility to provision different firmware versions for different use cases.
[0020] FIG. 1 is a diagram depicting an apparatus including a data storage apparatus 100 in accordance with some aspects of the disclosure. In this example, the apparatus 100 can be a computer system or a part thereof. The apparatus 100 includes one or more processors (e.g., one exemplary processor 102 shown in FIG. 1) that can be configured to perform various functions of the apparatus, including, for example, functions typically performed by portable devices such as mobile devices, tablets, portable computers, wearable devices (e.g., earbuds, headphones, etc. ) , smartwatches, and other such devices. These functions can include wireless communications with other devices (e.g., smartphones, computers, etc. ) and application specific functions. The apparatus 100 can include a data storage system for storing various data at the apparatus. In one aspect, the data storage system can be a UFS system that includes a storage host (e.g., UFS host 104) and one or more storage devices (e.g., one exemplary UFS device 106 shown in FIG. 1) . In some examples, the UFS host 104 can be included in or implemented by the processor 102 (e.g., a CPU) .
[0021] The processor 102 can perform various functions (e.g., using software / application 108) and can communicate with the storage host (e.g., UFS host 104) using a storage driver (e.g., UFS driver 110) . Using the UFS driver 110, the processor 102 can communicate, control, and exchange data with the UFS host 104, for example, via a UFS host controller 112) that provides a host controller interface (e.g., UFS host controller interface (UFSHCI) ) to the processor 102. For example, the UFS host controller 112 (e.g., the UFSHCI) can provide a set of registers that can be accessed by the processor 102 using the UFS driver 110. The UFS host controller 112 is responsible for managing the interface and data transfer between host software (e.g., application 108) and the storage device (e.g., UFS device 106) . This can include interface management, power management, and control functions. In some aspects, the UFS host controller 112 can include a UFS Transport Protocol (UTP) layer that provides services to the higher layer (e.g., application layer of the UFS driver 110) and exchanges UFS Protocol Information Units (UPIUs) with the UTP layer on the UFS device. For example, upon receiving a request from an application (host software) , the UTP can generate a UPIU for that request and transport the generated UPIU to the peer UTP on the UFS device. The UTP layer further provides three service access points, including a UFS device manager service access point (UDM_SAP) to perform device level management, such as descriptor access, a UTP command service access point (UTP_CMD_SAP) to transport commands, and a UTP task management service access point (UTP_TM_SAP) to transmit task-management functions, such as abort task functions.
[0022] The storage host (e.g., UFS host 104) and storage device (e.g., UFS device 106) are connected through a storage interface (e.g., UFS interface 114) . For example, each of the UFS host 104 and UFS device 106 has a UFS interconnect interface 116 that transfers data and control signals between the UFS host and UFS device. The UFS interconnect interface 116 includes a UFS interconnect layer (UIC) that handles connections between the UFS host and the UFS device. The UIC can include, for example, a Mobile Industry Processor Interface Alliance layer configured in accordance with the Unified Protocol (UniPro) high-speed interface protocol standard and MIPI Alliance M- layer configured in accordance with the M-PHY physical layer protocol standard. The UTP layer of the UFS host controller 112 can encapsulate requests from the application layer (e.g., the application 108) into the appropriate frame structure (e.g., UPIU messages) for the UIC.
[0023] The UFS driver 110 can use a combination of registers and transfer request descriptors in system memory 111 (e.g., one or more memories (e.g., random access memory) ) to communicate with host controller hardware. In some examples, the UFS device 106 can be a memory card, an embedded bootable mass storage device, an input-output (IO) device, etc. In some aspects, the UFS device 106 includes a data storage 118 that can include a non-volatile memory (NVM) for storing data. In one example, the NVM may be NAND Flash memory or the like. However, the UFS device 106 is not limited to using only NAND Flash and can use other types of NVM.
[0024] In some aspects, some or all of the functions described herein can be performed by the apparatus 100 using the processor 102, UFS host 104, and / or UFS storage device 106. In some examples, the processor 102, UFS host 104, and UFS storage device 106 may each include a microprocessor, a microcontroller, an embedded controller, a logic circuit, software, firmware, ASIC, or any kind of processing device, for performing one or more of the functions described herein as being performed by the apparatus 100.
[0025] FIG. 2 is a diagram illustrating a UFS storage device 200 with multiple firmware slots according to some aspects of the disclosure. In one example, the UFS storage device 200 can be the UFS storage device 106 or any suitable data storage device (e.g., non-volatile memory device) . The UFS storage device 200 can include a UFS storage controller 202, a buffer 203, and multiple firmware slots 204_1 to 204_n (e.g., slot 0, slot 1, …slot N) . The UFS storage controller 202 manages the internal operations of the UFS storage device 200, for example, reading and writing data to a data storage (e.g., storage 118 of FIG. 1) and handling tasks such as wear leveling, garbage collection, and firmware management. Further, the UFS storage controller 202 can manage protocol-level communication with a UFS host controller (e.g., UFS host controller 112 of FIG. 1) , such as processing the commands sent by the UFS host controller and returning data or status information. In some aspects, each firmware slot can be a logical region within the device’s non-volatile memory 206 (e.g., data storage 118 of FIG. 1) . In some aspects, the UFS host controller can manage this logical partition or slots, and store one or more firmware versions in the slots. In one example, different versions of firmware can be stored in the slots. In some examples, different versions of firmware can be stored in different slots, respectively.
[0026] FIG. 3 is a diagram conceptually illustrating a control command 300 for a UFS storage device with multiple firmware slots according to some aspects of the disclosure. In some aspects, a UFS host controller (e.g., UFS host controller 112 of FIG. 1) can use the control command 300 to send commands and firmware update to a UFS storage device (e.g., UFS storage device 200 of FIG. 2) with multiple firmware slots (e.g., slots 204_1, 204_2, …204_n of FIG. 2) . The control command can indicate various actions related to firmware updates and the firmware slot for storing the firmware image in one of the firmware slots. In one example, the control command 300 can be a UFS write buffer command or the like.
[0027] The control command 300 can have various fields including, for example, an operation code field 302, a mode field 304, and a control field 306, among others. In other examples, the control command 300 can have additional or different fields, for example, buffer ID, buffer offset, parameter list length, etc. The operation code field 302 can specify the operation to be performed by the UFS storage device. For example, the opcode for a write buffer command in UFS is typically 0x3B. The mode field 034 contains certain command descriptors that determines how the device interprets the control command, and can specify the conditions for executing the control command. For example, the mode field can indicate that the command is used for normal operations or firmware updates. For firmware updates, the mode field can be set to a specific value that indicates download mode. This mode prepares the device to receive and write new firmware data to the device. The buffer ID field can specify a buffer (e.g., buffer 203) of the UFS storage device to which data will be stored at least temporarily. The buffer offset field can specify the location to which the data is written within the buffer.
[0028] The control field 306 can indicate the action / operation and the firmware slot for performing various firmware related functions at the UFS storage device with multiple firmware slots as described above in FIG. 2. In some aspects, the control field 306 includes a slot number field 308 and a control type field 310. In one example, the control type field 310 can indicate various firmware related functions as shown in Table 1 of FIG. 4. The slot number field 308 can indicate the firmware slot for performing the action specified in the control type field 310. In one example, the slot number field 308 can indicate the firmware slots as shown in Table 2 of FIG. 4. For example, Table 2 contains slots numbers in hex numbers 0h, 1h, 2h, and 3h. When slot number is 0h, the device can use slot 0 for receiving and activating firmware or only activating firmware according to the control type field 310. Similarly, when slot number is 1h, 2h, or 3h, the device can use slot 1, 2, or 3 for receiving and activating firmware or only activating firmware according to the control type field 310. In some aspects, the Table 2 can provide reserve values for slot numbers for potential future use or changes. In some aspects, the UFS host controller (e.g., UFS host controller 112 of FIG. 2) can send a firmware image in multiple chunks using multiple commands when the firmware image cannot be carried in one command. The UFS storage controller (e.g., UFS storage controller 202 of FIG. 2 ) can combine the received multiple chunks, verify the firmware image, and store the firmware image to the designated firmware slot. The UFS storage controller can store the firmware image or portions thereof in a buffer (e.g., buffer 203 of FIG. 2) temporarily before storing the firmware in the firmware slot.
[0029] In one example, control type 00h causes the UFS storage device to receive a new firmware image from the UFS host, In one example, control type 01h causes the UFS storage device to receive and store a new firmware image to a firmware slot designated by the slot number field and then activate the new firmware immediately. If the UFS storage device can successively activate the new firmware, the UFS storage device can remove the older firmware. In one example, control type 02h causes the UFS storage device to activate a firmware image already stored in a firmware slot designed by the slot number field. In this case, the UFS storage device does not need to receive the firmware.
[0030] FIG. 5 illustrates an exemplary message flow 500 for performing a firmware update process between a host device 502 and a UFS storage device 504 according to some aspects of the disclosure. In some aspects, the host device 502 can be the UFS host 104 of FIG. 1, and the UFS storage device 504 can be the UFS storage device 106 of FIG. 1 or the UFS storage device 200 of FIG. 2.
[0031] Referring to FIG. 5, the host device 502 can send a write buffer command 506 to the UFS storage device 504. For example, the write buffer command can be the control command 300 of FIG. 3 or a UFS write buffer command (e.g., a UFS Protocol Information Unit) . The value of the mode field of the write buffer command may be set to a specific value as described above in FIG. 3, to indicate that this write buffer command is used for firmware update. The write buffer command can designate a firmware slot for storing the firmware if it is successfully received. For example, the write buffer command can indicate the firmware slot in a slot number field (e.g., slot number 308 of FIG. 3) .
[0032] In response to the write buffer command, the UFS storage device 504 may send a ready to transfer command 508 to the host device 502. In one example, the ready to transfer command 508 can be a UFS Protocol Information Unit (UPIU) . Then the host device 502 can send the firmware data 510 (e.g., firmware image) to the UFS storage device 504 that can store the firmware data at a buffer. For example, the firmware data can be carried in one or more UPIUs (e.g., DATA OUT UPIU) . After successfully receiving the firmware data, UFS storage device 504 can send a Response 512 (e.g., Response UPIU) to the host device 502. In some cases, the host device 502 and the UFS storage device 504 can repeat the process of sending multiple UPIUs when the size of the firmware data is larger than that a single UPIU can carry.
[0033] FIG. 6 is a diagram illustrating a firmware update process 600 of a UFS storage device with multiple firmware slots according to some aspects of the disclosure. For example, the UFS storage device may be the UFS storage device 200 of FIG. 2. The firmware update process involves updating the firmware / software that controls the operations of the UFS storage device. The process is crucial for ensuring the device functions properly, improving performance, fixing bugs, and adding new features.
[0034] At 602, a UFS host controller (e.g., UFS host controller 112 of FIG. 1) can initiate a firmware update by sending a new firmware image to the UFS storage device. The UFS host controller can send the firmware image to the UFS storage controller such that the UFS storage controller can start the firmware update process. For example, the UFS host controller can send the firmware image to the UFS storage controller via a UFS interface (e.g., UFS interconnect 116 of FIG. 1) using the method described above in relation to FIG. 5.
[0035] In some aspects, at 603, the UFS host controller can check the device descriptor of the UFS storage device to obtain information about the firmware slots of the UFS storage device. For example, the device descriptor can have a first bit field that indicates the maximum number of firmware slots available (e.g., 2 to 16 firmware slots) . The device descriptor can have a second bit field that indicates the current active firmware slot in use by the UFS storage device. The device descriptor can have a third bit field that indicates the previous active firmware slot used by the UFS storage device. The previous active firmware slot can facilitate a firmware rollback (switching back) operation when the current firmware has any issues or errors.
[0036] At 604, the UFS storage device can store the firmware image in a memory buffer. For example, the UFS storage device’s controller can temporarily store the new firmware image at a buffer (e.g., buffer 203 of FIG. 2) while receiving the firmware. The buffer enables the UFS storage device to ensure that the firmware image is fully received and verified before storing the firmware image in a designated firmware slot (e.g., one of firmware slots 204_1 to 204_n) .
[0037] At 606, after the firmware image is completely received and stored in the memory buffer, the UFS storage device can verify the integrity of the firmware image. For example, the UFS storage device’s controller can check the checksum of the firmware or other suitable methods (e.g., cryptographic methods) to ensure that the firmware image is not corrupted during transmission. If the verification fails, the UFS storage device can abort the update and notify the storage host controller. The UFS storage device can store different versions of firmware in different firmware slots. Using multiple firmware slots enable the UFS storage device to use different features by switching between different versions of firmware.
[0038] At 608, after the firmware image is verified, the UFS storage device can store the firmware image in a designated firmware slot among multiple firmware slots (e.g., one of firmware slots 204_1 to 204_n of FIG. 2) . In some cases, the UFS storage device can apply the new firmware image to replace the current active version according to the action indicated in the control field 306 as described above in Table 1 and Table 2. In some aspects, firmware update can occur during a system reboot or when the UFS storage device is in a low-power state, to minimize disruption. After the UFS storage device is rebooted or reset, the new firmware becomes active. In some aspects, the UFS storage device’s controller can check that the update was successfully applied and performs various testing. In some aspects, if the new firmware causes problems or is corrupted, the multiple firmware slots enable the UFS storage device to perform a rollback process in which the UFS storage device can revert or switch back to a previously used version of the firmware stored in another firmware slot. This feature helps to prevent device failure if the new firmware is incompatible or corrupt. Once the new firmware is successfully applied and verified, the update process is complete.
[0039] FIG. 7 is a flow chart illustrating a method 700 of controlling a UFS storage device with multiple firmware slots according to some aspects of the present disclosure. For example, the UFS storage device can be any of the data storage device as described above in relation to FIGs. 1, 2, and 5. In one example, the UFS storage device can be a UFS device equipped with multiple firmware slots. In some aspects, the method 700 can be performed at the apparatus 100 of FIG. 1 or any processing devices (e.g., a system on a chip (SoC) device) with a UFS storage device.
[0040] At 702, a UFS storage device can receive a first command message from a UFS host, and the first command message indicates an operation pertaining to a first firmware of the UFS storage device. The UFS storage device can include a non-volatile memory including a plurality of firmware slots. For example, the UFS storage controller 202 and / or buffer 203 of FIG. 2 can provide a means to receive the first command message. In one example, the first command message can be the control command 300 of FIG. 3. In one example, the first command message can be a UFS write buffer command.
[0041] In some aspects, the operation can be receiving the first firmware, receiving and activating the first firmware, or activating the first firmware stored at a first firmware slot among the plurality of firmware slots of the UFS storage device. The operation can involve replacing the current active firmware with another firmware stored at a different firmware slot of the UFS storage device. This method enables the UFS storage device to switch firmware, for example, when the current firmware experience any issues or to change (enable and / or disable) certain functions of the device.
[0042] At 704, the UFS storage device can parse at least one bit field of the first command message to identify a first firmware slot among the plurality of firmware slots. For example, the first command message can have a control field similar to the control field 306 of a control command 300 shown in FIG. 3. In one example, the UFS storage controller 202 of FIG. 2 can provide a means to parse the first command message. The device can determine a value stored in one or more bit fields of the first command message. For example, the bit field can indicate the control type and firmware slot numbers (e.g., Tables 1 and 2 of FIG. 4) used for performing the control type.
[0043] At 706, the UFS storage device can execute the operation using the first firmware slot. In one example, the UFS storage device can receive and store a new firmware without activating the new firmware. In one example, the UFS storage device can receive and store a new firmware in a firmware slot indicated by the command message, and then activate the new firmware immediately. If the new firmware is activated successively, the device can remove the old firmware from the firmware slot. In one example, the UFS storage device can activate a firmware (no download or receiving needed) already stored in a firmware slot that is indicated by the first command message.
[0044] In some aspects, the above described process 700 enables the UFS storage device to revert back to a previous stable version of the firmware in case the current activated firmware fails or causes issues. The new active firmware and the previously active version are stored in different firmware slots. Therefore, when the new firmware fails or results in malfunction, the UFS storage device can use above described process of FIG. 7 to switch back (rollback) the firmware to the previously saved version, ensuring the device continues to function properly. This rollback feature enhances system reliability.
[0045] FIG. 8 is a flow chart illustrating a method 800 of reading a device descriptor of a UFS storage device with multiple firmware slots according to some aspects of the present disclosure. For example, the UFS storage device can be any of the UFS storage device as described above in relation to FIGs. 1, 2, and 5. A UFS host device (e.g., UFS host 104 of FIG. 1) can use the method to perform firmware update with the UFS storage device. In one example, the UFS storage device can be a UFS storage equipped with multiple firmware slots. In some aspects, the method 800 can be performed at the apparatus 100 of FIG. 1 or any processing devices (e.g., a system on a chip (SoC) device) with a UFS storage device.
[0046] At 802, the UFS host can read a device descriptor from a UFS storage. The device descriptor can indicate that the UFS storage including a plurality of firmware slots. For example, the storage host (e.g., a UFS host 104 of FIG. 1) can check the device descriptor of the UFS storage using a READ DESCRIPTOR command. This command enables the UFS host to request specific descriptors from the UFS storage, including the device descriptor, which contains information such as the manufacturer ID, product ID, device class, and other supported features. In one example, the device descriptor can indicate the quantity of firmware slots available at the UFS storage. In one example, the UFS host 104 of FIG. 1 can provide the means to read the device descriptor from the UFS storage.
[0047] At 804, the UFS host can send a command message to the UFS storage. The command message can indicate an operation among a plurality of operations pertaining to a firmware of the UFS storage. In one example, the operation can be receiving a new firmware to the UFS storage, In another example, the operation can be receiving and activating a new firmware. In another example, the operation can be activating a firmware stored at a firmware slot among the plurality of firmware slots of the UFS storage. In some aspects, the UFS host 104 of FIG. 1 can provide a means to send the command message to the UFS storage.
[0048] In some aspects, the device descriptor can include a first field indicating a quantity of firmware slots available at the UFS storage, a second field indicating a currently active firmware slot, and a third field indicating a previously active firmware slot.
[0049] In some aspects, the command message can include a first bit field, a first value of the first bit field indicating the first firmware slot among the plurality of firmware slots; and a second bit field, a second value of the second bit field indicating the operation to be executed using the first firmware slot indicated by the first value.
[0050] In some aspects, the plurality of operations can include: a first operation for receiving the firmware; a second operation for receiving and activating the firmware; and a third operation for activating the firmware stored at a first firmware slot among the plurality of firmware slots of the UFS storage device.
[0051] Some implementation examples are described in the following numbered clauses:
[0052] Clause 1: a data storage device comprising: a non-volatile memory comprising a plurality of firmware slots; and a controller connected to the non-volatile memory, wherein the controller is configured to: receive a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device; and execute the operation using a first firmware slot among the plurality of firmware slots.
[0053] Clause 2: The data storage device of clause 1, wherein the controller is further configured to parse at least one bit field of the first command message to identify the first firmware slot associated with the first firmware, and wherein the operation comprises: receiving the first firmware; receiving and activating the first firmware; or activating the first firmware stored at the first firmware slot among the plurality of firmware slots of the data storage device.
[0054] Clause 3: The data storage device of clause 1 or 2, wherein the controller is further configured to: determine a first value of a first bit field of the first command message, the first value indicating the first firmware slot among the plurality of firmware slots.
[0055] Clause 4: The data storage device of clause 3, wherein the controller is further configured to: determine a second value of a second bit field of the first command message, the second value indicating the operation to be executed using the first firmware slot indicated by the first value.
[0056] Clause 5: The data storage device of claim 3, wherein the controller is further configured to: receive a second command message from the host device, the second command message indicating a second firmware slot among the plurality of firmware slots; and activate a second firmware stored at the second firmware slot to replace to the first firmware.
[0057] Clause 6: The data storage device of clause 5, wherein the controller is further configured to: store the second firmware to the second firmware slot; verify the second firmware; and activate the verified second firmware to replace the first firmware.
[0058] Clause 7: The data storage device of clause 1 or 2, wherein the controller is further configured to: send a device descriptor to a host device, the device descriptor comprising: a first field indicating a quantity of firmware slots available at the data storage device; a second field indicating a currently active firmware slot of the plurality of firmware slots; and a third field indicating a previously active firmware slot of the plurality of firmware slots.
[0059] Clause 8: The data storage device of clause 7, wherein the controller is further configured to: switch back to a second firmware stored at the previously active firmware slot, in response to detecting a failure or incompatibility in the first firmware.
[0060] Clause 9: A method of using a data storage device comprising: receiving a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device comprising a plurality of firmware slots; and executing the operation using a first firmware slot among the plurality of firmware slots.
[0061] Clause 10: The method of clause 9, further comprising parsing at least one bit field of the first command message to identify the first firmware slot associated with the first firmware, wherein the operation comprises: receiving the first firmware; receiving and activating the first firmware; or activating the first firmware stored at a first firmware slot among the plurality of firmware slots of the data storage device.
[0062] Clause 11: The method of clause 9, wherein the parsing the at least one bit field comprises: determining a first value of a first bit field of the first command message, the first value indicating the first firmware slot among the plurality of firmware slots.
[0063] Clause 12: The method of clause 10 or 11, wherein the parsing the at least one bit field comprises: determining a second value of a second bit field of the first command message, the second value indicating the operation to be executed using the first firmware slot indicated by the first value.
[0064] Clause 13: The method of clause 11, further comprising: receiving a second command message from the host device, the second command message indicating a second firmware slot among the plurality of firmware slots; and activating a second firmware stored at the second firmware slot to replace to the first firmware.
[0065] Clause 14: The method of clause 13, further comprising: storing the second firmware to the second firmware slot; verifying the second firmware; and activating the verified second firmware to replace the first firmware.
[0066] Clause 15: The method of clause 9 or 10, further comprising: sending a device descriptor to a host device, the device descriptor comprising: a first field indicating a quantity of firmware slots available at the data storage device; a second field indicating a currently active firmware slot; and a third field indicating a previously active firmware slot.
[0067] Clause 16: The method of clause 9 or 10, further comprising: switching back to a second firmware stored at a second firmware slot among the plurality of firmware slots, in response to detecting a failure or incompatibility in the first firmware.
[0068] Clause 17: A host device comprising: one or more memories; and one or more processors connected to the one or more memories, wherein the one or more processors are configured to: read a device descriptor from a data storage device, the device descriptor indicating that the data storage device comprises a plurality of firmware slots; and send a command message to the data storage device, the command message indicating an operation among a plurality of operations pertaining to a firmware associated with a firmware slot of the plurality of firmware slots.
[0069] Clause 18: The host device of clause 17, wherein the device descriptor comprises: a first field indicating a quantity of firmware slots available at the data storage device; a second field indicating a currently active firmware slot; and a third field indicating a previously active firmware slot.
[0070] Clause 19: The host device of clause 18, wherein the command message comprises: a first bit field, a first value of the first bit field indicating a firmware slot among the plurality of firmware slots; and a second bit field, a second value of the second bit field indicating the operation to be executed using the firmware slot indicated by the first value.
[0071] Clause 20: The host device of clause 17, 18, or 19, wherein the plurality of operations comprise at least one of: a first operation for receiving the firmware; a second operation for receiving and activating the firmware; or a third operation for activating the firmware stored at a first firmware slot among the plurality of firmware slots of the data storage device.
[0072] It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Further, some steps may be combined or omitted. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
[0073] The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” Unless specifically stated otherwise, the term “some” refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for. ”
[0074] It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Further, some steps may be combined or omitted. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
Claims
1.A data storage device comprising:a non-volatile memory comprising a plurality of firmware slots; anda controller connected to the non-volatile memory, wherein the controller is configured to:receive a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device; andexecute the operation using a first firmware slot among the plurality of firmware slots.2.The data storage device of claim 1, wherein the controller is further configured to parse at least one bit field of the first command message to identify the first firmware slot associated with the first firmware,wherein the operation comprises:receiving the first firmware;receiving and activating the first firmware; oractivating the first firmware stored at the first firmware slot among the plurality of firmware slots of the data storage device.3.The data storage device of claim 1, wherein the controller is further configured to:determine a first value of a first bit field of the first command message, the first value indicating the first firmware slot among the plurality of firmware slots.4.The data storage device of claim 3, wherein the controller is further configured to:determine a second value of a second bit field of the first command message, the second value indicating the operation to be executed using the first firmware slot indicated by the first value.5.The data storage device of claim 3, wherein the controller is further configured to:receive a second command message from the host device, the second command message indicating a second firmware slot among the plurality of firmware slots; andactivate a second firmware stored at the second firmware slot to replace to the first firmware.6.The data storage device of claim 5, wherein the controller is further configured to:store the second firmware to the second firmware slot;verify the second firmware; andactivate the verified second firmware to replace the first firmware.7.The data storage device of claim 1, wherein the controller is further configured to:send a device descriptor to a host device, the device descriptor comprising:a first field indicating a quantity of firmware slots available at the data storage device;a second field indicating a currently active firmware slot of the plurality of firmware slots; anda third field indicating a previously active firmware slot of the plurality of firmware slots.8.The data storage device of claim 7, wherein the controller is further configured to:switch back to a second firmware stored at the previously active firmware slot, in response to detecting a failure or incompatibility in the first firmware.9.A method of using a data storage device comprising:receiving a first command message from a host device, the first command message indicating an operation pertaining to a first firmware of the data storage device comprising a plurality of firmware slots; andexecuting the operation using a first firmware slot among the plurality of firmware slots.10.The method of claim 9, further comprising parsing at least one bit field of the first command message to identify the first firmware slot associated with the first firmware,wherein the operation comprises:receiving the first firmware;receiving and activating the first firmware; oractivating the first firmware stored at a first firmware slot among the plurality of firmware slots of the data storage device.11.The method of claim 10, wherein the parsing the at least one bit field comprises:determining a first value of a first bit field of the first command message, the first value indicating the first firmware slot among the plurality of firmware slots.12.The method of claim 11, wherein the parsing the at least one bit field comprises:determining a second value of a second bit field of the first command message, the second value indicating the operation to be executed using the first firmware slot indicated by the first value.13.The method of claim 11, further comprising:receiving a second command message from the host device, the second command message indicating a second firmware slot among the plurality of firmware slots; andactivating a second firmware stored at the second firmware slot to replace to the first firmware.14.The method of claim 13, further comprising:storing the second firmware to the second firmware slot;verifying the second firmware; andactivating the verified second firmware to replace the first firmware.15.The method of claim 9, further comprising:sending a device descriptor to a host device, the device descriptor comprising:a first field indicating a quantity of firmware slots available at the data storage device;a second field indicating a currently active firmware slot; anda third field indicating a previously active firmware slot.16.The method of claim 9, further comprising:switching back to a second firmware stored at a second firmware slot among the plurality of firmware slots, in response to detecting a failure or incompatibility in the first firmware.17.A host device comprising:one or more memories; andone or more processors connected to the one or more memories, wherein the one or more processors are configured to:read a device descriptor from a data storage device, the device descriptor indicating that the data storage device comprises a plurality of firmware slots; andsend a command message to the data storage device, the command message indicating an operation among a plurality of operations pertaining to a firmware associated with a firmware slot of the plurality of firmware slots.18.The host device of claim 17, wherein the device descriptor comprises:a first field indicating a quantity of firmware slots available at the data storage device;a second field indicating a currently active firmware slot; anda third field indicating a previously active firmware slot.19.The host device of claim 18, wherein the command message comprises:a first bit field, a first value of the first bit field indicating a firmware slot among the plurality of firmware slots; anda second bit field, a second value of the second bit field indicating the operation to be executed using the firmware slot indicated by the first value.20.The host device of claim 17, wherein the plurality of operations comprise at least one of:a first operation for receiving the firmware;a second operation for receiving and activating the firmware; ora third operation for activating the firmware stored at a first firmware slot among the plurality of firmware slots of the data storage device.