有人尝试过在MSP430上使用zlib压缩吗?关于如何编译到库中以便在MSP430项目中使用(我正在使用IAR嵌入式工作台),您有什么建议吗?
发布于 2012-01-14 18:32:35
根据MSP430 datasheets和Wikipedia article的说法,即使是滑动窗口(32 KiB),你也没有足够的内存(它最多有16 KiB)。因此,您不能对MSP430使用任何放气算法。考虑到ZLIB是一个公正的deflate实现,对ZLIB也是如此。即使您尝试编写自己的deflate实现,也不会成功。因为,deflate需要32 KiB的滑动字典和一些额外的内存来存储它的哈夫曼树。这只是解压部分。对于压缩,您需要额外的内存用于哈希链匹配查找器,它是7.5 *字典大小= 240 KiB (根据7zip的deflate实现)。如果您确实需要对小型体系结构进行压缩,我建议您查看自定义字节编码的LZSS压缩算法。它们速度快,重量轻。但是,由于特别是熵编码的差异,它还不足以与deflate竞争。
发布于 2012-01-14 06:51:08
我曾经构建zlib作为处理器开发的测试,但当世界开始过渡到64位时,他们随意使用无符号的长整型和无符号整数,在没有仔细类型转换的情况下混合使用,等等会对编译器造成严重破坏。它现在可能已经稳定下来了,但我离开了使用它。
它确实需要/想要大量的内存,与一些竞争对手相比,msp430在ram端特别小。
我有一个你可以使用http://github.com/dwelch67/msp430sim的msp430模拟器。它很容易配置为有很多ram,比你在芯片中找到的更多。尽管zlib可能仍然需要完整的64k,但不会给你留下任何东西。只需要看看会发生什么。也许我会亲自试一下,作为我的模拟器的测试。在上面的模拟器或我的其他模拟器上,我使用了一个不同的压缩工具,它的内存占用非常(相对)小。不确定你是特别需要zlib,还是一般情况下你只需要某种解压。
发布于 2012-01-14 04:47:19
我已经为许多目标构建了它,并不是特别针对MSP430,但这应该无关紧要。它完全是ISO C语言,并且只依赖于标准库调用。它使用动态内存分配,所以你需要一个堆。
https://stackoverflow.com/questions/8856925
复制相似问题