2013-10-24 3 views
1

Я использовал подсистему ubi и mtd для работы над верхней частью флэш-памяти NAND. Он работал нормально.Причина повреждения файловой системы ubi

Но теперь я нахожу следующие ошибки:

UBI ошибка: ubi_io_read: ошибка -74 при чтении 516096 байт из ПЭБ 2701: 8192, прочитать 516096 байт

end_request: ошибка ввода/вывода, dev mtdblock5, сектор 49160

В чем причина тех ошибок, о которых я упомянул выше? Как восстановить эту ошибку?

+1

Эти сообщения сами по себе не указывают на проблему. Если у вас есть источник Linux, вы можете скомпилировать модули * drivers/mtd/test * и запустить их на своем устройстве. Эти тесты должны указывать, есть ли какие-либо проблемы с программным обеспечением с вашей аппаратной комбинацией (flash chip + flash controller). ** Примечание: ** некоторые из тестов являются разрушительными. –

ответ

-1

Оба показывают ошибки ввода-вывода, связанные с повреждением или плохим блоком на вашей вспышке NAND, попробуйте использовать другую вспышку и использовать ее. Вы также можете попробовать удалить флеш-память и попробовать ее снова.

Благодаря & С уважением,
Alok Thaker

+0

Какие меры предосторожности необходимо принять во избежание повреждения флэш-памяти NAND? – Sujatha

+0

Возможно, повреждение флэш-памяти NAND может произойти из-за многих факторов, не имеющих надлежащих настроек или нескольких операций чтения/записи и т. Д. –

2

Ошибка -74 является EBADMSG. Глядя на ubi.h мы можем увидеть,

  • UBI_IO_FF: прочитанная область вспышки содержит только 0xFFs
  • UBI_IO_FF_BITFLIPS: так же, как% UBI_IO_FF, но и также была ошибка данных целостности сообщает драйвер MTD (неисправимая ошибка ECC в случае NAND)
  • UBI_IO_BAD_HDR: ЕС или заголовок VID поврежден (плохая магия или CRC)
  • UBI_IO_BAD_HDR_EBADMSG: такой же, как% UBI_IO_BAD_HDR, но и была ошибка целостности данных, сообщает драйвер MTD (неисправимая ошибка ЕСС в случае NAND)
  • UBI_IO_BITFLIPS: битовые переворачивает были обнаружены и исправлены

Каждый блок UBI представляет собой блок стирания вспышки (типичный 128K), и эти блоки имеют два заголовка UBI, размер страниц которых (типичный 2k). Когда эта страница была прочитана, произошла ошибка. Который не был восстановлен с помощью кодов с исправлением ошибок или ECC.

Если вы используете UBI на вершине UbiFs, эти блоки должны быть запланированы, чтобы быть пыткам. Это включает в себя стирание и перезапись блока стирания. Flash может пойти stale если прочитано много раз. Биты могут переворачиваться и требовать перезаписи данных. Может оказаться, что заголовок UBI просто нуждается в перепрограммировании, и вспышка будет в порядке.

Если нет, все драйверы NAND mtd имеют bad block table. В случае, если данные действительно не подлежат восстановлению, блок стирания будет помечен как плохой в этой таблице, а Ubi больше не должен использовать этот сектор.

Если ошибка повторяется, это может быть проблемой. Тем не менее, это отчасти ожидается при нормальном использовании вспышки NAND. Типичные циклы составляют от 1 000 до 100 000 для вспышки NAND. После определенного износа возможно, что вспышка может быть полностью непригодна. Это зависит от типа вспышки, файловой системы (и wear leveling) и приложений в системе.

Неправильно сконфигурированный драйвер флэш-памяти может вызвать эти ошибки. Неправильный код ECC для флэш-памяти может вызвать предварительные ошибки (флэш обеспечивает пространство для 4-битного ECC, но только драйвер реализует только 1 бит). Это также может быть вызвано плохим приложением, которое постоянно fsync() диск каждые 1 мс-100мс; этот тип поведения будет носить вспышку через несколько лет, даже если все остальные компоненты будут оптимальными. Ubi должен иметь некоторые из наилучшего уровня износа . Если вы постоянно повторите вспышку изображение, вы можете скидку ubi износ и вызывать подобную проблему.

+0

Я думаю, что ваш опубликованный журнал ошибок не завершен. См. [Io.c, ubi_io_read()] (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/ubi/io.c?#n185) , так как он имеет счетчик повторов для сообщения, которое вы отправили (по крайней мере, с текущей основной линией). Поэтому это сообщение должно происходить несколько раз. –

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