Firmware Update Package Generation Using Expansion Gaps

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current update package generation technologies require extensive flash block reprogramming, leading to long processing times and increased complexity due to the need to relocate entire flash blocks even for minor updates, which is inefficient and inadequate for large updates.

Innovation Solution

A software development tool chain that includes guidelines for content ordering, object file management, insertion of expansion gaps, use of jump tables, and compiler options to minimize data movement and reduce the number of flash blocks modified during updates, combined with binary differencing techniques to generate minimal-sized update packages.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If binary differencing algorithms are used to generate update packages, then the size of update packages is reduced, but the number of flash blocks requiring reprogramming remains high leading to long apply times

Engineering Contradiction:
Improveupdate package sizeVSAvoidupdate apply time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent applies preliminary action by organizing code into blocks with pre-inserted free space during the firmware building stage, before updates are applied. This advance preparation allows future updates to utilize the pre-existing free space without requiring code relocation, thereby reducing update apply time while maintaining small update package sizes.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the firmware image into multiple code blocks, each with associated free space. This segmentation allows the update system to target only specific blocks that need updating rather than relocating entire images, reducing both update package size and apply time by limiting the scope of modifications needed.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If code is relocated to accommodate new features, then functionality is improved, but the number of flash operations increases leading to longer processing times

Engineering Contradiction:
Improvedevice functionalityVSAvoidprocessing time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent prepares the firmware structure in advance by inserting free space into code blocks during the build process. This preliminary action ensures that when new features need to be added, the code can expand into the pre-existing free space without relocation, thereby maintaining adaptability while minimizing processing time.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a dynamic firmware structure where code blocks can grow into adjacent free space. This dynamic approach allows the firmware to adapt to new features by expanding within allocated space rather than requiring static relocation, thus improving adaptability without increasing processing time.

Inventive Principle:
Principle #15Dynamics

3Loss of time

If fixed percentage free space is inserted into each code block, then small updates can be applied without relocating code, but large updates still require relocation of subsequent blocks

Engineering Contradiction:
Improveupdate apply time for small updatesVSAvoidcapability to handle large updates
Core Design Contradiction:
Loss of timeVSAdaptability or versatility

Solution Approach 1:

The patent merges multiple free space regions into a single consolidated free space area at the end of the image. This consolidation allows both small and large updates to utilize the same pooled free space resource, eliminating the limitation where large updates would trigger code relocation while still maintaining the benefit of no-relocation updates for smaller changes.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent creates a universal free space pool that serves both small and large update scenarios. This multi-functional approach allows the same free space mechanism to handle updates of any size without requiring different strategies or triggering code relocation, thereby maintaining both fast apply times and adaptability for large updates.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Reliability

If the entire image is moved to accommodate a single byte insertion, then data integrity is maintained, but every flash block covered by the image must be reprogrammed

Engineering Contradiction:
Improvedata integrityVSAvoidupdate efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the free space requirement from the code structure by dedicating specific regions as free space pools. This extraction allows new data to be inserted into the extracted free space region without moving the code, thereby maintaining data integrity while dramatically improving update efficiency by avoiding mass reprogramming.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces free space regions as intermediary buffers between existing code and new data insertions. These intermediary regions absorb the impact of new code additions, allowing data integrity to be maintained through controlled insertion rather than image relocation, thus preserving both reliability and productivity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9292274B2Efficient method and system for reducing the time to apply update package
Publication Date: 2016.03.22 INSIGNIA SOLUTIONS
  • US9292274B2 patent drawing
  • US9292274B2 patent drawing
  • US9292274B2 patent drawing

AI summary

The present invention reduces the time required to apply an update package for generating a new image from an original image within a non-volatile memory device by effectively reducing the number of flash blocks requiring modification by use of whatever free space is available at the end of the image as required. A set of software development guidelines and an improved firmware development tool chain (i.e. compiler, linker, etc.) are utilized to produce new firmware for the client device. A firmware programmer follows or applies this set of guidelines when developing new features and fixes for distribution via a new firmware image. The improved firmware development tool chain executes on a collection of function blocks, available from the development of the original image, used to create new firmware source code, which when complied and linked yields a new image, prior to the delta or differencing processing.