LINUX.ORG.RU

Упаковка/распаковка данных в памяти


0

2

Здравствуйте, люди добрые!

В проекте для данных мало места (нет файловой системы), а распаковать надо. Подскажите, чем такое можно сделать в памяти, без файловых операций.

UPD: желательно C.

★★

Последнее исправление: braboar (всего исправлений: 1)

в tmpfs распаковывай.

anonymous
()

Добрый день, молодой человек.

Давай мы побудем жёлтым утёнком, а ты нам расскажешь: что ты хочешь разжать, в каком формате, откуда это появилось, всё целиком или потоком или частями, что за данные внутри, какие библиотеки уже пробовал … А то погода пасмурная и режим чтения мыслей на большом расстоянии не включается.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Данные - прошивка для FPGA, жмутся хорошо, формат не важен (gz, zip, лишь бы не особо редкое и эксклюзивное), была бы библиотека. Данные пишутся во флешку вместе с программой, файловой системы нет, могу прочитать часть флешки и декомпрессировать для загрузки. Пробовал tinf; вызов tinf_uncompress вернул TINF_DATA_ERROR (input error). Поскольку данные сжимал gz, не уверен, что форматы совпадают. Компрессора в tinf нет, поэтому хочу иметь возможность сделать и компрессор и декомпрессор.

braboar ★★
() автор топика
Ответ на: комментарий от braboar

Данные - прошивка для FPGA, жмутся хорошо, формат не важен

Что за FPGA? Он не поддерживает сжатый bitstream?

gag ★★★★★
()
Ответ на: комментарий от gag

Я получаю готовый bitstream, так что буду разбираться, можно ли эту ПЛИС загрузить сжатым bitstream’ом. Спасибо.

braboar ★★
() автор топика

(нет файловой системы)

жмутся хорошо

Создаешь устройство zram, создаешь на устройстве ФС.

https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html

без файловых операций

Так не бывает. Но можно без операций с ФС на диске - используя только оперативу.

распаковать надо. Подскажите, чем такое можно сделать

Чем запаковывал, тем и распаковывай, очевидно же.

hakavlad ★★★
()

zlib - функции compres() и uncompress() работают с блоками в памяти. Я ее использовал для сжатия данных, передаваемых по сети.

sigurd ★★★★★
()
Ответ на: комментарий от hakavlad

Ну, вот даже не знаю что сказать. Во флешку шьется созданный образ, который содержит загрузчик, PL-ную часть и мою программу. Я могу добавить в образ область памяти, занятую данными, но это не файл, я считываю их через qspi.

braboar ★★
() автор топика
Ответ на: комментарий от braboar

Всем спасибо, разобрался с miniz. Deflate/inflate mem_to_mem работает.

braboar ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.