NAND Flash Firmware Update via Binary Differencing and Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for updating binary images in NAND flash memory devices are inefficient and unreliable, particularly for remote updates, as they lack effective bad block management and require significant resources, making it difficult to apply updates without returning the device to a service center and risking failure due to power interruptions.

Innovation Solution

The method divides firmware into two parts: a minimal core image for updating and a read-only file system image, allowing the update agent to run above the core operating system, providing access to bad block management facilities and enabling in-situ updates without external hardware, using a binary differencing engine to create a smaller update package that can be applied over-the-air.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If NAND flash memory is used for storing firmware images, then storage capacity and cost are improved, but write performance and reliability for updates deteriorate

Engineering Contradiction:
Improvestorage capacityVSAvoidupdate reliability
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The firmware image is divided into multiple blocks that can be updated independently. The update process segments the writing operation into sequential block updates with verification at each step, allowing the system to maintain high storage capacity while improving update reliability through manageable, verifiable segments rather than attempting to update the entire image at once.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary verification of each block before finalizing the update. Bad block management is implemented in advance to identify and avoid defective blocks before writing critical firmware data. This preliminary action ensures that updates to high-capacity NAND flash memory proceed reliably by preventing writes to bad blocks and verifying data integrity before completion.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If entire firmware images are delivered for updates, then completeness of update is improved, but device memory requirements and update complexity increase

Engineering Contradiction:
Improveupdate completenessVSAvoidupdate complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system extracts and applies only the necessary blocks from the new firmware image rather than delivering and installing entire images. The binary differencing engine identifies which blocks need updating and transfers only those specific blocks, reducing memory requirements and simplifying the update process while maintaining completeness by ensuring all necessary blocks are applied.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Instead of copying entire firmware images, the system copies only the differential blocks that contain changes. The binary differencing engine creates a compact representation of changes that can be efficiently transferred and applied, reducing both the complexity of the update process and the memory resources required during the update operation.

Inventive Principle:
Principle #26Copying

3Quantity of substance

If binary differencing is used to create update packages, then update size is reduced, but processing time and computational resources increase

Engineering Contradiction:
Improveupdate package sizeVSAvoidprocessing time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The system performs binary differencing only on the portions of the firmware that have changed, rather than analyzing entire images. This partial action approach reduces the computational burden and processing time while still achieving significant size reduction in update packages by focusing differencing efforts only where necessary.

Inventive Principle:
Principle #16Partial or excessive action

4Reliability

If power loss protection is implemented for updates, then reliability is improved, but update process time and complexity increase

Engineering Contradiction:
Improvepower loss protectionVSAvoidupdate process time
Core Design Contradiction:
ReliabilityVSDuration of action of moving object

Solution Approach 1:

The system performs preliminary verification of each block before finalizing writes, and maintains verification data throughout the update process. This preliminary action creates checkpoints that allow the system to detect and correct issues early, providing power loss protection without requiring extensive additional verification time after the fact, thus balancing reliability with reasonable process time.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7698698B2Method for over-the-air firmware update of NAND flash memory based mobile devices
Publication Date: 2010.04.13 INSIGNIA SOLUTIONS
  • US7698698B2 patent drawing
  • US7698698B2 patent drawing
  • US7698698B2 patent drawing

AI summary

A method for receiving, storing, and applying an update package to modify an original image stored within non-volatile flash memory devices. More specifically, the present design provides a download agent responsible for communicating with a server to transfer and store the update package; and an update agent responsible for verifying, decompressing and decoding the update package. The present design separates non-essential operating system (OS) components and applications from the core OS, stores non-essential OS components, applications, and download agent as a single image in a read-only file system. This image may be updated by applying an update package created by running a binary differencing engine on two pre-built file system images representing the current and new file systems to modify the stored image. Additionally, the present design applies an update package to the core OS, which includes the update agent.