2012-01-13 11 views
6

Alguien ha intentado utilizar la compresión zlib en un MSP430? ¿Tiene algún consejo sobre cómo compilar en la biblioteca para su uso en un proyecto MSP430 (estoy usando IAR Embedded Workbench)?compresión Zlib en MSP430

+1

¿Necesita absolutamente zlib? o solo un algoritmo de compresión? – Cyan

+0

http://stackoverflow.com/questions/3203321/lzw-compression-decompression-under-low-memory-conditions –

+0

http://stackoverflow.com/questions/3767640/compact-decompression-library-for-embedded-use –

Respuesta

1

He construido por una serie de objetivos, no específicamente MSP430, pero eso no debería importar. Es todo ISO C y depende solo de las llamadas de biblioteca estándar. Utiliza la asignación de memoria dinámica, por lo que necesitará un montón.

+0

Gracias por su respuesta. Pude construir un pequeño programa de prueba para el msp430 usando el algoritmo de desinflado, pero corrimos nuestro espacio de pila. Supongo que esto tiene que ver con el montón que mencionaste. ¿Puedes elaborar más sobre eso? – user1148476

+0

El requisito de pila es un problema diferente. Normalmente, asignarás una cantidad de pila en algún lugar de tu inicio de ejecución de C. Si está utilizando cualquier tipo de IDE y herramienta de configuración de proyecto, es probable que sea una opción para eso. En algunos casos, el proyecto asignará toda la memoria restante después de la pila y la asignación estática al montón, en otros puede que tenga que especificar explícitamente el tamaño del montón. De cualquier manera, mi punto sobre tener un montón es simplemente que lo necesitas. El éxito de zlib en su objetivo dependerá de tener suficiente memoria en general y de admitir la asignación de memoria dinámica. – Clifford

2

Solía ​​construir zlib como una prueba para el desarrollo de procesadores, pero a medida que el mundo comenzó a hacer la transición a 64 bits, su uso aleatorio de unsigned long y unsigned int sin mezclar cuidadosamente, etc, causaría estragos en los compiladores. Puede que se haya establecido ahora pero me alejé de usarlo.

lo necesita/quiere una tonelada de memoria, la msp430 es particularmente pequeña en el lado de RAM en comparación con algunos de la competencia.

que tienen un simulador msp430 puede utilizar http://github.com/dwelch67/msp430sim. que es fácil de configurar para tener muchos ram, más de lo que encontrará en un chip. Althogh zlib aún puede querer los 64k completos y no te dejará con ninguno. Solo necesito ver qué pasa. Tal vez tome esto y lo pruebe como prueba para mi simulador. En el simulador anterior o tal vez uno de mis otros, tengo una herramienta de compresión diferente que tiene una huella de memoria muy (relativamente) pequeña. No estoy seguro si necesita zlib específicamente o si solo necesita algún tipo de descompresión en general.

8

De acuerdo con MSP430 datasheets y Wikipedia article, no tiene suficiente RAM (tiene como mucho 16 KiB) incluso para la ventana deslizante (32 KiB). Por lo tanto, no puede usar ningún algoritmo de desinflado para MSP430. Teniendo en cuenta que ZLIB es una implementación de desinflado justo, también es cierto para ZLIB. Incluso si intenta escribir su propia implementación desinflada, no podrá hacerlo. Porque desinflar necesita 32 KiB para el diccionario deslizante y algo de memoria adicional para los árboles huffman. Eso es solo para la parte de descompresión. Para la compresión, necesita memoria adicional para el buscador de coincidencias de la cadena hash que es 7.5 * tamaño del diccionario = 240 KiB (según la implementación desinflada de 7zip). Si realmente necesita compresión para esa arquitectura pequeña, le aconsejo que mire algoritmos de compresión LZSS codificados por bytes personalizados. Son rápidos y livianos. Pero, no lo suficientemente fuerte como para competir con deflate debido a las diferencias de codificación especialmente entropía.

+0

Buena captura de eso, me salvó un poco de tiempo experimentando. –

+0

Tenga en cuenta que la mayoría de los algoritmos de compresión consumen muchos recursos. Algunos de ellos tienen alguna compensación entre la potencia de la CPU y la memoria (es decir, algunos usan mucha memoria con poca potencia de la CPU o viceversa). Incluso puede encontrar algunos algoritmos que usan hasta 13 GiB de memoria. [Aquí] (http://mattmahoney.net/dc/text.html) es una referencia de referencia que enumera el tiempo de procesamiento y el uso de la memoria para los compresores populares. –

+0

Correcto, lo sé, era el caso de no saber cuánto iba a querer y mi enfoque era experimentar en lugar de investigar. Gracias por el enlace que será bastante útil. –