Block-Based Differential Firmware Update Algorithm

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current firmware update methods for embedded devices require excessive memory, leading to higher power consumption, shorter battery life, larger chip areas, and increased costs, as they operate on full binary firmware images and generate large patch files even with minimal differences between updates.

Innovation Solution

A method that divides the new firmware image into blocks of equal size, applies a binary differential patching algorithm block-by-block, and creates separate block patches, reducing memory demand by optimizing the patch file size and ensuring fail-safe updates through tracking and temporary storage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If full firmware image update is used, then update completeness is ensured, but memory consumption doubles

Engineering Contradiction:
Improveupdate completenessVSAvoidmemory consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The firmware image is divided into multiple blocks, and patching is performed block-by-block rather than requiring the entire firmware image to be loaded into memory simultaneously. This segmentation allows incremental processing with minimal memory footprint.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Instead of processing the complete firmware image at once, only the necessary blocks are processed incrementally. The patching algorithm processes blocks in sequence, applying changes progressively without requiring full image loading.

Inventive Principle:
Principle #16Partial or excessive action

2Reliability

If traditional patching algorithms operate on full binary firmware image, then complete patching is achieved, but patch file size increases

Engineering Contradiction:
Improvepatching completenessVSAvoidpatch file size
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patching process is segmented into block-level operations. Each block is patched independently and sequentially, allowing the patch file to contain only the necessary differences for each block rather than requiring a complete firmware image patch.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patching approach transitions from operating on the complete firmware image (one-dimensional full-image patching) to operating on individual blocks (multi-dimensional block-level patching), enabling more efficient patch file generation.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Quantity of substance

If block-by-block patching is implemented, then memory usage is reduced, but processing complexity increases

Engineering Contradiction:
Improvememory usageVSAvoidprocessing complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The firmware and patching process are divided into manageable blocks with clear boundaries. Each block can be processed independently with standardized procedures, making the complexity tractable through systematic division.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Blocks are pre-numbered and organized in a systematic sequence before patching begins. This preliminary organization enables straightforward tracking and processing of blocks in order, reducing the complexity of managing the patching process.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11513790B2Memory optimized block-based differential update algorithm
Publication Date: 2022.11.29 SHENZHEN GOODIX TECH CO LTD
  • US11513790B2 patent drawing
  • US11513790B2 patent drawing
  • US11513790B2 patent drawing

AI summary

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.