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-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.
- 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.
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.
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.
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.
|On-target compression||Supported/Included||Supported/Included||Not Supported/Not Included||Optionally available |
|Decompress static data||Supported/Included||Supported/Included||Supported/Included||Supported/Included|
|Decompress files & streams||Supported/Included||Supported/Included||Not Supported/Not Included||Supported/Included|
|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|
|Decompression utilities||Supported/Included||Supported/Included||Not Supported/Not Included||Supported/Included|
|Compressor source code||Supported/Included||Supported/Included||Optionally available||Optionally available|
|Decompressor source code||Supported/Included||Supported/Included||Supported/Included||Supported/Included|
|Compressor object code library||Not Supported/Not Included||Not Supported/Not Included||Not Supported/Not Included||Supported/Included|
|Compressor and decompressor Java class||Not Supported/Not Included||Optionally available||Not Supported/Not Included||Not Supported/Not Included|
 This feature is only supported in combination with the compressor source code add-on that is optionally available.
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.