2012-01-13 21 views
6

MSP430에서 zlib 압축을 시도한 사람이 있습니까? MSP430 프로젝트에서 사용할 라이브러리를 컴파일하는 방법에 대한 조언이 있습니까 (IAR Embedded Workbench를 사용하고 있습니까)?MSP430에서 Zlib 압축

+1

절대적으로 zlib가 필요합니까? 또는 단지 압축 알고리즘? – 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 –

답변

1

저는 MSP430이 아닌 많은 대상을 대상으로 작성했지만 중요한 것은 아닙니다. ISO C이며 표준 라이브러리 호출에만 의존합니다. 동적 메모리 할당을 사용하므로 힙이 필요합니다.

+0

답변 해 주셔서 감사합니다. 나는 수축 알고리즘을 사용하여 msp430을위한 작은 테스트 프로그램을 만들 수 있었지만 우리의 스택 공간을 돌렸다. 나는 이것이 당신이 언급 한 힙과 관련이 있다고 가정하고 있습니다. 그것에 대해 더 자세히 설명해 주시겠습니까? – user1148476

+0

스택 요구 사항은 다른 문제입니다. 일반적으로 C 런타임 시작시 어딘가에 스택 양을 할당합니다. 어떤 종류의 IDE 및 프로젝트 구성 도구를 사용하는 경우에는 그 옵션이 좋습니다. 경우에 따라 스택 및 정적 할당 후 남아있는 모든 메모리를 힙에 할당하고, 나머지는 명시 적으로 힙 크기를 지정해야 할 수도 있습니다. 어느 쪽이든, 힙을 갖는 것에 대한 요점은 단지 하나가 필요하다는 것입니다. 목표에 대한 zlib의 성공은 일반적으로 충분한 메모리가 있고 동적 메모리 할당을 지원하는 데 달려 있습니다. – Clifford

2

저는 프로세서 개발을위한 테스트로 zlib을 만들었지 만, 64 비트로의 전환이 시작됨에 따라 신중한 typecasting 등을하지 않고도 서명되지 않은 long 및 unsigned int를 사용하고 믹싱하는 것이 컴파일러를 혼란에 빠뜨릴 수 있습니다. 그것은 지금 아래로 침전했을지도 모른다. 그러나 나는 그것을 사용하는 것으로부터 멀리 걸었다.

메모리가 필요/필요하다면 msp430은 경쟁 제품에 비해 RAM 측면에서 특히 작습니다.

나는 http://github.com/dwelch67/msp430sim을 사용할 수있는 msp430 시뮬레이터가 있습니다. 이것은 많은 램을 갖도록 구성하기 쉽고 칩에서 찾을 수있는 것보다 많습니다. Althogh zlib는 여전히 64k를 원하고 어떤 것도 남기지 않을 것입니다. 무슨 일이 일어나는지 보셔야합니다. 어쩌면 내가 이것을 가지고 시뮬레이터의 테스트로서 직접 시험해 볼 것이다. 위의 시뮬레이터 또는 어쩌면 내 다른 사람 중 하나가 매우 (상대적으로) 작은 메모리 풋 프린트가 사용되는 다른 압축 도구를 사용했습니다. zlib가 구체적으로 필요한지 또는 일반적인 종류의 압축 해제가 필요한지 확실하지 않습니다.

8

MSP430 datasheetsWikipedia article에 따르면 슬라이딩 윈도우 (32 KiB)의 경우에도 충분한 RAM (최대 16 KiB)이 없습니다. 따라서 MSP430에 대한 수축 알고리즘을 사용할 수 없습니다. ZLIB가 ZLIB에서도 마찬가지입니다. 당신이 성공할 수없는 자신의 수축 구현을 작성하려고 시도합니다. 왜냐하면 수축력은 사전을 슬라이딩하기 위해 32 KiB가 필요하고 그것을 위해 추가 메모리가 필요하기 때문입니다. 압축 해제 부분에만 해당됩니다. 압축의 경우 7.5 * 사전 크기 = 240 KiB 인 해시 체인 일치 검색에 추가 메모리가 필요합니다 (7zip의 수축 구현에 따라). 작은 아키텍처에서 압축이 정말로 필요하다면 맞춤 바이트 코딩 된 LZSS 압축 알고리즘을 살펴 보도록 조언합니다. 그들은 빠르고 가볍습니다. 그러나, 특히 엔트로피 코딩 차이로 인해 수축과 경쟁 할 정도로 강하지는 않습니다.

+0

그걸 잘 파악하면 실험 시간을 좀 절약 할 수있었습니다. –

+0

압축 알고리즘의 대부분은 리소스가 부족합니다. 그 중 일부는 CPU 전력 대 메모리 (즉, 일부는 소량의 CPU 전력으로 많은 메모리를 사용하거나 그 반대의 경우)와 약간의 절충을합니다. GiB 메모리를 최대 13 개까지 사용할 수있는 알고리즘도 있습니다. [Here] (http://mattmahoney.net/dc/text.html)은 널리 사용되는 압축기의 처리 시간과 메모리 사용량을 모두 나열하는 참조 벤치 마크입니다. –

+0

맞아요, 나는 그것이 원하는 것이 얼마나되는지 알지 못하는 경우 였고, 나의 접근 방식은 연구 대신 실험하는 것이 었습니다. 매우 유용한 링크에 감사드립니다. –

관련 문제