Embedded MSP430上的Zlib压缩

Embedded MSP430上的Zlib压缩,embedded,compression,zlib,msp430,Embedded,Compression,Zlib,Msp430,有人尝试在MSP430上使用zlib压缩吗?对于如何编译到MSP430项目中使用的库(我使用的是IAR Embedded Workbench),您有什么建议吗 我已经为许多目标构建了它,不是专门针对MSP430,但这并不重要。它都是ISO C,只依赖于标准库调用。它使用动态内存分配,因此您需要一个堆。我曾经构建zlib作为处理器开发的测试,但随着世界开始过渡到64位,他们随意使用无符号长和无符号整数,以及混合使用而不小心进行类型转换等,都会对编译器造成严重破坏。现在它可能已经稳定下来了,但我放弃

有人尝试在MSP430上使用zlib压缩吗?对于如何编译到MSP430项目中使用的库(我使用的是IAR Embedded Workbench),您有什么建议吗

我已经为许多目标构建了它,不是专门针对MSP430,但这并不重要。它都是ISO C,只依赖于标准库调用。它使用动态内存分配,因此您需要一个堆。

我曾经构建zlib作为处理器开发的测试,但随着世界开始过渡到64位,他们随意使用无符号长和无符号整数,以及混合使用而不小心进行类型转换等,都会对编译器造成严重破坏。现在它可能已经稳定下来了,但我放弃了使用它

它确实需要/想要大量内存,与竞争对手相比,msp430在ram方面特别小


我有一个msp430模拟器,你可以使用。这是很容易配置有大量的ram,比你会发现在一个芯片。虽然zlib可能仍然想要全部64k,但不会给您留下任何。我只是想看看会发生什么。也许我会把这个拿出来,自己试试,作为我模拟器的测试。在上面的模拟器或者我的其他模拟器上,我使用了一种不同的压缩工具,它的内存占用非常(相对)小。不确定您是否特别需要zlib,或者是否只需要某种类型的解压缩

根据和,您没有足够的RAM(最多16 KiB),即使只用于滑动窗口(32 KiB)。因此,您不能对MSP430使用任何deflate算法。考虑到ZLIB是一个just deflate实现,对ZLIB也是如此。即使您尝试编写自己的deflate实现,也无法成功。因为,deflate需要32kib的滑动字典和一些额外的哈夫曼树内存。那只是减压部分。对于压缩,您需要为哈希链匹配查找器提供额外的内存,它是7.5*字典大小=240 KiB(根据7zip的deflate实现)。如果您真的需要为这个小型体系结构进行压缩,我建议您查看自定义字节编码的LZSS压缩算法。它们速度快,重量轻。但是,由于熵编码的差异,其强度不足以与deflate竞争。

谢谢您的回答。我能够使用deflate算法为msp430构建一个小的测试程序,但是运行了我们的堆栈空间。我想这与你提到的堆有关。您能详细说明一下吗?堆栈要求是另一个问题。通常,您将在C运行时启动时的某个位置分配一定数量的堆栈。如果您使用的是任何类型的IDE和项目配置工具,那么很可能就是一个选项。在某些情况下,项目将在堆栈和静态分配后将所有剩余内存分配给堆,在其他情况下,您可能必须显式指定堆大小。不管怎样,我关于拥有堆的观点只是你需要一个。zlib在您的目标上的成功将取决于总体上拥有足够的内存并支持动态内存分配。您是否绝对需要zlib?或者只是一个压缩算法?我其实不需要zlib,它只是一个可以在内存有限的嵌入式平台上使用的压缩算法,也可以在Windows平台上使用7-zip或WinZip之类的工具进行解码。很好地理解了这一点,节省了我一些实验时间。记住,大多数压缩算法都需要大量的资源。它们中的一些在CPU功率和内存之间有一些折衷(即,有些使用大量内存,但CPU功率很小,反之亦然)。您甚至可以找到一些使用高达13Gib内存的算法。是一个参考基准,它列出了流行压缩器的处理时间和内存使用情况。是的,我知道,这是一个不知道需要多少的情况,我的方法是实验而不是研究。谢谢你的链接,这将是非常有用的。