Linux Mobile Handset Firmware Update via Compression Decompression
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Updating firmware or software in mobile devices with compressed or encrypted content is inefficient due to complexities in determining space requirements and the need for different techniques than those used for uncompressed code, especially in Linux-based systems with specific file systems and access mechanisms.
Innovation Solution
Employing compression and decompression mechanisms in mobile handsets to update firmware and software, using methods like 'update as it is' and 'update with decompression on demand' to handle compressed kernels and CramFS file systems, which split firmware images into write units, decompress in RAM, and update in fault-tolerant modes, while managing fragmentation and dependency on file directories.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If compression techniques are used to store firmware and software in mobile devices, then storage space efficiency is improved, but the complexity of updating code increases
Solution Approach 1:
The system performs preliminary decompression of the compressed firmware image into a working directory before applying updates. This preliminary action separates the decompression step from the update step, allowing standard update techniques to be used on the decompressed files while maintaining space efficiency through compression in storage
Solution Approach 2:
A working directory serves as an intermediary between the compressed storage medium and the update process. The compressed firmware image is decompressed to this intermediate location where updates can be applied using conventional methods, then the updated files are compressed and stored back. This intermediary resolves the contradiction by providing a space for updates without requiring permanent uncompressed storage
2Quantity of substance
If compressed file systems are used in Linux-based mobile devices, then storage capacity is improved, but the ease of updating firmware decreases
Solution Approach 1:
The firmware update process is segmented into distinct phases: decompression of the compressed image to a working directory, application of updates to specific files in the working directory, and recompression of updated files. This segmentation allows each phase to use appropriate techniques independently, maintaining ease of operation while preserving storage capacity
Solution Approach 2:
The system changes the state parameter of firmware files from compressed to uncompressed during the update process by decompressing to a working directory. This parameter change enables standard file operations and update mechanisms to work efficiently, improving ease of operation while the final compressed state maintains storage capacity
3Quantity of substance
If firmware images are compressed before storage, then space utilization is improved, but the ability to determine space requirements for updates deteriorates
Solution Approach 1:
The system performs preliminary decompression to a working directory before updates, which allows accurate calculation of space requirements for updated files. This preliminary action makes the space requirements visible and measurable in the uncompressed state, resolving the difficulty of determining space needs while maintaining compressed storage for space utilization
Data Source
AI summary
There are two different types of compression used on the Embedded Linux Platform that the present invention is targeting. For the kernel, a singular compression is used. A whole kernel is compressed into a single compressed zImage by zlib at once. When the kernel is loaded into RAM, the whole kernel has to be decompressed to RAM and executes there. The root file system is built through the CramFS that employs a different compression mechanism. It is a block-based compression. When the device is running, it is not necessary to load the whole file system to RAM. The kernel mounts the file system and performs the decompression on a file when it is needed.


