IP Library Granted Patent US 9,971,659
Granted Patent B1
US 9,971,659 · App. 14/748,616 · Granted May 15, 2018

Memory programming providing corruption protection

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 9,971,659
App. No.
14/748,616
Granted
May 15, 2018
Kind
B1
Abstract

Systems and methods are disclosed for programming non-volatile storage. Methods involve identifying boot loader code stored in a first partition of a non-volatile storage, the boot loader code being marked as active, executing the boot loader code using one or more processors of the computing system, loading a firmware image to a second partition of the non-volatile storage, the second partition being separate from the first partition, and marking the firmware image as active. Methods further involve detecting a power loss event and, following a power cycle, determining that the firmware image is stored in the second partition and has been marked as active, and, in response to said determination, making a copy of the firmware image and storing the copy in the first partition.

Claims (45)

1. A method of programming firmware in a computing system, the method comprising:

loading boot loader code to a first partition of a non-volatile storage, the boot loader code comprising instructions for loading a firmware image that is separate from the boot loader code to the non-volatile storage;

marking the boot loader code as active;

in response to a system start-up, executing the boot loader code using one or more processors of the computing system; and

as directed by the boot loader code:

loading the firmware image from a location separate from the non-volatile storage to a second partition of the non-volatile storage, the second partition being separate from the first partition;

marking the firmware image as active;

following a power cycle, determining that the firmware image is stored in the second partition and has been marked as active; and

in response to said determination, making a copy of the firmware image and storing the copy of the firmware image in the first partition, thereby overwriting the boot loader code in the first partition with the copy of the firmware image;

wherein the method is performed at least in part by the one or more processors of the computing system.

2. The method of claim 1 , further comprising:

following a separate power cycle, determining that an active copy of the firmware image is not stored in the non-volatile storage; and

in response to said determination that an active copy of the firmware image is not stored in the non-volatile storage, executing the boot loader code from the first partition.

3. The method of claim 1 , wherein the non-volatile storage and the one or more processors are components of a data storage drive.

4. The method of claim 1 , wherein the non-volatile storage is a flash memory communicatively coupled to an interface bridge module of the computing system.

5. The method of claim 4 , wherein said loading the firmware image to the second partition is performed at least in part using a host interface communicatively coupled to the interface bridge module.

6. The method of claim 1 , wherein said marking the firmware image as active comprises setting metadata associated with the firmware image to a first value.

7. The method of claim 1 , further comprising:

making an additional copy of the firmware image; and

storing the additional copy in the non-volatile storage.

8. The method of claim 1 , wherein:

the firmware image is loaded from a second non-volatile storage of a data storage drive; and

the non-volatile storage is a component of the data storage drive.

9. A computing system comprising:

a device controller comprising one or more processors; and

a non-volatile storage having boot loader code stored in a first partition thereof, the boot loader code being marked as active and comprising instructions for loading a firmware image that is separate from the boot loader code to the non-volatile storage;

wherein the device controller is configured to:

in response to a system start-up, execute the boot loader code using the one or more processors;

load the firmware image from a location separate from the non-volatile storage to a second partition of the non-volatile storage, the second partition being separate from the first partition;

mark the firmware image as active;

following a power cycle, determine that the firmware image is stored in the second partition and has been marked as active; and

in response to said determination, make a copy of the firmware image and store the copy of the firmware image in the first partition, thereby overwriting the boot loader code in the first partition with the copy of the firmware image.

10. The computing system of claim 9 , wherein the device controller is further configured to:

following a separate power cycle, determine that an active copy of the firmware image is not stored in the non-volatile storage; and

in response to said determination that an active copy of the firmware image is not stored in the non-volatile storage, execute the boot loader code from the first partition.

11. The computing system of claim 9 , wherein the computing system is a data storage drive.

12. The computing system of claim 9 , wherein the non-volatile storage is a flash memory communicatively coupled to an interface bridge module of the computing system.

13. The computing system of claim 12 , wherein the device controller is further configured to receive the firmware image over a host interface communicatively coupled to the interface bridge module.

14. The computing system of claim 9 , wherein the device controller is configured to mark the firmware image as active at least in part by setting metadata associated with the firmware image to a first value.

15. The computing system of claim 9 , wherein the device controller is further configured to:

make an additional copy of the firmware image; and

store the additional copy in the non-volatile storage.

16. The computing system of claim 9 , wherein:

the device controller is further configured to load the firmware image from a second non-volatile storage of a data storage drive; and

the non-volatile storage is a component of the data storage drive.

Assignments (7)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →