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