Поучаствовав в обсуждении этой проблемы, задался мыслью о необходимости програмки для диагностирования неполадок, возникающих при использовании Flash-памяти (USB-Flash, IDE-Flash, SecureDigital, MMC,MemoryStik, SmartMedia, XD, CompactFlash и т.д.).
Сменные носители на базе flash-памяти в силу ряда особенностей (hot-plug подключение, воздействие статики, влаги, температуры, механических воздействий при траспортировке, естественный износ из-за ограниченного числа циклов чтения/записи) относительно часто выходят из строя. И вот здесь возникает вопрос выкинуть или все таки попытаться исправить? И хотя данная програмка предназначена для диагностирования неполадок, ее результаты дают 90% уверенность что делать: выкидывать или исправлять. Все конечно же зависит от степени повреждения. И если простые дефекты вроде "не определяется", "ошибки записи", обнаруживаются относительно просто, то диагностика более сложных дефектов представляет из себя весьма нетривиальную задачу.
Вот ряд дефектов, которые характерны для flash-накопителей:
1. Флешка не определяется при подключении к компу( при подключении ничего не происходит). Вероятная причина,- сгоревший предохранитель или повреждается плата.
2. Флешка определяется неверно (windows при подключении пишет USB device not recognized) Вероятная причина,- повреждён контроллер устройства.
3. Ошибки записи/чтения (при записи выдаётся сообщения вида "error writing ...", "delayed writing failed", "i/o operation failed"). Вероятная причина,- Повреждение/износ flash-памяти, повреждение контроллера.
4. Флешка не форматируется (при попытке форматирования выдаётся сообщение об ошибке ). Вероятная причина,- сбой памяти, контроллера, логические ошибки.
Часть дефектов может быть устранена утилитами производителя (они доступны не всегда) путём низкоуровнего форматирования.
Однако существуют дефекты, целиком и полностью являющиеся "программными" - т.е. не связанными с аппаратными ошибками. К таким относятся неправильные размеры разделов, ошибки файловой системы. Некоторые особо удачные варианты partition table способны просто "завесить" windows при подключении устройства.
Так же существуют весьма специфические сбои контроллера памяти на устройстве, приводящие к записи данных в произвольные области памяти. (пишут в один файл, оказывается в другом). Такие дефекты сложно обнаружить простым копированием данных на устройство и обратно.
Для диагностики ряда дефектов и очистки устройства от программных сбоев и создана утилита flashnul.
Список выполняемых операций:
Тест чтения - проверка доступности каждого сектора носителя (дублирует функциональность обычных HDD-тестов)
Тест записи - проверка возможности записи каждого сектора носителя (дублирует функциональность большинства HDD-тестов)
Тест сохранности записанной информации - проверка соответствия записанной и прочитанной информации (аналогично функциональности memtest, но в отношении flash-накопителей).
Недеструктивная проверка чтения/записи позволяет проверить доступность на запись каждого сектора устройства, не теряя записанные данные (после проверки блока данные, содержащиеся в этом блоке, записываются обратно)
Сохранение образа содержимого устройства - посекторное сохранение всего (или части) содержимого в файл. (аналогично функциональности dd из UNIX).
Загрузка образа в устройство - посекторная запись образа в устройство (аналогично функциональности dd из UNIX).
Flashnul - это средство диагностики, а не лечения устройств, хотя некоторые тесты могут привести к полной потери данных. Если тест говорит, что устройство работает некорректно, значит, оно работает некорректно.
Приведу пару примеров как это работает. Проверял на своей флешке LG 256МБ.
Внимание: Большая часть тестов деструктивные - они уничтожают информацию с flash-устройства, перед использованием рекомендуется сделать резеврную копию данных. КАТЕГОРИЧЕСКИ запрещено отключение устройства во время выполнения теста, это может привести к физическому повреждению устройства.
Программа не имеет графического интерфейса, она работает из командной строки (cmd). Скачиваем последнюю версию программы ( забыл сказать, что программа бесплатна) с официального сайта:
[hide=0]http://shounen.ru/soft/flashnul/flashnul-0.9.zip[/hidden].
Распаковываем архив где-нибудь у себя на компе и затем копируем файл flashnul.exe в папку %systemroot%\system32. Для этого идем в Start > Run, в строке пишем %systemroot%\system32 и копируем flashnul.exe в открывсееся окно папки system32. Закрываем все окна, затем опять идем в Start > Run, и пишем в строке команду cmd.
Утилита работает с привязкой к букве, которая присваивается операционной системой флешке, или номеру, который также присваивается любому подключенному устройству. Изнать, какой номер присвоен нашей флешке можно запустив утилиту flashnul с ключем -p. Синтаксис команды такой: flashnul.exe -p:

Теперь, зная какой номер соответствует нашей флешке, можно вывести всю информацию о ней, запустив команду flashnul.exe 1:

Я не стану описывать, что означает та или иная строчка в рамках этого поста. Кому интересно, проходим по линку, который я привожу в конце моей писанины на сайт автора, там все подробно расписано.
Ну, и теперь самое время проверить нашу флешку на читабельность:
flashnul.exe 1 -R:

Как видно из этого скриншота, информация считывается с каждой физической ячейки,- адрес ячейки отображается как 0х1500000. В моем случае ошибок чтения обнаружено не было. Но если ошибка обнаруживается, то на экран выводится инфа об адресе проблемной ячейки. И здесь теперь два варианта,- или битая информация или же адрес ячейки, в которой хранится информация не соответствует тому, что прописано в файловой таблице на флешке. Как такое возможно,- это отдельный разговор. Вылечить подобную проблемму вполне реально (правда информация будет утеряна) заполнением этого сектора 0. Как я уже говорил, в моем случае ошибок обнаружено не было и в конце теста на экране появилась информация с результатами:

Теперь более агрессивный вид теста: flashnul.exe 1 -Т. Внимание! Выполнение этого теста приводит к полной потере информации.. Суть этого теста состоит в том, что сначала информация записывается на флешку, а затем считывается. При этом проверяется соответствие физических адресов, в которых записана информация, с записями в файловой таблице:

Также как и в первый раз, по окончании теста, на экран выводится собранная информация:

Это лишь небольшая часть из того, что может эта маленькая и очень полезяя програмка. Все остальные ее возможности и способы применения очень хорошо описаны на сайте автора:
[hide=0]http://shounen.ru/soft/flashnul/readme.rus.html[/hidden]
Я со временем перенесу это дело в нашу ВИКИ, так как считаю эту инфу очень нужной и полезной. Если у кого возникнут трудности с использованием програмки (еще раз подчеркиваю: неправильное использование может полностью повредить устройство или привести к полной потери информации) обращайтесь,- помогу по мере возможностей...