NVM architecture with OTA support
First Claim
1. A software update method comprising:
- receiving over-the-air (OTA) software over a communications link at a device comprising;
a first nonvolatile memory operably disposed in the device for storing system software that is run on the device, the system software comprising a plurality of first code blocks that are not compressed,a second, smaller nonvolatile memory operably disposed in the device for storing the OTA software, the OTA software comprising a plurality of second code blocks that are compressed, anda first decompressor circuit and a first compressor circuit;
storing received OTA software in the second, smaller nonvolatile memory; and
performing, by the device, block-based swapping of the OTA software in the second, smaller nonvolatile memory with the system software in the first nonvolatile memory, whereinsaid block-based swapping uses the first decompressor circuit of the device to sequentially decompress each of the plurality of second code blocks of the OTA software for storage in decompressed form as updated system software in the first nonvolatile memory while, in a sequential fashion, and the first compressor circuit of the device to sequentially compresses each of the plurality of first code blocks of the system software for storage in compressed form as backup system software in the second, smaller nonvolatile memory, andsaid performing the block-based swapping comprises sequentially loading each of the plurality of second code blocks from the second, smaller nonvolatile memory into a first scratch memory of the device, and performing lossless decompression on each loaded second code block to generate a decompressed code block for storage in the first nonvolatile memory.
1 Assignment
0 Petitions
Accused Products
Abstract
A software update architecture, system, apparatus, and methodology are provided for performing block-based swapping of OTA software stored as a plurality of compressed blocks in a first, smaller NVM with the system software stored as a plurality of decompressed blocks in a second, larger NVM by using a first decompressor circuit and first scratch memory to sequentially decompress each compressed code block of OTA software for storage in decompressed form as updated system software in the second, larger NVM while using a first compressor circuit and second scratch memory to sequentially compress each decompressed code block of system software for storage in compressed form as backup system software in the first, smaller NVM.
26 Citations
18 Claims
-
1. A software update method comprising:
-
receiving over-the-air (OTA) software over a communications link at a device comprising; a first nonvolatile memory operably disposed in the device for storing system software that is run on the device, the system software comprising a plurality of first code blocks that are not compressed, a second, smaller nonvolatile memory operably disposed in the device for storing the OTA software, the OTA software comprising a plurality of second code blocks that are compressed, and a first decompressor circuit and a first compressor circuit; storing received OTA software in the second, smaller nonvolatile memory; and performing, by the device, block-based swapping of the OTA software in the second, smaller nonvolatile memory with the system software in the first nonvolatile memory, wherein said block-based swapping uses the first decompressor circuit of the device to sequentially decompress each of the plurality of second code blocks of the OTA software for storage in decompressed form as updated system software in the first nonvolatile memory while, in a sequential fashion, and the first compressor circuit of the device to sequentially compresses each of the plurality of first code blocks of the system software for storage in compressed form as backup system software in the second, smaller nonvolatile memory, and said performing the block-based swapping comprises sequentially loading each of the plurality of second code blocks from the second, smaller nonvolatile memory into a first scratch memory of the device, and performing lossless decompression on each loaded second code block to generate a decompressed code block for storage in the first nonvolatile memory. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A device comprising:
-
a first nonvolatile memory storing system software as a first plurality of uncompressed code blocks that run on the device; a second, smaller nonvolatile memory storing update software comprising a second plurality of compressed code blocks; a first scratch memory for storing a compressed code block; a second scratch memory for storing an uncompressed code block; a decompressor circuit, wherein the decompressor circuit of the device comprises a lossless decompressor circuit configured to sequentially load each of the second plurality of compressed code blocks from the first scratch memory and perform lossless decompression on each compressed code block to generate an uncompressed code block for storage in the first nonvolatile memory; a compressor circuit; and instruction memory for storing instructions which are executable and configured to perform block-based swapping of the update software in the second, smaller nonvolatile memory with the system software in the first nonvolatile memory by; sequentially transferring each of the second plurality of compressed code blocks into the first scratch memory while sequentially transferring each of the first plurality of uncompressed code blocks into the second scratch memory, and issuing commands to the decompressor circuit of the device and compressor circuit of the device to sequentially decompress each compressed code block in the first scratch memory for storage in uncompressed form as updated system software in the first nonvolatile memory while sequentially compressing a corresponding uncompressed code block in the second scratch memory for storage in compressed form as backup system software in the second, smaller nonvolatile memory. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A nonvolatile memory architecture comprising:
-
a non-volatile memory (NVM) comprising a first NVM array which stores execution software as a first plurality of uncompressed code blocks and a second, smaller NVM array which stores compressed software as a second plurality of compressed code blocks; a first scratch memory for storing a compressed code block; a second scratch memory for storing an uncompressed code block; a decompressor circuit coupled to the first NVM array and the first scratch memory, wherein the decompressor circuit comprises a lossless decompressor circuit configured to sequentially load each of the second plurality of compressed code blocks from the first scratch memory, and perform lossless decompression on each compressed code block to generate an uncompressed code block for storage in the first NVM array; and a compressor circuit coupled to the second NVM array and the second scratch memory; wherein the decompressor circuit is connected to decompress each of the second plurality of compressed code blocks that is sequentially loaded from the first NVM array into the first scratch memory for storage in uncompressed form as updated execution software in the first NVM array in concert with the compressor circuit which is connected to compress each of the first plurality of uncompressed code blocks that is sequentially loaded into the second scratch memory for storage in compressed form as backup system software in the second, smaller NVM array, thereby performing block-based swapping of the compressed software in the second, smaller NVM array with the execution software in the first NVM array. - View Dependent Claims (15, 16, 17, 18)
-
Specification