有没有可以压缩文件的IC?
我现在有一些传感器网络产生的文本数据,需要通过手机网络上传到ftp服务器上存储。
出于节省带宽的考虑,希望能在上传之前将文本数据压缩。
如果限制文本文件的大小在几十KB比如50KB或者更小,有没有可能使用MCU比如STM32F4
采用deflate算法直接压缩?如果不行的话,有没有可以做数据流压缩的硬件?
多谢。
暂未听说过可以直接压缩数据流的商用IC。但是简单的流压缩似乎可以用FPGA搞。
可以用MCU来进行数据压缩,但需要自己移植压缩算法,并且评估内部RAM/频率是否够。
http://www.aha.com/data-compression/
这个可以用来压缩视频和图像,性能很可观,价格未知。但是对我的应用来说太大才小
用了。
fpga压缩吧。简单的一些算法。其实很繁琐
可以试试 LZO
http://www.oberhumer.com/opensource/lzo/
数据压缩对内存的要求比较高,STM32 内存太少只能使用些压缩率不太高的算法。
这个LZO看起来不错,250kb在老奔腾上面压缩只要1/20秒。
这个如果对实时性要求不高的话
可以用原来CPU处理,查一下算法的规范或论文能估算出RAM的用量
不行就考虑扩展一些RAM,来运行一些简单的压缩算法
这东西用FPGA或专用硬件会增加不少成本
今天做了进一步的研究。如果在嵌入式里面实现的话,LZW目前用的比较多。LZO从压缩速度,内存要求和压缩比来说的都差不多是最好的。但是LZO的许可比较麻烦,商用的话需要联系作者获得授权,但是很诡异是作者联系不上。
STM32高端些的型号应该有外部扩展总线的吧,挂一片SRAM,
内存应该差不多了吧,不过SRAM不便宜,得省着点儿用。
不知道lz要压的数据是啥样的?
如果有大量重复的数据,用RLE之类的简单算法就可以
下面是一段样本:
1:05:37 1 sensor#1 1 -16.4
2:05:37 2 sensor#2 2 -12.4
3:05:37 3 sensor#3 1 -13.8
4:05:37 4 sensor#4 2 -14
5:05:37 5 sensor#2 1 -17.5
6:05:37 1 sensor#1 2 -15.8
7:05:37 2 sensor#5 1 -14.6
8:05:37 3 sensor#3 2 -12.9
9:05:37 4 sensor#4 1 -17.1
10:05:37 5 sensor#2 2 -16.7
11:05:37 1 sensor#1 1 -16.2
12:05:37 2 sensor#5 2 -17.7
1:05:37 3 sensor#3 1 -13.3
2:05:37 4 sensor#4 2 -16.2
3:05:37 5 sensor#2 1 -17.2
4:05:37 1 sensor#1 2 -12.3
5:05:37 2 sensor#5 1 -17.5
6:05:37 3 sensor#3 2 -15.1
7:05:37 4 sensor#4 1 -16
8:05:37 5 sensor#2 2 -15.2
9:05:37 1 sensor#1 1 -12.2
10:05:37 2 sensor#5 2 -12.5
11:05:37 3 sensor#3 1 -12.8
12:05:37 4 sensor#4 2 -16.9
重复的部分主要是sensor id,实际中会设置成sensor#x或者某些个性化的名字,反复出
现在每个条目里面。然后是时间,以及传感器的值,绝大部分时候前两位都不会变化。
我用zip默认的defalte压缩了一下,可以压到1/7到1/8。RLE可能效果不会太好,因为连
续的值不多。