Как исправить Hardware ECC Recovered (0xC3)

Содержание

Нескорректированные ecc кодом ошибки как исправить

(1203) 4.89 (9) Оценки, комментарии

2021-02-11 Дата последнего изменения: 2021-02-28

В статье в предельно доступной форме рассматриваются особенности применения микросхем NAND FLASH.

CОДЕРЖАНИЕ:

NAND не совсем обычные микросхемы, поэтому те инженеры, которые с ними сталкиваются впервые, часто бывают обескуражены. Более подробно, хотя и очень примитивно, особенности NAND описаны в статьях "Программирование NAND FLASH" и "Программирование SPI NAND".

Здесь же я постараюсь изложить суть использования NAND еще проще.

Тому, кто собирается работать с NAND профессионально, материала из этой статьи будет явно недостаточно, но для любителя, который решил отремонтировать 2–3 прибора, в которых используется микросхема типа NAND, это может очень помочь.

1. Коварство NAND. Структура.

NAND организованы следующим образом: страницы > блоки –> логические модули –> кристаллы.

На рисунке ниже показан типичный пример организации микросхемы NAND с одним логическим модулем и одним кристаллом.

В чем коварство NAND? В адресации.

Даже начинающий радиолюбитель знает, что к любой ячейке микросхемы памяти можно обратиться, указав её адрес. Перебирая по порядку все адреса с первого до последнего, можно считать или записать всю микросхему (именно так поступает программатор).

В микросхемах NAND обращение к отдельным ячейкам невозможно. Программирование выполняется одновременно только в пределах одной страницы, а при стирании обращение производится к блокам или к группам блоков. Страница — минимальная единица NAND, которую можно считать или записать, а при стирании минимальная единица — это блок или группа блоков.

При считывании NAND всегда происходит чтение всей страницы целиком, страница перемещается во внутренний буфер (page register), а уже из буфера можно прочитать содержимое страницы байт за байтом или в произвольном порядке.

То же самое при записи — сначала заполняется внутренний буфер (целиком или частично), затем страница записывается целиком. Размер буфера равен размеру страницы. Коварство адресации в том, что размер страницы не кратен степени двух. То есть просматривать содержимое микросхемы байт за байтом не получится.

2. Коварство NAND. Ошибки.

При работе микросхемы NAND возникновение ошибок — это норма. "Как так? Как можно работать с такой микросхемой?!" — скажете вы. Как можно работать с такой памятью? Способы есть, но об этом позже, а сейчас о типичном заблуждении начинающих:

Спокойно, дружище, спокойно. Это NAND, она так работает.

Сейчас типичная страница наиболее распространенных NAND равна двум килобайтам плюс дополнительные байты. Очень многие микросхемы при чтении дают до 16-ти одиночных ошибок на одну страницу. И это нормально. Берем, например, микросхему на 2 гигабайта. Нехитрое вычисление. Получаем, что при считывании микросхемы может быть до 16 777 216 ошибок!

Еще раз: 16 миллионов! Ошибок в микросхеме! Как с этим жить?! Как может что-то работать вообще? Об этом поговорим чуть позже.

А сейчас поясним понятие "одиночные ошибки".

"Одиночная ошибка" — это не одна единственная ошибка на страницу или микросхему, это ошибка в одном бите. Таких ошибок может быть много, вопреки слову "одиночная". Применительно к памяти такие ошибки правильнее было бы называть однобитными, но термин "одиночный" пришёл из теории передачи данных по линиям связи, где ошибки выявляют и исправляют такими же способами, что и в NAND.

3. Магия ЕСС.

Все наверное знают, что такое CRC. Код CRC (еще иногда (ошибочно) называют "контрольная сумма") — это такой специальный код, который позволяет найти ошибку в данных.

ЕСС — это более продвинутый код. Он позволяет не только обнаружить но и исправить (!) ошибку в данных. Поэтому он и называется ECC (Error Correction Code) — Код Исправляющий Ошибки.

Как работает такой код? Ох, лучше не спрашивайте. Я сам не понимаю (шутка). Просто поверьте в магию. Страница считана с ошибками, но код ЕСС может все исправить. Задействуем код ЕСС — и все читается без ошибок.

Кратко опишем как выглядит работа кодера/декодера ЕСС:

Вот до этого места коды CRC и ECC не сильно отличаются, магия ЕСС начинается дальше:

Вот и вся магия. Мы просто исправляем ошибки.

Конечно код ЕСС не может исправить все ошибки. Он может исправить их небольшое количество, скажем 16. Но нам больше и не нужно! Микросхема ведь не делает много ошибок :)

4. Коварство NAND. Магия ЕСС есть, но она не работает.

"Так просто?" — скажете вы. "Тогда почему программатор не использует ЕСС для исправления ошибок?! Я из раза в раз читаю микросхему и все время ошибки".

Да. Действительно, почему?

А вот почему.
Чтобы исправить все ошибки нужно знать:

Как? Вы это не знаете?! Вот и мы не знаем. И, возможно, никто, кроме разработчика прибора, не знает.

Если из этого списка 1-й и 4-й пункты можно попытаться выяснить, анализируя прошивку микросхемы, а порождающий полином (пункт 3) — подобрать, то с пунктом 2 (алгоритм ECC) все очень плохо.

5. Почему алгоритмов расчета ECC так много.

На данный момент самые распространённые коды исправляющие ошибки это:

Математические теории кодов достаточно сложные, но основные приемы работы с кодами известны, порождающие полиномы легко найти. Казалось бы, мы легко сможем подобрать нужный алгоритм ECC, просто анализируя прошивку. Сначала мы тоже так решили, однако всё оказалось сложнее.

Большинство современных встроенных систем базируются на Linux. Linux для работы накопителей на основе FLASH памяти, как правило, использует драйвер MTD. В драйвере MTD реализовано программное кодирование для NAND кодом BCH с вполне известным набором полиномов. Всё будто просто, но в реальной жизни (в реальных прошивках) такое кодирование не встречается. Почему? Всё упирается в деньги. Вернее, в желание производителей аппаратуры их сэкономить.

Почему вместо обычной памяти FLASH, работающей безошибочно, используются NAND, производящие кучу ошибок? Потому что это в разы дешевле. За разработку алгоритма кодирования/декодирования ЕСС заплатить нужно ОДИН раз, за память без ошибок нужно платить КАЖДЫЙ раз в КАЖДОМ устройстве.

Ровно по этой же причине в реальных устройствах (особенно массовых) никогда не используется чисто программное декодирование ЕСС – это декодирование является очень ресурсозатратным. Получается: ставим дешевую память – получаем или медленно работающее устройство, или нужно ставить мощный процессор, стоимость которого сводит на нет выгоды от использования дешевой памяти.

Поэтому декодированием ЕСС в современных системах занимаются специальные сопроцессоры или контроллеры. Придумываются и реализуются более совершенные коды ЕСС. Часто используются комбинированные коды CRC/ECC. Код CRC рассчитывается быстрее, чем ЕСС, это позволяет использовать CRC-часть для обнаружения ошибок, а полное декодирование ЕСС — только при их наличии.

Все эти коды и алгоритмы являются предметом авторского права и собственностью компаний, их разработавших. Ежедневно патентуются все более совершенные коды и все более быстрые алгоритмы их расчета. И никто не спешит делиться своими секретами.

Для тех, кого посетит мысль о том, что взломать алгоритм ECC не сложно, хочу напомнить, что для шифрования данных и расчета кодов исправления ошибок используется идентичный математический аппарат.

6. Коварство NAND. Магия ЕСС есть, но она не работает. Что делать?

Очень часто нам приходится слышать один и тот же вопрос: "Что делать, если NAND всегда читается с огромным количеством ошибок? Как прочитать без ошибок?"

Проблема может быть успешно преодолена, если вы нам скажете, какой алгоритм ЕСС использует ваше устройство. В этом случае мы сделаем расчет ЕСС по вашему алгоритму и у вас всё будет работать без ошибок при чтении NAND для этого устройства.

Вы не знаете алгоритм? Тогда есть только один способ: толерантность к ошибкам (и этот способ успешно работает).

Просто читаете микросхему. Она будет считана с ошибками. При верификации требуется задать допустимое количество ошибок на страницу микросхемы. (Для всех вновь добавленных микросхем значение по умолчанию уже задано. Если не задано нужно смотреть документацию или просить нас, чтобы мы внесли данные ЕСС в базу).

Программа будет сверять микросхему и подсчитывать количество ошибок. Если количество ошибок не превысит заданное значение — значит всё в порядке. Ошибка сравнения не будет выдана, вы просто будете проинформированы о количестве "исправимых" ошибок.

Но не все так однозначно.

Вот небольшая задачка:
Допустим, микросхема записывается всегда правильно, а все ошибки возникают только при чтении (чаше всего, это именно так). Предположим при каждом чтении каждой страницы всегда возникает ровно 3 ошибки при допустимых для данной микросхемы 4-х ошибках.

Понятно, что пример несколько искусственный, но на нём проще объяснить.

Случай 1:Запись эталона в NAND

Мы записали в микросхему эталонную (точно не содержащую ошибок) прошивку. При верификации получаем 3 ошибки на страницу. Программа предупреждает об исправимых ошибках, но верификация проходит успешно.

Если вы эту микросхему NAND поставите в ваш прибор, он исправно заработает, поскольку встроенный в прибор алгоритм ЕСС обязан(!) исправлять не менее 4-х ошибок на страницу (это паспортные характеристики данной NAND и прибор просто обязан справляться с таким количеством ошибок).

Случай 2:Чтение микросхемы NAND

Мы считали прошивку из исправной микросхемы, стоящей в приборе (напомню, мы получаем по 3 ошибки на страницу). Далее мы еще раз считывали прошивку. Мы опять получили 3 ошибки на страницу.

Но ошибки не возникают в одних и тех же местах! При сравнении результатов 1-го и 2-го считывания может получиться до 6-ти ошибок на страницу. Это превысит допустимые 4 для данной микросхемы, но это вовсе не означает, что микросхема неисправна!

Случай 3:Копирование микросхемы NAND

Мы считали прошивку из исправной микросхемы, стоящей в приборе (получая по 3 ошибки на страницу). Далее записали полученную прошивку в чистую микросхему.

При верификации получим по 3 ошибки на страницу. Это вроде бы меньше 4-х. Но заработает ли прибор? Не факт. Всего ошибок может быть до 6-ти на страницу (3 при считывании образца плюс 3 при работе микросхемы в приборе), но ЕСС прибора исправит только 4.

На самом деле, в реальной жизни, количество ошибок по страницам в микросхемах сильно колеблется. В новых микросхемах количество ошибок не превышает одной-двух, да и то не на каждой странице. Заявленное число ошибок (в нашем примере 4) это уже в сильно изношенной микросхеме. Беда только в том, что в ремонт с формулировкой "слетела прошивка" именно такие приборы и попадают.

7. Практический совет по выбору порога ошибок.

Можно порекомендовать простой алгоритм выбора количества допустимых ошибок при верификации (настройка порога толерантности):

Случай 1. Очень оптимистичный. У вас есть эталонная прошивка и она точно без ошибок.

Такую прошивку можно писать и верифицировать с порогом ошибок, заданным в документации на микросхему (во всех наших примерах – это 4).

Случай 2. Реальный. У вас нет эталонной прошивки.

Вы считываете прошивку из микросхемы. Чтобы ее можно было уверенно использовать, количество ошибок на страницу не должно превышать половины лимита (т. е. для нашего примера — это 2 ошибки). Далее вы пишете эту прошивку в микросхему. При верификации записанной микросхемы ошибок тоже не должно быть более 2-х.

При соблюдении этих условий прибор заработает с очень высокой вероятностью (ЕСС прибора должно исправить 2+2=4 ошибки).

Чем больше вы ошибок получаете при считывании эталона и верификации записи, тем меньше вероятность того, что алгоритм ЕСС справится с исправлением ошибок и прибор заработает. Здесь уже как повезет. :)

8. "Ваш программатор полный отстой, вот другие программаторы решают эту проблему".

Нет. У других производителей программаторов (во всяком случае у всех, которые нам известны на данный момент) всё точно так же. Те же предложения: "Cкажите какой ЕСС и мы все реализуем".

Те же методы верификации с "терпимостью" ошибок ЕСС. У некоторых производителей есть настройка с выбором алгоритмов из встроенного стандартного набора, с необходимостью указания полинома, разметки страницы и кучи других параметров. В практической жизни это вам не сильно поможет.

9. "Я все прочитал и ничего не понял.
Вы сможете наконец что-то сделать, чтобы NAND читались "нормально"?"

Мы над этим работаем. До сих пор мы не оставляем надежды на создание способа автоматического восстановления алгоритма ЕСС (хакинга) только на основании анализа прошивки.

Понятно, что для всех случаев его создать никогда не удастся, но если нам удастся восстановить алгоритм ЕСС хотя бы в четверти случаев, мы будем просто счастливы.

Что для этого нужно? Присылайте нам свои считанные прошивки. Присылайте нам как можно больше считанных прошивок. Я знаю, что они для вас представляют ценность, но мы не собираемся их распространять или использовать как-то кроме их анализа на предмет ЕСС и таблиц плохих блоков. Если вы опасаетесь, можно скрывать название системы, в которой прошивка используется.

Всё что нас интересует — это название микросхемы, из которой прошивка считана. Для лучшей защиты своих интересов вы можете прислать прошивку не полностью. Если вы опасаетесь — не присылайте. Это только просьба.

Еще очень желательно знать марку контроллера NAND, используемого в системе или марку центрального процессора, то есть название микросхемы, к которой NAND подключена.

Собрав достаточную базу прошивок, я надеюсь, нам удастся "хакнуть" ЕСС и сильно облегчить вам работу с NAND.

Только совместными усилиями мы сможем добиться значительных результатов в работе!

Whea uncorrectable error windows 10 как исправить

Внезапно для себя на вашем компьютере произошла принудительная остановка, а после включения на мониторе синий экран с надписью “Код ошибки: whea uncorrectable error”? Это довольно распространенная проблема и у нее есть множество причин и решений…

Как исправить ошибку whea uncorrectable error в windows 10?

Если вы всё-таки смогли загрузиться в системе, то для начала попробуйте обновить систему до самой последней версии. Сделать это довольно легко: переходим в “Параметры” —> “Обновления и безопасность” —> Кнопка “Проверить наличие обновлений”.

Если новых обновлений нет, а проблема всё также остаётся, то пользователю нужно будет восстанавливать систему. Кстати, возможно, именно “кривая” установка обновлений и спровоцировала возникновения данной неполадки… О том, как сделать откат системы мы подробно описали в другой статье.

Проверка совместимости драйверов

Зачастую такая ошибка появляется после изменения стандартной частоты/напряжения процессора или ОЗУ (например, для игр). Для исправления нужно будет совершить целый комплекс восстановительных мер.

Проверка оперативной памяти

&nbsp &nbsp Атрибуты состоят из нескольких полей, каждое из которых имеет определенный смысл. Обычно, программы считывания S. M.A. R.T. выдают расшифровку атрибутов в виде:

Жесткий диск не имеет возможности, по собственной инициативе, передать данные SMART потребителю. Их считывание выполняется специальным программным обеспечением.

В настройках большинства современных BIOS материнских плат имеется пункт позволяющий запретить или разрешить считывание и анализ атрибутов SMART в процессе выполнения тестов оборудования перед выполнением начальной загрузки системы. Включение опции позволяет подпрограмме тестирования оборудования BIOS считать значения критических атрибутов и, при превышении порога, предупредить об этом пользователя. Как правило, без особой детализации:
Primary Master Hard Disk: S. M.A. R.T status BAD!, Backup and Replace.
Выполнение подпрограммы BIOS приостанавливается, чтобы привлечь внимание:
Press F1 to Resume
Таким образом, без установки или запуска дополнительного программного обеспечения, имеется возможность вовремя определить критическое состояние накопителя (при включении данной опции) средствами Базовой Системы Ввода-Вывода (BIOS).


Анализ данных S. M.A. R.T. жесткого диска

Обновленная Victoria работает в среде операционных систем Windows 2000/XP/8/10 x32. В среде Windows 9х программа работает только в режиме PIO.

Технические требования к оборудованию:

— Память 2 Gb или более.

— Видеокарта SVGA. Рекомендуется видеорежим от 1280*1024.

— Желательно наличие доступа в Интернет.

— Программа должна выполняться в контексте учетной записи пользователя с правами администратора.

В среде 64-разрядных ОС Windows работоспособность Victoria сохраняется, за исключением режима PIO.


Мониторинг состояния HDD.

&nbsp &nbsp Для отслеживания технического состояния диска в непрерывном режиме используется специальное программное обеспечение (нередко, платное), главной задачей которого является периодическое считывание и анализ значений атрибутов таблицы SMART с целью предупредить пользователя о достижении порога критического состояния, когда работоспособность устройства и сохранность пользовательских данных не гарантируются. Одним из бесплатных, и тем не менее, популярных в среде пользователей ПК, представителей программ для мониторинга состояния HDD является CrystalDiskInfo

CrystalDiskInfo

Список команд жестких дисков стандарта ATA для работы с данными S. M.A. R.T

Наименование &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp Код операции

SMART_READ_VALUES&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 0xd0
SMART_READ_THRESHOLDS &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp 0xd1
SMART_AUTOSAVE&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp 0xd2
SMART_SAVE&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 0xd3
SMART_IMMEDIATE_OFFLINE &nbsp &nbsp &nbsp &nbsp 0xd4
SMART_READ_LOG_SECTOR &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp 0xd5
SMART_WRITE_LOG_SECTOR &nbsp &nbsp &nbsp &nbsp&nbsp 0xd6
SMART_ENABLE &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp 0xd8
SMART_DISABLE &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp&nbsp 0xd9
SMART_STATUS &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp0xda
SMART_AUTO_OFFLINE &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 0xdb

В качестве дополнительного материала по технологии S. M.A. R.T и использованию программного обеспечения smartmontools в операционных системах семейства Linux, может пригодиться статья S. M.A. R.T и оценка технического состояния жесткого диска в Linux


Использование терминального режима для ремонта HDD.

&nbsp &nbsp Методика несложная и вполне работоспособная, но, в основном, рассчитана на применение опытными специалистами по ремонту HDD. Я постараюсь дать некоторые пояснения, которых в оригинале нет.

&nbsp &nbsp Итак, кроме обычного интерфейса ATA или SATA, современные накопители имеют служебный интерфейс для подключения в терминальном режиме. На плате электроники накопителя любого производителя вы найдете кроме стандартных разъемов питания и интерфейса, еще и дополнительный разъем, никак не обозначенный, и имеющий не менее 3-х контактов. Это и есть разъем для подключения терминала через последовательный порт накопителя.

Разъем подключения терминала к диску

В разных моделях накопителей используются свои контакты для подключения к терминалу

3,5″ накопители Seagate PATA :

Интерфейсный разъём. : : | : RX / TX Разъём питания

3,5″ и 2.5″ накопители Seagate SATA, а также 2.5″ Samsung SATA :

3,5″ накопители Samsung PATA :

Интерфейсный разъём. : : : | RX / TX Разъём питания

3,5″ накопители Samsung SATA :

Разъём питания. Разъём SATA : : : | RX / TX

Использование Hiperterminal для подключения накопителей Seagate.

Выбор COM порта

Параметры COM порта

Параметры эмуляции терминала

&nbsp &nbsp Убедитесь, что ваш терминал работает. Для этого соедините RX и TX между собой. При наборе с клавиатуры вы должны видеть удвоение набираемых символов, поскольку на экран терминала сначала выводится введенный символ, передаваемый по линии TX, а затем, этот же символ, принятый по линии RX. Если режим «Отображать введенные символы на экране» выключить, то удвоения символов не будет, поскольку будут отображаться только символы, принятые по линии RX.

&nbsp &nbsp Если параметры порта выбраны правильно и накопитель поддерживает терминал, то, при нажатии CTRL-Z вы должны увидеть приглашение:

), в ответ на которые накопитель выводит диагностические данные о своем текущем состоянии.

Переход на нужный уровень выполняется с помощью команды:

LED: 000000CC FAddr: 0024A051

После раскручивания двигателя, увидите сообщение:

Spin Up Complete
Elapsed Time 7.146 secs

Теперь накопитель готов к работе в терминальном режиме.

Spin Error
Elapsed Time 12.917 secs
R/W Status 2 R/W Error 84150180

&nbsp &nbsp В сети встречается несколько методик восстановления работоспособности накопителей семейства 7200.11, которые позволили добиться положительного результата. Логика подсказывает, что как минимум, нужно:
— обнулить содержимое SMART Причиной разрушения транслятора, судя по всему, является ошибка в микропрограмме, связанная с обработкой этого содержимого. Иначе причина разрушения транслятора не будет устранена.
— пересчитать содержимое транслятора заново, что вернет работоспособность внутренней микропрограмме накопителя.

В большинстве методик используется команда обнуления списка переназначенных в процессе эксплуатации секторов G-List (Grown List). Мне кажется, в случае восстановления не только работоспособности, но и целостности данных, это будет лишним, хотя, вероятность порчи транслятора в зависимости от содержимого G-List, очевидно, исключить нельзя. На практике, очистку G-List я никогда не использовал, а восстановление нескольких Barracuda 7200.11 выполнилось вполне успешно.

&nbsp &nbsp Для очистки данных SMART нужно перейти на уровень 1


Восстановление работоспособности накопителя ST3640323AS с прошивкой SD35.

Rst 0x20M
(P) SATA Reset

LED:000000CC FAddr:0024CDC9
Rst 0x20M
(P) SATA Reset
LED:000000CC FAddr:0024CDC9
Rst 0x20M

Реакция на CTRL-Z присутствует, накопитель переходит на уровень /T, однако, тут же возвращается на «SATA Reset» :

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

Источники:

https://byr1.ru/fix-hardware-ecc-recovered-smart-error

https://kodyoshibok03.ru/neskorrektirovannye-ecc-kodom-oshibki-kak-ispravit/

https://ab57.ru/hdd. html

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: