|
Архиватор в микроконтроллере с малым требованием к ресурсам, сделать в МК архив, который на PC можно будет штатно разжать |
|
|
|
Nov 22 2016, 08:58
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Здравствуйте!
Имеется кучка файлов, которые можно поделить на две группы 1) длинные текстовые- например, лог 6 мегабайт ежедневно 2) куча коротких текстовых - например, ежедневно директория с 1440 файлами по 200 байт (ежеминутные данные)
Хочу их заархивировать с целью: группа1 - чтобы уменьшить размер (важно при передаче) группа2 - чтобы уменьшить количество файлов, просто склейка в один файл без сжатия уже подходит (то есть что-то типа tar уже достаточно) - важно для хранения.
Архивация происходит периодически и не в реальном времени- например, раз в сутки для уже собранных файлов. То есть изменять архив не нужно и скорость работы функции не важна, фоновая задача. Обязательное требование- чтобы на компьютере это можно было разжать, используя доступные в интернете стандартные архиваторы, а не писать свой распаковщик. Я точно не буду применять архиватор в нестандартный архив. И еще крайне желательно, чтобы задача не требовала больших объемов памяти (временных буферов) во время работы. При этом скорость работы практически не важна.
Вопрос: есть ли примеры решения таких задач? аппноты какие-нибудь, блоги, линки.... Обычно на МК решается обратная задача - разжать (прошивку, образ итд), да и то из нестандартного формата, а вот упаковщики в "стандартный" архив как-то не попадаются.
Ни и если кто-то может рассказать про личный опыт, что за архиватор применяли на МК, буду безмерно счастлив.
конкретно буду реализовывать на STM32F4, если это важно
|
|
|
|
|
 |
Ответов
|
Nov 25 2016, 09:13
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Про контейнер- альтернативу использованию тара. Как просто контейнер- ZIP формат без сжатия выглядит гораздо приятней (заголовок короче и файл занимает столько сколько занимает). В минусах что нужно обязательно CRC32 считать и (вроде бы обязательно) перепаковывать при добавке нового файла. И еще документирован формат прекрасно- одного того "APPNOTE.TXT - .ZIP File Format Specification", на который я давал ссылку, достаточно для написания своего "упаковщика с уровнем сжатия 0". Такое ощущение, что для меня писали, все ответы прямо в спецификации есть. Цитата 4.1.3 Data compression MAY be used to reduce the size of files placed into a ZIP file, but is not required. ..... 4.1.7 Files MAY be placed within a ZIP file uncompressed or stored. The term "stored" as used in the context of this document means the file is copied into the ZIP file uncompressed. кто-то развлекался? где незамеченные мной подводные камни? вот тут еще красивей нарисовано что к чему, отличное дополнение у чисто текстовому описанию основной спецификации. Сейчас поигрался- получается что зип-контейнер (без компрессии) на 10 файлов по 175 байт занимает 3854 байта, это почти в 3 раза меньше чем длина тара для них же (10752 байта).
|
|
|
|
|
Nov 25 2016, 10:15
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(ViKo @ Nov 25 2016, 12:00)  10 * 175 = 1750. "Выигрыш" ... неочевиден. Может, лучше придумать свой компактный формат логов? Типа, не писать нули подряд, записывать дельту, и т.п. ViKo, Вы что имеете в виду? Я не понял что с чем Вы сравнили. 10 файлов без контейнера занимает не 1750 байт, а 10 кластеров на диске (в лучшем случае- 20 килобайт, в худшем/стандартном - 320 килобайт) Цитата(gerber @ Nov 25 2016, 11:21)  Не, спасибо, это не буду. Тут психологический барьер: tar и zip для контейнера это нормально, а iso - это для другого
|
|
|
|
|
Nov 25 2016, 10:55
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(ViKo @ Nov 25 2016, 12:23)  В вашем устройстве с микроконтроллером есть диск (с кластерами)?  Или вы хотите место на компьютере, куда передаете, сэкономить?  Тогда там и сжимайте, на компьютере. Вам обязательно накапливать ежеминутные данные в виде отдельного файла? Складывайте в ежечасные.  Да, у меня есть кластеры (в виде файловой системы). На компьютере сэкономить место - не первостепенная задача, но там тоже проблема есть, если не архивировать (inode table совсем не резиновая). Нет, это не для передачи архив, это резервное хранилище на случай оффлайновой работы и разборок в случае проблем. А передаются данные пофайлово в онлайне, так же и обрабатываются, ежеминутно. но в хранилке локальной остается копия, которая должна совпадать с переданным оригиналом. Вы, вероятно, не сталкивались с подобным, у меня сейчас ситуация следующая: за 100 дней накапливается почти полтора миллиона файлов, занимающие 4 гигабайта (если кластер 32к) на устройстве хранения, при этом собственно файлы имеют общий объем 24 мегабайта.
|
|
|
|
Сообщений в этой теме
Ruslan1 Архиватор в микроконтроллере с малым требованием к ресурсам Nov 22 2016, 08:58 Огурцов есть же какой-то зип открытый, только возьми и ско... Nov 22 2016, 09:18 AlexandrY Цитата(Ruslan1 @ Nov 22 2016, 10:58) Я то... Nov 22 2016, 09:40 Ruslan1 Цитата(AlexandrY @ Nov 22 2016, 11:40) Те... Nov 22 2016, 10:50 SasaVitebsk Цитата(AlexandrY @ Nov 22 2016, 12:40) Но... Nov 22 2016, 16:47  AlexandrY Цитата(SasaVitebsk @ Nov 22 2016, 18:47) ... Nov 22 2016, 17:10 aiwa minilzo
(__http://www.oberhumer.com/opensource/lzo... Nov 22 2016, 12:20 Ruslan1 Цитата(aiwa @ Nov 22 2016, 14:20) minilzo... Nov 22 2016, 13:03  HardEgor Цитата(Ruslan1 @ Nov 22 2016, 20:03) Прич... Nov 22 2016, 13:48   Ruslan1 Цитата(HardEgor @ Nov 22 2016, 15:48) tar... Nov 22 2016, 17:09  blackfin Цитата(Ruslan1 @ Nov 22 2016, 16:03) Все ... Nov 22 2016, 19:19 vladec zip-ы, rar-ы, tar-ы и т.п. требуют для своей работ... Nov 22 2016, 12:39 AlexandrY Цитата(vladec @ Nov 22 2016, 14:39) zip-ы... Nov 22 2016, 12:51 SasaVitebsk Речь шла о текстовом документе.
Скажем так. Пробов... Nov 22 2016, 19:06 Ruslan1 Цитата(SasaVitebsk @ Nov 22 2016, 21:06) ... Nov 22 2016, 19:14  SasaVitebsk Цитата(Ruslan1 @ Nov 22 2016, 22:14) ... Nov 22 2016, 19:19 makc Посмотрите на https://github.com/atomicobject/heat... Nov 22 2016, 20:25 AlexandrY Цитата(makc @ Nov 22 2016, 22:25) Посмотр... Nov 22 2016, 21:38  Ruslan1 Хм. Или никто не знает, или посчитали несущественн... Nov 24 2016, 23:38  makc Цитата(AlexandrY @ Nov 23 2016, 00:38) Хо... Nov 25 2016, 03:46      ViKo Цитата(Ruslan1 @ Nov 25 2016, 13:55) Вы, ... Nov 25 2016, 11:20       Ruslan1 Цитата(ViKo @ Nov 25 2016, 13:20) Понятно... Nov 25 2016, 12:45       Ruslan1 Цитата(AlexandrY @ Nov 25 2016, 13:24) Чт... Nov 25 2016, 11:42      mantech Цитата(Ruslan1 @ Nov 25 2016, 13:55) Вы, ... Nov 25 2016, 13:36    gerber Цитата(Ruslan1 @ Nov 25 2016, 13:15) Не, ... Nov 25 2016, 10:34     Ruslan1 Цитата(gerber @ Nov 25 2016, 12:34) Ну и ... Nov 25 2016, 20:24      Ruslan1 В-общем, реализовал tar с дописыванием в архив нов... Nov 27 2016, 23:13 gerber Ещё ISO есть. Nov 25 2016, 09:21 firew0rker Я применила для такой задачи (сбор и ежесуточное а... Dec 7 2016, 03:29 Alechek Цитата(firew0rker @ Dec 7 2016, 08:29) Дл... Dec 7 2016, 05:15 firew0rker Так мне и надо было распаковать 1 файл на МК.
Если... Dec 7 2016, 06:27 AlexandrY Цитата(firew0rker @ Dec 7 2016, 08:27) Ес... Dec 7 2016, 06:55  firew0rker Цитата(AlexandrY @ Dec 7 2016, 13:55) Пок... Dec 7 2016, 08:43   AlexandrY Цитата(firew0rker @ Dec 7 2016, 10:43) mi... Dec 7 2016, 09:32    firew0rker Цитата(AlexandrY @ Dec 7 2016, 16:32) Да ... Dec 7 2016, 13:04     Ruslan1 Спасибо, но на линукс ради архиватора переходить н... Dec 7 2016, 19:58      jcxz Цитата(Ruslan1 @ Dec 7 2016, 22:58) У мен... Jan 3 2017, 16:50       Ruslan1 Цитата(jcxz @ Jan 3 2017, 18:50) Как я по... Jan 3 2017, 19:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|