NAND Flash Firmware Update via Binary Differencing and Segmentation
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Reliability
If entire firmware images are delivered for updates, then completeness of update is improved, but device memory requirements and update complexity increase
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.
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.
3Quantity of substance
If binary differencing is used to create update packages, then update size is reduced, but processing time and computational resources increase
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.
4Reliability
If power loss protection is implemented for updates, then reliability is improved, but update process time and complexity increase
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.
Data Source
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.


