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
Odpowiedz
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.
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
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
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.
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.
Dobrze to złapałem, zaoszczędziłem trochę czasu na eksperymentowaniu. –
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. –
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. –
- 1. Prosta kompresja i dekompresja stringów Cli Zlib
- 2. Kompresja Zlib Używanie klas Deflate i Inflate w Javie
- 3. Pisanie wbudowanej aplikacji dla msp430?
- 4. CMake zlib kompilacja na Windows
- 5. Maksymalny rozmiar stosu potrzebny dla programu C na MSP430
- 6. doładowania IO Stream i ZLib przyspieszyć
- 7. Dlaczego cURL używa zlib?
- 8. Jak wygląda nagłówek zlib?
- 9. Jak zlib skompresować QByteArray?
- 10. zlib z GHC
- 11. Upadek dekompresji zlib
- 12. kompresja maven yui na wojnie: wojna
- 13. jak połączyć bibliotekę zlib
- 14. Ruby Mechanize Zlib :: BufError
- 15. Klient kompresja danych klienta
- 16. 7zip Najszybsza kompresja LZMA2
- 17. Kompresja SDCH dla węzła?
- 18. Kompresja wielowątkowa w C#
- 19. Kompresja WCF REST
- 20. Kompresja obrazu JPEG
- 21. Kompresja memcache - dobra/zła?
- 22. Android HttpURLConnection: kompresja gzip
- 23. Kompresja archiwum zip
- 24. Kompresja gzip Web Api
- 25. Kompresja danych WebSocket
- 26. Kompresja bezpośrednio ze strumienia
- 27. nie można zainstalować Dystrybucja, zlib
- 28. Błąd: "zlib" jest nieprawidłowym poleceniem
- 29. Nieoczekiwany koniec strumienia wejściowego ZLIB
- 30. Jak nadymać częściowy plik zlib
Czy potrzebujesz absolutnie ZliB? czy tylko algorytm kompresji? – Cyan
http://stackoverflow.com/questions/3203321/lzw-compression-decompression-under-low-memory-conditions –
http://stackoverflow.com/questions/3767640/compact-decompression-library-for-embedded-use –