内存使用量小的 ZLIB

ZLIB with small memory usage

我正在开发嵌入式设备 (STM32),剩余 < 5kb 个空闲闪存。我正在尝试使用 zlib 库压缩 string。 我创建了函数 HERE 并且它 returns -2 (Z_STREAM_ERROR).

我做了什么:

然后我在 deflate.c 上找到了这个,我不能将 MAX_WBITS 降低到 8:

if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
        windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
        strategy < 0 || strategy > Z_FIXED || (windowBits == 8 && wrap != 1)) {
        return Z_STREAM_ERROR;
}
if (windowBits == 8) windowBits = 9;  /* until 256-byte window bug fixed */

然后我将它设置为 MAX_MEM_LEVEL1MAX_WBITS8 但是当我尝试编译它时总是 returns region FLASH overflowed by 15960 bytes.看来我 运行 内存不足。

然后我尝试了另一个例子:

结果还是一样,region FLASH overflowed by 15960 bytes。 有没有其他方法可以用只剩下 5kb 的 FLASH 内存来做到这一点?

注:

没有。 deflate 所需的最小 RAM 量为 9K。您可以尝试使用不同的压缩器,例如 lz4.

deflate 代码本身在我的机器上编译为 33K (x86_64 ISA),速度优化。我尝试使用激进的 space 优化进行编译,将其降低到 25K。