The main application for compression is to reduce the amount of space needed for static data. Examples for static data are FPGA images which are copied to the FPGA during startup, firmware images which are copied from data memory to run in instruction RAM, firmware updates which are sent to the device in compressed form, and language packs for different languages or HTML pages.
To achieve the reduction of memory needs, the data is compressed on a PC and either linked to the application or stored in the permanent memory of the target device. Decompression takes place on the target side, whenever it is needed and with little RAM used. Meanwhile the compressed version is stored in the flash of the target. The ROM consumption of emCompress is tiny, compared to the additional space that is available to the development engineer for new firmware features.
emCompress is capable of reducing highly redundant data, such as HTML pages, to no more than 10% of the original size - it offers a group mode, which boosts compression ratios when compressing many small files such as HTML content for embedded web servers.
The tool concentrates on the restricted RAM resources available for decompression in embedded systems. Thus, emCompress is delivered with numerous compression algorithms that can be parameterised to tune decompressor RAM. Decompression can be done into memory or in streamed mode.
emCompress comes with the compression application to run on Windows and the source code for all decompressors. It is written in ANSI C and is both compiler and target independent. emCompress can be licensed with a one-time payment tailored to commercial requirements.