6

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

4

3 回答 3

9

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

于 2012-01-14T10:32:35.047 回答
2

我曾经构建 zlib 作为处理器开发的测试,但随着世界开始过渡到 64 位,他们随意使用 unsigned long 和 unsigned int 以及在没有仔细类型转换的情况下进行混合等会对编译器造成严重破坏。它现在可能已经安定下来,但我不再使用它。

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

我有一个 msp430 模拟器,您可以使用http://github.com/dwelch67/msp430sim。它很容易配置成有很多内存,比你在芯片中找到的要多。Althogh zlib 可能仍然想要完整的 64k 并且不会留下任何东西。只需要看看会发生什么。也许我会接受这个并自己尝试作为我的模拟器的测试。在上面的模拟器或者我的其他模拟器中,我使用了一个不同的压缩工具,它的内存占用非常(相对)小。不确定您是否特别需要 zlib,或者您是否只需要某种解压缩。

于 2012-01-13T22:51:08.403 回答
1

我已经为许多目标构建了它,而不是专门为 MSP430,但这应该无关紧要。它都是 ISO C 并且仅依赖于标准库调用。它使用动态内存分配,因此您需要一个堆。

于 2012-01-13T20:47:18.673 回答