SEGGER emCompress

Highly efficient embedded compression libraries

emCompress offers solutions to compress data for all kinds of embedded applications where size matters.

Reduced data size for storage and transfer is highly valuable in embedded systems. Reduced storage size minimizes the complexity and costs of systems by keeping memory requirements small. Reduced transfer size overcomes limitations of the bandwidth available to send and receive data.

Designed for embedded systems, emCompress can compress and decompress data even on smallest microcontrollers. emCompress is available in four editions, emCompress-PROemCompress-ToGoemCompress-Embed, and emCompress-Flex that cover different compression applications. Each edition is optimized for its specific use to provide the most convenient way to compress and decompress data.

emCompress is written in well-commented ANSI C. It is independent of both compiler and target. In contrast to most compression libraries, it is not covered by an open source or required attribution license and can be integrated into any commercial or proprietary product, without the obligation to disclose the combined source.

emCompress: Editions

Lower memory footprint

By compressing the data, a lot more can be stored in flash memory, SPI flash or on an external SD card. Whether it's firmware updates, configuration bitstreams, or interface assets, the smaller the storage footprint, the more cost-effective the solution becomes due to the smaller, less expensive storage medium.

Less communication traffic

In applications using a low bandwidth link with compression, more information can be transmitted in a shorter period of time. In addition, less traffic on a network also reduces the power consumption of senders and receivers. For long distance communication less transmitted data leads to fewer transmission errors and higher transmission speed.

Faster updates

By using compression new firmware or update data over the air can not only be transmitted with less bandwidth, but also faster. This may be not an issue when using high bandwidth channels like WiFi, but other channels such as Bluetooth, Zigbee or mobile communication in areas with poor network coverage might have bandwidth limitations resulting in long transmission times.

More flexibility

When receiving compressed data from external sources, flexibility regarding the codecs and data formats used is important. Often data is also delivered in archived form, which must be unpacked into a specific file structure in conjunction with a file system.

Use cases

To cover all conceivable use cases, SEGGER has developed four different editions of emCompress. Simply select your use case and see at a glance which emCompress edition fits it perfectly. In addition, you find a summary of all properties and use cases in the table below.

Speed up firmware updates

Many products require the ability to update their firmware in the field where very often the available bandwidth is limited. To speed up the update process, the data to be transferred to the device can be reduced. emCompress-PRO enables firmware updates with compressed images. It can receive a data stream and decompress it on the fly for the update module.

emCompress-Flex is the cost-effective solution for accelerating firmware updates, providing only one codec, compression on the host in a library, and only the decompressor in source code.

Reduce the size of firmware images

Firmware images typically grow with each update. At some point the new firmware might exceed the available flash size. If size reduction of static data in a firmware image is essential, emCompress-Embed is the right choice. With the small and fast decompressors, data stored in the memory in a compressed form can be decompressed on the fly, whenever needed.

Minimize the required memory footprint for asset storage

Most systems include digital assets for their user interface. To fit more data into available memory, or to design hardware with smaller memory, digital assets can be stored in compressed form.

When compressed data is part of the firmware image, emCompress-Embed is the perfect choice. The compressed data is embedded in the firmware and decompressed on demand. With emCompress-Embed’s group mode multiple assets can be compressed as a whole to achieve even better compression results.

For compressed data that is stored in external memory or updated without changing the firmware, emCompress-PRO enables on-demand decompression without having to know the data in advance.

Reduce IoT network traffic

Networks of connected IoT devices can suffer from congestion and limited bandwidth. With emCompress-ToGo messages to be sent on a network can be compressed and decompressed by the sender and receiver on the fly, resulting in less traffic on the network.

Process data provided by third-party compression tools

Connected devices might receive compressed data from external sources and the system might need to be designed to accept and handle input created by other tools emCompress-PRO is compatible with commonly used compression tools. A system receiving external data can select the decompressor on demand and be prepared for most customer use cases including handling and processing common archive formats.

Reduce storage requirements for configuration bitstreams

When an embedded system includes an FPGA(-SoC) or CPLD, the firmware needs to load a configuration bitstream into the device. emCompress-Embed can compress bitstreams to reduce storage requirements. With decompression on the fly, the device can be immediately configured using decompressed chunks.

Compress data on different kinds of targets

Most use cases require decompression on the target system. Besides data decompression, emCompress-PRO provides compression functionality as well. Both parts of the codecs can be integrated in firmware images as well as host applications.

Save resources on data logging

The amount of data collected and stored by data loggers makes this a prime application for compression. emCompress-ToGo is the right choice for storing compressed data logs, saving storage requirements and memory resources.

Speed up long-range communication

In space and avionics applications communication channels are not only restricted by the channel's bandwidth, but also by the distance that data has to be transmitted. emCompress-ToGo can compress any communication data and speed up long-range communication significantly.


emCompress: Editions

Product features
On-target compressionvvxx
On-target decompressionvvvv
Decompress static datavvvv
Decompress files & streamsvvxv
Available algorithmsDEFLATE, LZMA, LZJU90, LZPJSMASH-2DEFLATE, Huffman Encoding, LZW, LZSS, LZJU90, RLE-PARLZMA
ApplicationsFirmware updates, asset storage, external data transferData loggers, Bluetooth devices, avionics and space technology, satellitesReducing firmware size, storing configuration bitstreams, minimizing interface assetsFirmware updates
Included components
Compression utilitiesvvvv
Decompression utilitiesvvxv
Compressor source codevv++
Decompressor source codevvvv
Compressor object code libraryxxxv

v Supported/included x Not supported/not included + Optionally available

  • For embedded devices, apps, and PC software
  • Small decompressor ROM footprint
  • Wide range of compression algorithms
  • Easy to configure and integrate
  • Four editions to fit any need for compression