IP Library Granted Patent US 7,996,501
Granted Patent B2
US 7,996,501 · App. 11/872,785 · Granted Aug 9, 2011

System and method for updating devices that execute an operating system or application program directly from nonvolatile storage

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 7,996,501
App. No.
11/872,785
Granted
Aug 9, 2011
Kind
B2
Abstract

A system and method updates a device by storing into nondisk nonvolatile storage such as flash memory, the files used to update the device, using data structures that are swapped, a portion at a time, into available RAM of the device.

Claims (72)

1. A content update method, comprising:

receiving modifications that match an initial index stored locally in nonvolatile non-disk memory with a master index stored remotely;

storing the modifications in the nonvolatile non-disk memory;

modifying the initial index with the modifications using random access memory;

storing the modified index in the nonvolatile non-disk memory;

determining differences between the initial index and the modified index using random access memory;

storing the differences in the nonvolatile non-disk memory; and

modifying a directory in the nonvolatile non-disk memory based on the differences using random access memory.

2. The method of claim 1 , wherein the acts of modifying the initial index and storing the modified index comprises repeating the acts of:

reading sequential portions of the initial index and the modification from the nonvolatile non-disk memory into a random access memory buffer;

modifying the sequential portions of the initial index using the modifications; and

storing each of the modified portions of the initial index as portion of the modified index in the nonvolatile non-disk memory.

3. The method of claim 1 , wherein the acts of determining and storing the differences comprises repeating the acts of:

reading sequential portions of the initial index and the modified index from the nonvolatile non-disk memory into a random access memory buffer;

comparing the sequential portions to determine the differences; and

storing each of the differences as portion of a list of updated content in the nonvolatile non-disk memory.

4. The method of claim 1 , wherein the act of modifying the directory comprises repeating the acts of:

reading sequential portions of the initial index and the modified index from the nonvolatile non-disk memory into a random access memory buffer;

comparing the sequential portions to determine changes in the directory; and

modifying the directory in the nonvolatile non-disk memory based on the changes.

5. The method of claim 1 , further comprising:

sending one or more requests remotely for updated content based on the differences;

receiving requested content in response to the one or more requests; and

installing the requested content into the modified directory in the nonvolatile non-disk memory.

6. The method of claim 5 , wherein the act of receiving the requested content comprises storing the requested content in a cache of the nonvolatile non-disk memory.

7. The method of claim 5 , wherein the requested content comprises a replacement of a portion of a file stored in the nonvolatile non-disk memory, and wherein the act of installing the requested content comprises:

moving the portion of the file from an original location to a new location for deleted files in the nonvolatile non-disk memory; and

installing the replacement of the portion of the file in the original location.

8. The method of claim 5 , wherein the requested content comprises instructions for editing a file stored in the nonvolatile non-disk memory, and wherein the act of installing the requested content comprises:

moving a copy of the file from an original location to a new location for deleted files in the nonvolatile non-disk memory; and

editing the file in the original location of the nonvolatile non-disk memory with the instructions.

9. The method of claim 1 , wherein the nonvolatile non-disk storage comprises flash memory.

10. The method of claim 1 , wherein the directory stored in the nonvolatile non-disk memory comprises a directory of a file or registry system.

11. The method of claim 1 , wherein the act of storing the determined differences in the nonvolatile non-disk memory comprises appending the determined differences to an existing file stored in the nonvolatile non-disk memory to conserve the random access memory.

12. The method of claim 1 , wherein the random access memory available for updating is smaller than the nonvolatile non-disk memory.

13. A program storage device, readable by a programmable control device, comprising instructions stored on the program storage device for causing the programmable control device to perform a method according to claim 1 .

14. A device, comprising:

nonvolatile non-disk memory storing software, content in a directory, an initial index of the stored content, and modifications to the initial index identifying changes to the initial index from a master index, the software executable in place in the nonvolatile non-disk memory;

random access memory;

an interface communicating with a server having the master index from which the modifications are received;

a processor operatively coupled to the nonvolatile non-disk memory, the random access memory, and the interface, the processor being operable to—

modify the initial index with the stored modifications using the random access memory,

store the modified index in the nonvolatile non-disk memory,

determine differences between the initial index and the modified index using the random access memory,

store the determined differences in the nonvolatile non-disk memory, and

modify the directory in the nonvolatile non-disk memory based on the determined differences using the random access memory.

15. The device of claim 14 , wherein the software comprises at least a portion of an operating system or an application program.

16. The device of claim 14 , wherein the device is selected from the group consisting of a mobile telephone, a personal digital assistant, and a camera.

17. The device of claim 14 , wherein the nonvolatile non-disk storage comprises flash memory.

18. The device of claim 14 , wherein space available in the random access memory is less than space available in the nonvolatile non-disk storage.

19. The device of claim 14 , wherein to modify the initial index and store the modified index, the processor is operable to:

read sequential portions of the initial index and the modifications from the nonvolatile non-disk memory into a random access memory buffer;

modify the sequential portions of the initial index using the modifications; and

store each of the modified portions as portion of the modified index in the nonvolatile non-disk memory.

20. The device of claim 14 , wherein to determine and store the differences, the processor is operable to:

read sequential portions of the initial index and the modified index from the nonvolatile non-disk memory into a random access memory buffer;

comparing the sequential portions to determine differences; and

storing each of the determined differences as portion of a list of updated content in the nonvolatile non-disk memory.

21. The device of claim 14 , wherein to modify the directory, the processor is operable to:

read sequential portions of the initial index and the modified index from the nonvolatile non-disk memory into a random access memory buffer;

compare the sequential portions to determine changes in the directory; and

modify the directory in the nonvolatile non-disk memory based on the determined changes.

22. The device of claim 14 , wherein the processor being operable to:

request and receive updated content based on the determined differences from the server via the interface; and

install the received updated content into the modified directory in the nonvolatile non-disk memory.

23. The device of claim 22 , wherein to receive the requested content, the processor is operable to store the requested content in a cache of the nonvolatile non-disk memory.

24. The device of claim 22 , wherein the requested content comprises a replacement of a portion of a file stored in the nonvolatile non-disk memory, and wherein to install the requested content, the processor is operable to:

move the portion of the file from an original location to a new location for deleted files in the nonvolatile non-disk memory; and

install the replacement of the portion of the file in the original location.

25. The device of claim 22 , wherein the requested content comprises instructions for editing a file stored in the nonvolatile non-disk memory, and wherein to install the requested content, the processor is operable to:

move a copy of the file from an original location to a new location for deleted files in the nonvolatile non-disk memory; and

edit the file in the original location of the nonvolatile non-disk memory with the instructions.

Assignments (15)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
MERGER Recorded Oct 16, 2007
From: MARIMBA, INC.
To: BMC SOFTWARE, INC.
Reel/Frame 019968/0936 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2007
From: ERIKSSON, JOHAN; WYNN, SIMON; VAN HOFF, ARTHUR A.
To: MARIMBA, INC.
Reel/Frame 019968/0825 →