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, anda 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;
storing received OTA software in the second, smaller nonvolatile memory; and
performing block-based swapping of the OTA software in the second, smaller nonvolatile memory with the system software in the first nonvolatile memory using a first decompressor circuit 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, a first compressor circuit 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.
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.
34 Citations
22 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, and 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; storing received OTA software in the second, smaller nonvolatile memory; and performing block-based swapping of the OTA software in the second, smaller nonvolatile memory with the system software in the first nonvolatile memory using a first decompressor circuit 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, a first compressor circuit 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. 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; 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 and compressor circuit 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 (10, 11, 12, 13, 14, 15)
-
-
16. 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; and a compressor circuit; where 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 (17, 18, 19, 20, 21, 22)
-
Specification