2012-01-13 3 views
6

Кто-нибудь пытался использовать сжатие zlib на MSP430? У вас есть какие-либо советы о том, как скомпилировать библиотеку для использования в проекте MSP430 (я использую IAR Embedded Workbench)?Сжатие Zlib на MSP430

+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-разрядное, их бессистемное использование беззнакового длинного и беззнакового int и микширования без тщательного приведения типов и т. Д. Могло бы нанести ущерб компиляторам. Возможно, он успокоился, но я ушел от него.

Требуется/требуется тонна памяти, msp430 особенно мала на стороне плунжера по сравнению с некоторыми конкурентами.

У меня есть симулятор msp430, вы можете использовать http://github.com/dwelch67/msp430sim. который легко настроить, чтобы иметь много барана, больше, чем вы найдете в чипе. Althogh zlib все еще может получить полный 64k и не оставить вас с кем-либо. Просто нужно посмотреть, что произойдет. Может быть, я возьму это и попробую сам в качестве теста для моего симулятора. На вышеупомянутом симуляторе или, возможно, в одном из моих других, у меня есть другой инструмент сжатия, который имеет очень (относительно) небольшой объем памяти. Не уверен, что вам нужен zlib специально, или вам просто нужна декомпрессия вообще.

8

В соответствии с MSP430 datasheets и Wikipedia article у вас недостаточно ОЗУ (оно не более 16 KiB) даже для раздвижного окна (32 KiB). Таким образом, вы не можете использовать алгоритм дефляции для MSP430. Учитывая, что ZLIB - это просто дефлятная реализация, это верно и для ZLIB. Даже вы пытаетесь написать свою собственную дефляционную реализацию, которой вы не сможете добиться. Потому что для дефлята требуется 32 KiB для скользящего словаря и дополнительная память для деревьев хаффмана. Это только для декомпрессионной части. Для сжатия вам нужна дополнительная память для поиска ссылок на хэш-цепочку, размер словаря 7.5 * = 240 KiB (в соответствии с реализацией сглаживания 7zip). Если вам действительно нужно сжатие для этой небольшой архитектуры, я советую посмотреть на алгоритмы сжатия LZSS, закодированные в байтах. Они быстрые и легкие. Но, недостаточно сильные, чтобы конкурировать с дефлятом из-за особенно энтропийных различий в кодировании.

+0

Хороший улов на этом, спас меня некоторое время, экспериментируя. –

+0

Имейте в виду, что большинство алгоритмов сжатия являются ресурсоемкими. Некоторые из них имеют некоторый компромисс между мощностью процессора и памятью (т. Е. Некоторые используют большую память с небольшим количеством мощности ЦП или наоборот). Вы даже можете найти некоторые алгоритмы, которые используют до 13 ГБ памяти. [Здесь] (http://mattmahoney.net/dc/text.html) является эталонным эталоном, в котором указано как время обработки, так и использование памяти для популярных компрессоров. –

+0

Правильно, я знаю, что это был случай, когда я не знал, сколько он хочет, и мой подход заключался в эксперименте вместо исследования. Спасибо за ссылку, которая будет весьма полезна. –

Смежные вопросы