Skip to content

Testing popular compression (and archiving) algorithms on ESP32

License

Notifications You must be signed in to change notification settings

umarmaajid/esp_compression

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 Compression

Progress

  • Compressed a txt file (see demo.txt) to .gz archive with a C/R (compression ratio) of ~2.25
  • Inflated the .gz archive back to the original file on ESP32
  • Compressed a .bin file (e.g Core Dump generated from ESP32 on panic) to .gz archive with a C/R of 5.00
  • .gz archive can be extracted on a host machine (Linux, Windows)
  • With a memory usage of 27K at peak, zlib gave a C/R of 2.38 for demo.txt
  • Config for above results -> window_bits: 12 | mem_level: 3 (See zlib Manual - Advanced Functions)
  • WIP: Binary files compression (e.g. OTA images, Core Dump images)
  • Compressed a txt file (see demo.txt) to .br file with a C/R of ~2.17
  • Decompressed the .br file on ESP32
  • Pros: Fast Compression and decompression (about 8x faster than zlib)
  • Cons: High binary size (about 600K of flash is used for brotli)
  • Cons: High memory usage for compression and decompression (about 50-60K at peak!)
  • Tried compressing the file in chunks (rather than all at once as given in example), but C/R fell with no significant decrease in memory usage

Miscellaneous

  • Compiled miniz but could not get it working; always seem to run out of RAM
  • WIP: Find more compression libraries with embedded systems support
  • Note: Flash memory has limited read/write cycles. Thus, file systems with wear-levelling should be used.

About

Testing popular compression (and archiving) algorithms on ESP32

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.0%
  • Roff 1.8%
  • Other 0.2%