FAULT-TOLERANT METHOD AND APPARATUS FOR UPDATING COMPRESSED READ-ONLY FILE SYSTEMS
First Claim
1. A fault-tolerant method of updating an original data image having both compressed and raw data arranged into data sub-blocks and stored in a programmable non-volatile flash memory, wherein the flash memory is divided into discrete flash blocks with flash block boundaries, the method comprising:
- a) decompressing each compressed data sub-block identified by predetermined updating instructions;
b) generating the decompression state for each decompressed data sub-block that crosses a flash block boundary, and copying to flash memory the generated decompression states for use in recovering data after a system failure;
c) creating an intermediate memory image in buffer memory byi. applying predetermined updating instructions while retrieving and decompressing flash blocks of data identified by the predetermined updating instructions and creating an intermediate memory image consisting of a sequence of uncompressed data blocks, each corresponding to a single flash block;
ii. compressing the intermediate memory image so that the data in each flash block is compressed independently of the data in any other compressed flash block;
iii. over-writing the flash blocks in the original data image with the intermediate memory image;
d) creating an updated memory image that includes the desired update information byi. copying portions of the intermediate memory image to a buffer and decompressing the data in each compressed flash block in the intermediate memory image;
ii. sequentially recompressing the decompressed intermediate memory image into discrete flash blocks thereby generating the updated compressed memory image; and
iii. overwriting the intermediate memory image in the flash memory with the updated compressed memory image.
6 Assignments
0 Petitions
Accused Products
Abstract
A fault-tolerant approach for updating a compressed read-only file system in embedded devices using a two-step approach. In the first phase an update package creates an intermediate memory image where the data blocks are independently compressed so that, if needed, the data therein can be decompressed and read without access to any other surrounding data blocks. Then in the second phase the intermediate memory image is decompressed in a buffer so that it can be reimaged into its final form and order before being recompressed and written back to non-volatile memory over-writing the intermediate memory image.
33 Citations
9 Claims
-
1. A fault-tolerant method of updating an original data image having both compressed and raw data arranged into data sub-blocks and stored in a programmable non-volatile flash memory, wherein the flash memory is divided into discrete flash blocks with flash block boundaries, the method comprising:
-
a) decompressing each compressed data sub-block identified by predetermined updating instructions; b) generating the decompression state for each decompressed data sub-block that crosses a flash block boundary, and copying to flash memory the generated decompression states for use in recovering data after a system failure; c) creating an intermediate memory image in buffer memory by i. applying predetermined updating instructions while retrieving and decompressing flash blocks of data identified by the predetermined updating instructions and creating an intermediate memory image consisting of a sequence of uncompressed data blocks, each corresponding to a single flash block; ii. compressing the intermediate memory image so that the data in each flash block is compressed independently of the data in any other compressed flash block; iii. over-writing the flash blocks in the original data image with the intermediate memory image; d) creating an updated memory image that includes the desired update information by i. copying portions of the intermediate memory image to a buffer and decompressing the data in each compressed flash block in the intermediate memory image; ii. sequentially recompressing the decompressed intermediate memory image into discrete flash blocks thereby generating the updated compressed memory image; and iii. overwriting the intermediate memory image in the flash memory with the updated compressed memory image. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A mobile electronic device having an operating software system configured to have a completely fault-tolerant process for updating the operating system software, said electronic device comprising:
-
a buffer memory; a computer-readable flash memory having stored therein said operating system software configured as a first memory image consisting of compressed and incompressible blocks of data, and divided into discrete flash blocks of data; a processor programmed for updating the first memory image in accordance with predetermined updating instructions by; decompressing each compressed data sub-block identified by the predetermined updating instructions; generating the decompression state of each decompressed data sub-block which crosses a flash block boundary and copying to flash memory the generated decompression states for use in recovering data after a system failure; creating an intermediate memory image in buffer memory by applying the predetermined updating instructions while retrieving and decompressing flash blocks of data from the flash memory identified by the predetermined updating instructions and creating an intermediate memory image consisting of a sequence of uncompressed data blocks, each corresponding to a single flash block; compressing the intermediate memory image so that the data corresponding to each flash block is compressed independently of the data in any other flash block, and limiting the amount of data in each discrete flash block in the intermediate memory image so that each independently compressed flash block fits within the corresponding flash block, and if it does not, saving the overlap data to flash memory; over-writing the data in each flash block in the original data image with the intermediate memory image; creating an updated memory image that includes the desired update information by copying the intermediate memory image to the buffer and decompressing each compressed data sub-block in the intermediate memory image while using the overlap data stored in flash memory; sequentially recompressing the decompressed intermediate memory image into a different sequence of data sub-blocks thereby generating the updated compressed memory image; and overwriting the intermediate memory image in the flash memory with the updated compressed memory image. - View Dependent Claims (9)
-
Specification