emCompress
Highly efficient embedded compression libraries
emCompress offers solutions to compress data for all kinds of embedded applications where size matters.
Overview
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-PRO, emCompress-ToGo, emCompress-Embed, and emCompress-LZMA 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.
Key features
- 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
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 can be transmitted over the air not only with less bandwidth, but also faster. This may not be an issue when using high bandwidth channels such as WiFi. Other channels such as Bluetooth, Zigbee, or mobile communication in areas with poor network coverage may have bandwidth limitations that result in long transmission times.
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-LZMA 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 may exceed the available flash size. When it comes to reducing the size of static data in a firmware image is essential, emCompress-Embed is the right choice. With small and fast decompressors, data stored in compressed form in the memory 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.
More information about emCompress-Embed...
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 may receive compressed data from external sources, and the system may need to be designed to accept and process 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 limited not only by the channel's bandwidth, but also by the distance that the data needs to be transmitted. emCompress-ToGo can compress any communication data and significantly speed up long-range communication.
Editions
emCompress-PRO | emCompress-ToGo | emCompress-Embed | emCompress-LZMA | ||||||
---|---|---|---|---|---|---|---|---|---|
Product features | |||||||||
On-target compression | [1] | ||||||||
On-target decompression | |||||||||
Decompress static data | |||||||||
Decompress files & streams | |||||||||
Available algorithms | DEFLATE, LZMA, LZJU90, LZPJ | SMASH-2 | DEFLATE, Huffman Encoding, LZW, LZSS, LZJU90, RLE-PAR | LZMA | |||||
Applications | Firmware updates, asset storage, external data transfer | Data loggers, Bluetooth devices, avionics and space technology, satellites | Reducing firmware size, storing configuration bitstreams, minimizing interface assets | Firmware updates | |||||
Included components | |||||||||
Compression utilities | |||||||||
Decompression utilities | |||||||||
Compressor source code | |||||||||
Decompressor source code | |||||||||
Compressor object code library | |||||||||
Compressor and decompressor Java class |
Supported/included Not supported/not included Optionally available
[1] This feature is only supported in combination with the compressor source code add-on that is optionally available.
Media gallery
emCompress — Example application | 2:43 min
emCompress-ToGo — Intro | 5:36 min
Licensing
emCompress is available under various Embedded Software License models and delivered in source code packages. With a wide range of licensing options, emCompress can fulfill commercial requirements as well as technical requirements. All licenses are one-time payments. emCompress is royalty-free and not subscription-based. This makes the software a part of the equipment expenses, keeping the costs static.
* Applies to second seat/product and all additional seats/products of the Single Product License and Single Developer License.