Search

US-12619441-B2 - Configuration data compression

US12619441B2US 12619441 B2US12619441 B2US 12619441B2US-12619441-B2

Abstract

Compressed configuration data may be read from a non-volatile memory of a computing device, decompressed, and used to configure circuitry of the computing device. The decompressed configuration data may be in the form of key-value pairs. A lookup table of most frequently occurring values in the original or uncompressed configuration data may be used to determine the values.

Inventors

  • Karthik KUMAR RAO
  • Omesh Kumar Handa
  • Suhrid Bhatt

Assignees

  • QUALCOMM INCORPORATED

Dates

Publication Date
20260505
Application Date
20230810

Claims (15)

  1. 1 . A method for configuring circuitry in an Internet of Things (“IoT”) computing device, comprising: reading a sequence of data items stored in a non-volatile memory of the IoT computing device, the non-volatile memory comprising NOR flash memory, each sequence of data items provides either an index to a table of most frequently occurring values or an opcode, each opcode designates a number of bytes to be read from the non-volatile memory of the IoT computing device once an opcode is determined from the sequence of data items; determining whether the sequence of data items is an opcode; reading a number of bytes from the non-volatile memory of the computing device when it is determined the sequence of data items in an opcode; determining whether the sequence of data items is an index; providing a value from the table of most frequently occurring values corresponding to the index when it is determined the sequence of data items is an index; determining a key-value pair associated with either the value from the table when the sequence of data items is an index or with the read number of bytes when the sequence of data items is an opcode; and configuring the circuitry using the key-value pair, where each key of the key-value pair identifies the circuitry to be configured and each value of the key-value pair is used to configure the circuitry.
  2. 2 . The method of claim 1 , wherein each step of the method is performed by processor of the IoT computing device.
  3. 3 . The method of claim 2 , wherein the processor is part of a system-on-chip (SoC) within the IoT computing device.
  4. 4 . The method of claim 1 , wherein each data item is a single byte, and the table of most frequently occurring values contains no more than 256 most frequently occurring values.
  5. 5 . The method of claim 1 , wherein the non-volatile memory is configured to store the sequence of data items in less than one megabyte of storage.
  6. 6 . A system for configuring circuitry in an Internet of Things (“IoT”) computing device, comprising: a non-volatile memory comprising NOR flash memory; and decompressor circuitry configured to: read a sequence of data items stored in the non-volatile memory of the IoT computing device; each sequence of data items provides either an index to a table of most frequently occurring values or an opcode, each opcode designates a number of bytes to be read from the non-volatile memory of the IoT computing device once an opcode is determined from the sequence of data items; determine whether the sequence of data items is an opcode; read a number of bytes from the non-volatile memory of the IoT computing device when the decompressor circuitry determines the sequence of items in an opcode; determine whether the sequence of data items is an index; provide a value from the table of most frequently occurring values corresponding to the index when decompressor circuitry determines the sequence of data items is an index; determine a key-value pair associated with either the value from the table when the sequence of data items is an index or with the read number of bytes when the sequence of items is an opcode; and configuring configurable circuitry of the IoT computing device using the key-value pair, where each key of the key-value pair identifies the circuitry to be configured and each value of the key-value pair is used to configure the configurable circuitry of the IoT computing device.
  7. 7 . The system of claim 6 , wherein the decompressor circuitry is part of a processor.
  8. 8 . The system of claim 6 , wherein the processor is part of a system-on-chip (SoC) of the IoT computing device.
  9. 9 . The system of claim 6 , wherein each data item is a single byte, and the table of most frequently occurring values contains no more than 256 most frequently occurring values.
  10. 10 . The system of claim 6 , wherein the non-volatile memory is configured to store the sequence of data items in less than one megabyte of storage.
  11. 11 . A system-on-a-chip (“SoC”) in an Internet of Things (“IoT”) computing device, comprising: at least one processor core; at least one configurable circuitry element; and decompressor circuitry configured to: read a sequence of data items stored in a non-volatile memory of the IoT computing device, the non-volatile memory comprising NOR flash memory; each sequence of data items provides either an index to a table of most frequently occurring values or an opcode, each opcode designates a number of bytes to be read from the non-volatile memory of the computing device once an opcode is determined from the sequence of data items; determine whether the sequence of data items is an opcode; read a number of bytes from the non-volatile memory of the IoT computing device when the decompressor circuitry determines the sequence of items in an opcode; determine whether the sequence of data items is an index; provide a value from the table of most frequently occurring values corresponding to the index when decompressor circuitry determines the sequence of data items is an index; determine a key-value pair associated with either the value from the table when the sequence of data items is an index or with the read number of bytes when the sequence of items is an opcode; and configuring the at least one configurable circuitry element of the IoT computing device using the key-value pair, where each key of the key-value pair identifies the circuitry element to be configured and each value of the key-value pair is used to configure the circuitry element of the IoT computing device.
  12. 12 . The SoC of claim 11 , wherein the SoC further includes wireless connectivity circuitry.
  13. 13 . The SoC of claim 11 , wherein the SoC further includes at least one of: power management circuitry, analog-to-digital conversion (“ADC”) circuitry, and Input/Output interface circuitry.
  14. 14 . The SoC of claim 11 , wherein each data item is a single byte, and the table of most frequently occurring values contains no more than 256 most frequently occurring values.
  15. 15 . The SoC of claim 11 , wherein the non-volatile memory is configured to store the sequence of data items in less than one megabyte of storage.

Description

DESCRIPTION OF THE RELATED ART A computing device may include components such as processors, memory, input and output components, etc. Wireless computing devices may also include radio transceivers. The multiple components may be integrated on a “system-on-a-chip” (“SoC”). A computing device component may have programmable or otherwise configurable aspects that are configured into the hardware (circuitry) when the computing device boots, to prepare the computing device for operation in its normal operational mode (sometimes referred to as mission mode). During such a configuration process, the configuration data may be read from a non-volatile memory, such as flash memory. Wireless computing device technology increasingly involves devices that are smaller in size and more focused in task range than desktop and laptop computers, tablet computers, smartphones, etc. Such “small” computing devices may include wearables such as wristwatch-style and eyewear-based devices, etc., automotive devices, industrial and agricultural sensors and controllers, electric or water utility meters, and small household devices such as smart thermostats, smart garage door openers, etc. Small computing devices that communicate wirelessly via the Internet may be referred to as Internet-of-Things (“IoT”) devices. Such computing devices may be designed for low cost, and consequently may contain a relatively small amount of non-volatile memory available to store configuration data. It may be desirable to store configuration data in an efficient manner due to the relatively small amount of non-volatile memory available for configuration data in the above-referenced types of computing devices. A data compression scheme that takes advantage of pre-known properties of the configuration data may be more efficient than general-purpose data compression schemes. SUMMARY OF THE DISCLOSURE Systems, methods, devices, and other examples of configuration data compression and decompression and configuring circuitry are disclosed. An exemplary method for configuring circuitry in a computing device may include reading a sequence of data items stored in a non-volatile memory of the computing device. The method may further include providing a value corresponding to a data item using a table of most frequently occurring values. The method may still further include providing a next key corresponding to the value. The method may yet further include configuring the circuitry using the next key and the corresponding value. An exemplary system for configuring circuitry in a computing device may include a non-volatile memory and decompressor circuitry. The decompressor circuitry may be configured to read a sequence of data items stored in the non-volatile memory. The decompressor circuitry may further be configured to provide a value corresponding to a data item using a table of most frequently occurring values. The decompressor circuitry may still further be configured to provide a next key corresponding to the value. The decompressor circuitry may yet further be configured to provide the next key and the corresponding value to configurable circuitry of the computing device. Another exemplary system for configuring circuitry in a computing device may include means for reading a sequence of data items stored in a non-volatile memory of the computing device. The exemplary system may further include means for providing a value corresponding to a data item using a table of most frequently occurring values. The exemplary system may still further include means for providing a next key corresponding to the value. The exemplary system may yet further include means for configuring the circuitry using the next key and the corresponding value. An exemplary system-on-a-chip (“SoC”) may include at least one processor core, at least one configurable circuitry element, and decompressor circuitry. The decompressor circuitry may be configured to read a sequence of data items stored in the non-volatile memory. The decompressor circuitry may further be configured to provide a value corresponding to a data item using a table of most frequently occurring values. The decompressor circuitry may still further be configured to provide a next key corresponding to the value. The decompressor circuitry may yet further be configured to provide the next key and the corresponding value to configurable circuitry of the computing device. BRIEF DESCRIPTION OF THE DRAWINGS In the Figures, like reference numerals refer to like parts throughout the various views unless otherwise indicated. For reference numerals with letter character designations such as “101A” or “101B”, the letter character designations may differentiate two like parts or elements present in the same Figure. Letter character designations for reference numerals may be omitted when it is intended that a reference numeral to encompass all parts having the same reference numeral in all Figures. FIG. 1 is a block diagram of a syste