IP Library Granted Patent US 8,683,457
Granted Patent B1
US 8,683,457 · App. 13/163,337 · Granted Mar 25, 2014

Updating firmware of an electronic device by storing a version identifier in a separate header

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,683,457
App. No.
13/163,337
Granted
Mar 25, 2014
Kind
B1
Abstract

An electronic device is disclosed comprising a non-volatile memory storing a first version of a control program (CP), a first header comprising a first version identifier (VID) identifying the first version of the CP and a first VID check code generated in response to at least the first VID. The non-volatile memory further stores a second version of the CP, and a second header comprising a second VID identifying the second version of the CP and a second VID check code generated in response to at least the second VID. When the first and second VIDs are valid, the electronic device selects between the first version and the second version of the CP in response to the first and second VIDs, and executes the selected version of the CP.

Claims (54)

1. A method of operating an electronic device, the electronic device comprising a non-volatile memory comprising:

first and second distinct versions of a control program (CP);

a first header comprising a first version identifier (VID) identifying the first version of the CP and a first VID check code generated based at least in part on the first VID; and

a second header comprising a second VID identifying the second version of the CP and a second VID check code generated based at least in part on the second VID; and

the method comprising:

generating a first validation VID check code based at least in part on the first VID;

reading the first VID from the first header;

determining whether the first validation VID check code matches the first VID check code from the first header to verify the validity of the first VID;

generating a second validation VID check code based at least in part on the second VID;

reading the second VID from the second header;

determining whether the second validation VID check code matches the second VID check code from the second header to verify the validity of the second VID;

when the first and second VIDs are valid, selecting a version between the first version and the second version of the CP based at least in part on the first and second VIDs;

generating a validation CP check code based at least in part on the selected version of the CP;

when the validation CP check code matches the CP check code of the selected version of the CP, executing the selected version of the CP; and

erasing the non-selected version of the CP from the non-volatile memory and invalidating the header of the non-selected version.

2. The method as recited in claim 1 , wherein when the first VID is invalid, further comprising selecting the second version of the CP to execute.

3. The method as recited in claim 1 , further comprising:

receiving a third version of the CP;

storing the third version of the CP in the non-volatile memory; and

after storing the third version of the CP in the non-volatile memory, storing a third header in the non-volatile memory, wherein the third header comprises a third VID identifying the third version of the CP.

4. The method as recited in claim 3 , further comprising receiving the third VID.

5. The method as recited in claim 3 , further comprising generating the third VID.

6. The method as recited in claim 3 , wherein:

a third VID check code is included in the third header stored in the non-volatile memory; and

the third VID check code for verifying the third VID.

7. The method as recited in claim 6 , further comprising generating the third VID check code over at least the third VID.

8. An electronic device comprising:

control circuitry; and

a non-volatile memory comprising:

first and second distinct versions of a control program (CP) stored in the non-volatile memory by the control circuitry, each including a CP check code;

a first header stored in the non-volatile memory by the control circuitry and comprising a first version identifier (VID) identifying the first version of the CP and a first VID check code generated based at least in part on the first VID; and

a second header stored in the non-volatile memory by the control circuitry and comprising a second VID identifying the second version of the CP and a second VID check code generated based at least in part on the second VID;

wherein the control circuitry is operable to:

generate a first validation VID check code based at least in part on the first VID;

read the first VID from the first header;

determine whether the first validation VID check code matches the first VID check code from the first header to verify the validity of the first VID;

generate a second validation VID check code based at least in part on the second VID;

read the second VID from the second header;

determine whether the second validation VID check code matches the second VID check code from the second header to verify the validity of the second VID;

when the first and second VIDs are valid, select a version between the first version and the second version of the CP based at least in part on the first and second VIDs;

generate a validation CP check code based at least in part on the selected version of the CP;

when the validation CP check code matches the CP check code of the selected version of the CP, execute the selected version of the CP; and

erase the non-selected version of the CP from the non-volatile memory and invalidate the header of the non-selected version.

9. The electronic device as recited in claim 8 , wherein when the first VID is invalid, the control circuitry is operable to select the second version of the CP to execute.

10. The electronic device as recited in claim 8 , wherein the control circuitry is further operable to:

receive a third version of the CP;

store the third version of the CP in the non-volatile memory; and

after storing the third version of the CP in the non-volatile memory, store a third header in the non-volatile memory, wherein the third header comprises a third VID identifying the third version of the CP.

11. The electronic device as recited in claim 10 , wherein the control circuitry is further operable to receive the third VID.

12. The electronic device as recited in claim 10 , wherein the control circuitry is further operable to generate the third VID.

13. The electronic device as recited in claim 10 , wherein:

a third VID check code is included in the third header stored in the non-volatile memory; and

the third VID check code for verifying the third VID.

14. The electronic device as recited in claim 13 , wherein the control circuitry is further operable to generate the third VID check code over at least the third VID.

Assignments (6)
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2011
From: HUGHES, NATHAN J.; ALLISON, MICHAEL S.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026466/0110 →