LINUX.ORG.RU

Ошибка записи файлов в ФС jffs2


0

0

Вопрос тяжёлый, но вдруг кто-нибудь поможет или наведёт на мысль.

У меня возникает ошибка при записи файлов размером больше 4096 байт в файловой системе jffs2 во встроенном линуксе 2.6 под arm. Флешка прекрасно определяется через physmap, делится на партиции драйвером, монтируется, все существующие файлы читаются, но запись...

Файловая система собиралась с помощью программы mkfs.jffs2, все файлы, уже присутствующие на собраной файловой системе читаются прекрасно, но вот при записи новых больших файлов (больше 4 кБ), возникает ошибка (маленькие файлы пишутся без ошибок):

# cp ./busybox /mnt/jffs/busybox
Node totlen on flash (0xffffffff)! = Totlen from node ref (0x00000044)
Node totlen on flash (0xffffffff)! = Totlen from node ref (0x0000000c)
Node totlen on flash (0xffffffff)! = Totlen from node ref (0x0000000c)
Node CRC ffffffff! = Calculated CRC f09e7845 for node at 004d0dfc

И при чтении таких битых файлов естественно тоже:

# cat /mnt/jffs/busybox> /dev/null
Node CRC ffffffff! = Calculated CRC f09e7845 for node at 004d1334
Node CRC ffffffff! = Calculated CRC f09e7845 for node at 004d1334
cat: read error: Input/output error

Это проблема в software или конфигурации, т.к. замена флешки не даёт результатов.

AT91RM9200,
linux 2.6.23,

# cat /proc/mtd
dev: size erasesize name
mtd0: 00260000 00010000 "images"
mtd1: 005a0000 00010000 "jffs"

# mount |grep jffs
/dev/mtdblock1 on /mnt/jffs type jffs2 (rw)

Если понадобится, напишу .config файл или лог загрузки...
Спасибо.

anonymous

Ответ на: комментарий от alex_custov

Да, erase-ил. Более того, пробовал ещё и на загруженной системе партицию очичтить программой flash-erase (как это написано в документации mtd\jffs). Флешка стирается, монтируется (существуюшие файлы естественно, пропадают), но всё равно большие файлы не записываются без ошибок.

Искал решение в интернете и на форуме http://www.at91.com/phpbb/index.php. Не нашёл...

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

Не похоже... Все файлы длиной менее 4096 байт записываются, все файлы большей длины записываются только 4096 байт, потом возникает ошибка...

anonymous
()

Моя система: AT45DB642 на AT91RM9200, ядро 2.6.20 (evm9200). Когда-то с этой флешкой были проблемы, предлагали изменить размер стираемой области на erasesize = 8 * pagesize (drivers/mtd/devices/at91_dataflash.c). Файловая система делается с помощью mtd-utils командой eraseall для устройства /dev/mtd(!!!) без mkfs.jffs2. mtd0 - для первого раздела, mtd2 - для второго, mtd4 - для третьего и т.д. Для команды опция -j указывалась раньше. Сейчас без нее прекрасно работает. Монтриуется обыкновенно -t jffs2 устройство mtdblock0 - первый раздел, mtdblock1 - второй и т.д. Удачи.

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