Skip to main content
  • 产品
  • Evaluate our Software
  • 下载
  • Free Utilities
  • 购买
  • 芯片厂商
  • 支持
  • 关于我们
  • Search
  • 工作机会
  • 新闻简报
  • 联系我们
  • emCompress
  • emCompress-Embed

    emCompress-Embed
    Smart compression for firmware

    Reduce memory requirements by compressing static data on any embedded system.

    Contact us
    Downloads
    Documentation
    SEGGER emCompress
    1. 1.Key features
    2. 2.Memory footprint
      1. 2.1.ROM
      2. 2.2.RAM
    3. 3.Use cases
      1. 3.1.Reduce firmware size
      2. 3.2.Reduce storage requirements for configuration bitstreams
      3. 3.3.Minimize size of interface assets
    4. 4.Media gallery

    Overview

    emCompress-Embed is a compression library  that uses common compression codecs to reduce the storage requirements for static data.  Having less data to store means the firmware image may fit into a smaller flash memory device. This can potentially decrease the required size of an embedded system, reducing cost.

    emCompress-Embed compresses the data on the host in advance. The compressed data is  then included in the firmware, along with a small and fast decompressor, so data can be decompressed on the fly, whenever needed.

    Key features

    • Decompression of static data on a embedded system

    • Automatic selection of the best codec for each data file

    • Fixed size of decompressor RAM usage, selected at data compression

    Memory footprint

    ROM

    The amount of ROM that emCompress uses for decompression, varies with the codec selected. The table below measures the total ROM required for a single decoder, including all supporting functions and excluding integrity checks on the target device.

    CodecROM
    STORE0.5 KByte
    RLE-PAR0.8 KByte
    HUFF1.3 KByte
    LZW1.0 KByte
    LZSS1.2 KByte
    LZJU901.3 KByte
    DEFLATE2.1 KByte

    Some of the codecs share common code. Hence, if your compressed bitstreams only use DEFLATE, the amount of ROM required is easily read off from the table. If you are using more than one codec in your application, the amount of ROM is less than the sum of all used codecs.

    Adding a table-driven CRC32 integrity check adds about 1.1 KB of code to the total emCompress ROM requirement. The following table lists the ROM requirements per codec.

    RAM

    The amount of RAM that emCompress uses is under complete control as it is specified at compression time. Typically, 2KB of temporary RAM for decompression is already enough for  good compression ratios, but even without temporary RAM, good compression ratios can be achieved in many cases. No static RAM is required and stack usage remains well below 512 bytes.

    Uncompressed Data (112 KB ≙ 100%)
    PropertiesemCompressed
    Compression codecLZJU90DEFLATE
    Data size30.5 KB
    27.3%
    23 KB
    20.6%
    Decompression RAM2 KB48 KB
    Decompression speed*3 MB/s2 MB/s

    * Running on Cortex-M4 @ 200 MHz

    emcompress_Comparison

    Use cases

    With emCompress-Embed data is compressed on the host. As a result the compressed data can be included as a byte array in a firmware image, along with the algorithm to decompress the data on demand.

    Reduce firmware size

    Software never shrinks in size. . During the lifecycle of embedded systems, customers expect firmware updates. Typically, firmware images  grow with each update, new features are added, existing features cannot be taken away., and at some point,new firmware risks exceeding available flash size.

    Compressing static data, anything which is stored in flash and copied into RAM, e.g. used to configure peripherals or sent to external systems, can free up some memory to make another firmware update possible.

    The decompression algorithms of emCompress-Embed are developed for a small ROM footprint. Thus emCompress-Embed can almost always reduce the overall firmware image size.

    The emCompress-Embed Tools test all available compression codecs and select the best fit. With knowledge of the available RAM for decompression, the codecs can be tuned to match the resources of the embedded system.

    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. In small systems without external memory the bitstream data is usually included in the firmware.

    emCompress-Embed can compress bitstreams to reduce storage requirements. On startup of the system, the firmware can decompress the bitstream. With decompression on the fly, the device can be immediately configured with decompressed chunks without having to  decompress the overall bitstream into RAM first.

    Minimize size of interface assets

    Embedded Systems with a user interface, such as a display or a web server, need to include assets to be displayed, such as web pages, images, or language files. If these assets are not stored in external memory, but are statically linked into the firmware, the impact to the firmware size can be huge. Sometimes firmware includes more data than code.

    emCompress-Embed can reduce the size of assets quite significantly. To minimize the overhead, the emCompress-Embed tools can be configured to select one compression codec which achieves the best results for all assets, instead of choosing the best codec for each individual one.

    When multiple assets need to be compressed, emCompress-Embed's group mode can achieve an even better result. By using group mode, all input data is linked together and compressed as a whole, enabling the compressor to compress the linked data much more effectively. This proves particularly effective when compressing small, static HTML files for embedded web servers. Decompression in group mode works essentially the same as ­single-file compression.

    Media gallery

    Graphic featuring a play button over a visual representation of a software project labeled "SEGGER emCompress." The text indicates it is a sample application project. The design includes a logo and a stylized illustration related to compression.

    emCompress — Example application | 2:43 min

    SEGGR - Video Thumbnail emCompress-ToGo

    emCompress-ToGo — Intro | 5:36 min

      View more...

    • User manual
    • Online documentation
    • List of downloads
    • Update notification
    • Pricing
    • Support
    • Silicon vendor resources

    全球总部

    德国: SEGGER Microcontroller GmbH

    地址: Ecolab-Allee 5
    40789 Monheim am Rhein, Germany
    电邮: info@segger.com
    电话: +49-2173-99312-0
    传真: +49-2173-99312-28

    网点分布

    中国:哲戈微系统科技(上海)有限公司

    地址: 中国上海市闵行区秀涟路133号
    大虹桥国际A 栋218室
    邮编201199
    电邮: china@segger.com
    电话: +86-133-619-907-60


    简易信息聚合

    通过ISO 9001认证

    ISO 9001

    30多年的嵌入式行业经验

    First-class embedded software tools since 1992
    • 版本说明
    • 免责声明
    • 行为准则
    • 隐私策略
    • 沪ICP备2022005181号
    • 沪公网安备 31011202014525号
    © 2025 SEGGER - 版权所有.

    您即将离开 segger.cn 而访问境外网站,是否继续?