IP Library › Granted Patent US 11,513,790
Granted Patent B2
US 11,513,790 · App. 17/029,032 · Granted Nov 29, 2022

Memory optimized block-based differential update algorithm

Inventors: Andreas Von Borany (Glashütte, DE); Martin Fröhlich (Dresden, DE)
G06F8/658G06F8/654
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 11,513,790
App. No.
17/029,032
Granted
Nov 29, 2022
Kind
B2
Abstract

A method for updating a firmware image comprises: — dividing a new firmware image into blocks 1* . . . n* . . . N*, wherein n* and N* are natural numbers, and wherein the size S is determined empirically before updating the firmware image, a) matching a first block 1* of the new firmware image against the full old firmware image using a binary differential and patching algorithm by b) creating a first block patch of the new and old firmware image according to said first block 1* of the new firmware image and the blocks 1 to M of the old firmware image, and repeating steps a) and b) wherein the consecutive repetitions are performed using only the blocks of the old firmware image not being processed yet, wherein the old binary firmware image is updated on a block-by-block basis, and wherein the currently processed block patch n is tracked.

Claims (20)

1. A method for updating a firmware image of an embedded device, the method comprising:

dividing a new firmware image into blocks 1* . . . n* . . . N* of size S, wherein n* and N* are natural numbers, and wherein the size S corresponds to an erasable block of a flash memory of the embedded device;

considering an old firmware image of the embedded device by dividing the old firmware image into blocks 1 . . . m . . . M of size S, wherein m and M are natural numbers;

a) matching the block n* of the new firmware image against the blocks n to M of the old firmware image using a binary differential and patching algorithm;

b) creating a block patch n of the new firmware image and old firmware image according to the block n* of the new firmware image and the blocks n to M of the old firmware image and storing the block patch n in a patch file;

creating block patches 1 to N by repeating steps a) and b) until all the blocks N* and M are processed, respectively; and

updating the old firmware image of the embedded device on a block-by-block basis, by using the corresponding block patch 1 . . . n . . . N, wherein n and N are natural numbers, and wherein a currently processed block patch n is tracked for ensuring said block patch n is not applied twice to an updated part of the old firmware image.

2. The method for updating a firmware image of an embedded device according to claim 1 , wherein an updated block n according to the block patch n is stored in place corresponding to the block m of the old firmware image of the embedded device.

3. The method for updating a firmware image of an embedded device according to claim 2 , wherein the updated block is temporarily stored in a Random Access Memory storage.

4. The method for updating a firmware image of an embedded device according to claim 2 , wherein repetitively creating a patch block n of the new and old firmware image according to step b), with n being a natural number between 1 and N, is performed by matching the block n* of the new firmware image against the old firmware image in reversed order.

5. The method for updating a firmware image of an embedded device according to claim 2 , wherein if the last block N* of the new firmware image has another size than size S, said last block N* is padded with 0x00 or 0xFF.

6. The method for updating a firmware image of an embedded device according to claim 5 , wherein repetitively creating a patch block n of the new and old firmware image according to step b), with n being a natural number between 1 and N, is performed by matching the block n* of the new firmware image against the old firmware image in reversed order.

7. The method for updating a firmware image of an embedded device according to claim 1 , wherein the size S of the block n* of the new firmware image is an integer multiple of a memory page size, wherein n* is a natural number between 1 and N*.

8. The method for updating a firmware image of an embedded device according to claim 1 , wherein if the last block N* of the new firmware image has another size than size S, said last block N* is padded with 0x00 or 0xFF.

9. The method for updating a firmware image of an embedded device according to claim 1 , wherein a block patch n is temporarily stored in a non-volatile memory area of the embedded device.

10. The method for updating a firmware image of an embedded device according to claim 1 , wherein the updated block is temporarily stored in a Random Access Memory storage.

11. The method for updating a firmware image of an embedded device according to claim 1 , wherein repetitively creating a patch block n of the new and old firmware image according to step b), with n being a natural number between 1 and N, is performed by matching the block n* of the new firmware image against a partially updated old firmware image comprising blocks 1 to M.

12. The method for updating a firmware image of an embedded device according to claim 1 , wherein repetitively creating a patch block n of the new and old firmware image according to step b), with n being a natural number between 1 and N, is performed by matching the block n* of the new firmware image against the old firmware image in reversed order.

13. The method for updating a firmware image of an embedded device according to claim 1 , wherein for tracking the currently processed patch block n a symbol is placed to the blocks of the new firmware image by a linker script.

14. The method for updating a firmware image of an embedded device according to claim 1 , wherein each of the block patches 1 to N comprises a difference of the matched blocks of the new and old firmware images.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2020
From: VON BORANY, ANDREAS; FRÖHLICH, MARTIN
To: SHENZHEN GOODIX TECHNOLOGY CO., LTD.
Reel/Frame 053851/0790 →
Priority Claims (1)
EP 18203273 · Oct 30, 2018 · regional
Continuity (2)
Continuation PCTEP2019077596 · Oct 11, 2019
Related Publication 20210004223A1 · Jan 7, 2021