2012-01-13 10 views
6

Czy ktoś próbował użyć kompresji zlib na MSP430? Czy masz porady dotyczące kompilacji biblioteki do użycia w projekcie MSP430 (używam IAR Embedded Workbench)?Kompresja Zlib na MSP430

+1

Czy potrzebujesz absolutnie ZliB? czy tylko algorytm kompresji? – 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 –

Odpowiedz

1

Zbudowałem go dla wielu celów, a nie specjalnie MSP430, ale to nie powinno mieć znaczenia. Jest to wszystko ISO C i zależy tylko od standardowych wywołań biblioteki. Używa dynamicznej alokacji pamięci, więc potrzebujesz sterty.

+0

Dzięki za odpowiedź. Udało mi się zbudować mały program testowy dla msp430 przy użyciu algorytmu deflate, ale uruchomiłem naszą przestrzeń stosu. Zakładam, że ma to związek z kupą, o której wspomniałeś. Czy możesz rozwinąć więcej na ten temat? – user1148476

+0

Wymagania dotyczące stosu to inny problem. Zwykle przydzielasz ilość stosu gdzieś w uruchomieniu środowiska wykonawczego C. Jeśli używasz dowolnego rodzaju IDE i narzędzia do konfiguracji projektu, jest to opcja do tego. W niektórych przypadkach projekt przydzieli całą pozostałą pamięć po stosie i statyczną alokację do sterty, w innych może być konieczne jawne określenie wielkości sterty. Tak czy inaczej, mój punkt widzenia o kupie jest tylko, że potrzebujesz. Powodzenie zlib na twoim celu będzie zależeć od posiadania wystarczającej ilości pamięci i obsługi dynamicznego przydzielania pamięci. – Clifford

2

Kiedyś budowałem zlib jako test dla rozwoju procesora, ale ponieważ świat zaczął przechodzić na 64-bitowe, ich przypadkowe użycie niepodpisanej długiej i niepodpisanej int i mieszanie bez starannego typowania, spowodowałoby spustoszenie w kompilatorach. Być może już się ustatkował, ale zrezygnowałem z jego używania.

potrzebuje/chce mnóstwo pamięci, msp430 jest szczególnie mały po stronie pamięci RAM w porównaniu do niektórych konkurencji.

Mam symulator msp430, którego można użyć http://github.com/dwelch67/msp430sim. który jest łatwy do skonfigurowania, aby mieć dużo pamięci RAM, więcej niż znajdziesz w chipie. Althogh zlib może nadal chcieć pełnego 64k i nie zostawiać cię z żadną. Wystarczy zobaczyć, co się stanie. Może wezmę to i spróbuję sam jako test na mój symulator. Na powyższym symulatorze lub może jednym z moich innych używam innego narzędzia kompresji, które ma bardzo (stosunkowo) mały ślad pamięci. Nie jestem pewien, czy potrzebujesz zlib specjalnie, czy po prostu potrzebujesz jakiejś dekompresji w ogóle.

8

Według MSP430 datasheets i Wikipedia article, nie masz wystarczającej ilości pamięci RAM (ma ona najwyżej 16 KiB) nawet dla okna przesuwnego (32 KiB). Tak więc nie można użyć żadnego algorytmu deflacji dla MSP430. Biorąc pod uwagę ZLIB, jest to po prostu deflacja, co jest prawdą również dla ZLIB. Nawet ty próbujesz napisać własną implementację deflacji, której nie możesz osiągnąć. Ponieważ deflate potrzebuje 32 KiB do przesuwania słownika i dodatkowej pamięci dla drzewek Huffmana. To tylko dla części dekompresyjnej. Do kompresji potrzebna jest dodatkowa pamięć dla wyszukiwacza dopasowania łańcucha haszującego, która wynosi 7,5 * rozmiar słownika = 240 KiB (zgodnie z implementacją deflate 7zip). Jeśli naprawdę potrzebujesz kompresji dla tej małej architektury, radzę przyjrzeć się niestandardowym algorytmom kompresji LZSS. Są szybkie i lekkie. Ale nie wystarczająco silny, aby konkurować z deflate ze względu na różnice w kodowaniu entropii.

+0

Dobrze to złapałem, zaoszczędziłem trochę czasu na eksperymentowaniu. –

+0

Należy pamiętać, że większość algorytmów kompresji jest zasobem głodnym. Niektóre z nich mają pewną kompromis między mocą procesora a pamięcią (to znaczy niektóre zużywają dużo pamięci przy niewielkiej mocy procesora lub na odwrót). Można nawet znaleźć algorytmy, które wykorzystują do 13 GiB pamięci. [Tutaj] (http://mattmahoney.net/dc/text.html) jest referencyjnym punktem odniesienia, który zawiera zarówno czas przetwarzania, jak i zużycie pamięci dla popularnych kompresorów. –

+0

Wiem, że to był przypadek, gdy nie wiedziałem, ile będzie chciał, a moim podejściem było eksperymentowanie zamiast badań. Dzięki za link, który będzie całkiem przydatny. –