При загрузке больших файлов.pdf/.jpg в файловую систему jffs2 fwrite() завершается ошибкой

При загрузке больших файлов.pdf/.jpg в файловую систему jffs2, fwrite() выходит из строя.

На моем устройстве 1024 КБ, я загружаю.pdf файл размером 500 КБ. Моя программа передает поток в байты и записывает в файловую систему jffs2. Длина дана fwrite() не совпадает с длиной, возвращаемой из fwrite()(т.е. количество записанных байтов). Он устанавливает номер ошибки в -11, что говорит "из космоса"

1 ответ

Решение

JFFS2 - это сжатая файловая система, поэтому вполне вероятно, что то, что кажется вам размером 1024 КБ, на самом деле представляет собой область размером 512 КБ, которая, по мнению устройства, может быть сжата не менее 2:1, что является типичным значением.

Но поскольку PDF и JPEG являются сжатыми форматами, они не могут быть сжаты снова; попытка сделать это на самом деле часто расширяет их. И вот когда запись в JFFS2 не удалась.

Чтобы проверить (если у вас нет характеристик вашего устройства, сообщающего об истинном физическом пространстве), вы можете попробовать использовать pdftk инструмент для получения несжатого PDF. Вы, вероятно, увидите, что несжатый PDF размером 1024 КБ или, возможно, даже больше, будет загружен без проблем... но не будет ничего большего, чем, возможно, сжатый PDF объемом 490-500 КБ, потому что физического пространства просто нет.

Другие вопросы по тегам