Patent ID: 7962777

Claim:
A method of initiating a data storage system having a microprocessor, at least first and second copies of firmware code stored in different locations of a non-volatile memory therein, a read-only-memory (ROM) containing a microprocessor accessible boot code and a working memory for storing firmware code for execution by the processor, the method comprising: storing each of the first and second firmware copies as units of data that individually have an error-correction-code (ECC) calculated therefrom and stored in association therewith, executing the boot code to transfer a first copy of the firmware from the non-volatile memory to the working memory, identifying any bit errors in the transferred first copy of the firmware code, and therefore the data units in which they occur, if any of the identified bit errors are correctable with the ECC, correcting the correctable erroneous bits, if any of the identified bit errors are uncorrectable with the ECC, reading into the working memory a portion of the second copy of the fi code including the data unit containing the uncorrectable bits in place of the corresponding data unit of the first copy, and executing an error free copy of the firmware code from the working memory.