Compression for small-memory devices
- From: Thomas Kindler <mail+news@xxxxxxxxxxxx>
- Date: Fri, 17 Oct 2008 13:48:28 +0200
Hi!
I'm trying to solve a compression problem for an embedded microcontroller application. I have an Atmel AVR, which has 16kB of Flash, but only one kB of RAM.
The microcontroller only needs to decompress the stream from Flash memory, the compression is done on a normal PC.
The data is highly redundant, so a LZ coding scheme seems optimal.
The problem is, that all the LZ algorithms I saw need some RAM space to hold a sliding window on the decoder side -- LZ codes the offset/length pairs in respect to the decoded stream. The repeating blocks of my data are relatively large (~300 bytes), so I'd need a window of this size, which I don't want to spend.
Is there some LZ variant, that doesn't need a sliding window? I could imagine an algorithm that codes offset/length pairs for repetitions as adresses of the compressed data. (i.e. "hey, here comes a part you already decompressed. just decompress X bytes again, reading from address Y."). The decompressor would then need to recurse into the decompression step, instead of just copying from the sliding window.
I don't have the memory to decompress the whole data, and don't want to use a big window of decompressed data. I _can_ spend a few 100 bytes for a call stack, and I have random access to the compressed data in flash.
Has this been done already? Or is there something I overlooked?
--
"Zuse, Zuse" sprach die Tante, als das Rechenzimmer brannte.
.
- Follow-Ups:
- Re: Compression for small-memory devices
- From: Ross Ridge
- Re: Compression for small-memory devices
- From: Jim Leonard
- Re: Compression for small-memory devices
- From: Willem
- Re: Compression for small-memory devices
- From: John Reiser
- Re: Compression for small-memory devices
- Prev by Date: Re: Public release Adams Platform
- Next by Date: Re: Compression for small-memory devices
- Previous by thread: jpeg-ls
- Next by thread: Re: Compression for small-memory devices
- Index(es):
Relevant Pages
|