nodemcu-firmware/components/uzlib
Johny Mattsson f123d46209 Add ESP32C3 support/coexistence.
The uzlib and parts of Lua had to be switched over to use the
C standard int types, as their custom typedefs conflicted with
RISC-V toolchain provided typedefs.

UART console driver updated to do less direct register meddling
and use the IDF uart driver interface for setup. Still using our
own ISR rather than the default driver ISR. Down the line we
might want to investigate whether the IDF ISR would be a better
fit.

Lua C modules have been split into common and ESP32/ESP32-S
specific ones. In the future there might also be ESP32-C3
specific modules, which would go into components/modules-esp32c3
at that point.

Our old automatic fixup of flash size has been discarded as it
interferes with the checksumming done by the ROM loader and
results in unbootable systems. The IDF has already taken on
this work via the ESPTOOL_FLASHSIZE_DETECT option, which handles
this situation properly.
2021-08-11 17:32:47 +10:00
..
CMakeLists.txt idf4: overhaul to new build system, part 1 of 3 2021-07-15 16:27:03 +10:00
README.md LFS support for ESP32 NodeMCU (#2801) 2019-07-22 19:13:43 +10:00
crc32.c LFS support for ESP32 NodeMCU (#2801) 2019-07-22 19:13:43 +10:00
uzlib.h Add ESP32C3 support/coexistence. 2021-08-11 17:32:47 +10:00
uzlib_deflate.c Add ESP32C3 support/coexistence. 2021-08-11 17:32:47 +10:00
uzlib_inflate.c Add ESP32C3 support/coexistence. 2021-08-11 17:32:47 +10:00

README.md

uzlib - Deflate/Zlib-compatible LZ77 compression library

This is a heavily modified and cut down version of Paul Sokolovsky's uzlib library. This library has exported routines which

  • Can compress data to a Deflate-compatible bitstream, albeit with lower compression ratio than the Zlib Deflate algorithm as a static Deflate Huffman tree encoding is used for bitstream). Note that since this compression is in RAM and requires ~4 bytes per byte of the input record, should only be called for compressing small records on the ESP8266.

  • Can decompress any valid Deflate, Zlib, and Gzip (further called just "Deflate") bitstream less than 16Kb, and any arbitrary length stream compressed by the uzlib compressor.

uzlib aims for minimal code size and runtime memory requirements, and thus is suitable for embedded systems and IoT devices such as the ESP8266.

uzlib is based on:

  • tinf library by Joergen Ibsen (Deflate decompression)
  • Deflate Static Huffman tree routines by Simon Tatham
  • LZ77 compressor by Paul Sokolovsky provided my initial inspiration, but I ended up rewriting this following RFC 1951 to get improved compression performance.

The above 16Kb limitation arises from the RFC 1951 use of a 32Kb dictionary, which is impractical on a chipset with only ~40 Kb RAM avialable to applications.

The relevant copyright statements are provided in the source files which use this code.

uzlib library is licensed under Zlib license.