[Zlib-devel] And now for something completely different
Mark Adler
madler at alumni.caltech.edu
Sat Dec 6 14:29:47 EST 2003
On Friday, December 5, 2003, at 11:42 PM, Matt H. wrote:
> Does nasa use any of the zlib code to compress data streams they
> send/receive
> from the rovers ? Or do they use something completely different ?
It's funny--I never thought to look until you asked. I have no direct
involvement in the rover software development.
What I did happen to know is that nearly all of the compression done by
the MER rover software is on images, since that is the vast majority of
the data sent from the rovers. The two compression methods used there
are a lossy wavelet compression method called ICER, and the LOCO
lossless image compression method.
So I went and grepped the rover software source code and found that LZO
by Markus Oberhumer is the only other compression method used for data
sent from the rovers. You can find a link to LZO on the zlib web site.
LZO is a very good choice, since the rover computers use a slow
processor in order to be radiation-hard (it's a 20 MHz IBM RISC
processor, an ancestor of the PowerPC). LZO is quite fast, doesn't use
much memory, and provides good compression--more than adequate for the
small fraction of the data that is not images.
I did however find that zlib, in particular inflate, is used in the
rover software, but not for data. At least I think it is--I couldn't
tell exactly how the module that uses zlib is compiled. The rover's
VxWorks real-time operating system looks like it uses inflate to
decompress itself when it loads from ROM. I can tell that the
remainder of the rover software is not compressed, since the whole
image is compressible by more than a factor of three. (Which makes me
wonder why we spent over twenty hours around the clock one day last
week loading a new version of the software on one of the spacecraft in
flight, when we could have in principle done it in less than one shift.)
mark
More information about the Zlib-devel
mailing list