Patent ID: 7281150

Claim:
A data storage system, comprising: power circuitry configured to provide power signals; storage processing circuitry configured to perform data storage operations; and a packaged microcontroller coupled to the power circuitry and the storage processing circuitry, the packaged microcontroller having a set of input lines, a set of output lines, and control circuitry coupled to the set of input lines and the set of output lines, the control circuitry being configured to: receive, on the set of input lines, a first set of power signals which is provided by the power circuitry to the storage processing circuitry, wait a predetermined time period in response to receipt of the first set of power signals on the set of input lines, and output, through the set of output lines, a set of enable signals to the power circuitry after waiting the predetermined time period, the set of enable signals directing the power circuitry to provide a second set of power signals to the storage processing circuitry; wherein the packaged microcontroller further includes: a set of built-in analog-to-digital converters coupled to the set of input lines and to the control circuitry, the control circuitry being configured to compare a set of binary values from the set of built-in analog-to-digital converters to a set of pre-determined thresholds to determine when all of the power signals within the set of power signals have reached levels that prevents damage to the storage processing circuitry when the second set of power signals is provided to the storage processing circuitry; memory which stores pre-loaded code having a version identifier, the control circuitry being configured to: compare the version identifier of the pre-loaded code with a version identifier of available new code, and replace the pre-loaded code stored in the memory with the available new code when the version identifier of the available new code indicates that the available new code is newer than the pre-loaded code, and maintain the pre-loaded code within the memory when the version identifier of the available new code indicates that the available new code is not newer than the pre-loaded code.