Комментарии 45
Интересная и познавательная статья, возможно ее стоило разбить на две части, аппаратную и алгоритмическую, но это дело автора
Спасибо. Я сначала хотел сделать две статьи: взять готовые библиотеки и используя их восстановить данные, а потом уже разобраться в теории. Но подумал, что буду прокрастинировать и вторую потом не допишу.
Но я добавил небольшое оглавление
Да и правильно сделал что не стал пилить на куски. Вторая часть стабильно собирает меньше просмотров, а половина авторов ее вообще закидывает. Тут весь кайф именно в цельной картине от паяльника до математики)
Шикарная статья! Хабр ещё торт.
Хозяин фотографий будет рад или за эти годы его след безвозвратно потерян?
После прочтения данной статьи (а не очередной новости об ИИ, написаной ИИ) понимаешь что Хабр еще торт.
Надеюсь, что статья похожа на "не написанную ИИ" не потому, что она плохо написана)
Когда автор полгода руками лопатит регистры и полиномы, никакой генератор текста рядом не валялся)
Шикарная статья! Математику коррекции ошибок даже в таком разжеванном виде прочитать было непросто, а уж как в этом трудно было разобраться - не представляю. Снимаю шляпу перед вашими настойчивостью и усидчивостью!
Ого! Ничоси! Вот это математика! Люто плюсую! Я прям думал что классический Рид-Соломон сложный, а BCH это надо прям голову сломать! Спасибо за разбор, Прям захотелось посильнее разобраться в BCH. Я так понял, на сегодняшний момент это то, что применяется вместо Рида-Соломона везде. Хороший повод поскрипеть мозгами!
На сколько я понял, это тоже не БЧХ в чистом виде, а что-то оптимизированное под быструю аппаратную обработку.
Используется везде, но что меня удивило: либо я плохо искал, либо нигде нет хоть какого-нибудь разбора такого алгоритма кодирования/декодирования. В том числе, на отличном, от русского, языке.
Будем ликвидировать безграмотность! С первого раза я мало чего (ничего) понял, если Вы не против, попробую ещё одну статью для чайников (как я) написать. Если, конечно, получится разобраться

А на что же это так похоже? Оно же каждому тут должно напоминать кое-что...
Открыть

Ну Вы просто монстр! В хорошем смысле ;)
Вот прям удивило, что флеш-память 9 лет была без питания и пережила без особых потерь этот срок.
Как зазывно всё начиналось, с распаивания микросхемы памяти на макетку монтажным проводом..., а кончилось абелевыми группами и полями Галуа... 8-)))
Трюк с подбором питания от 1.7 до 3.6 вольта порадовал, старая школа. На уставших ячейках плавающий затвор только так иногда и получается прочесть
Спасибо, у меня опытные учителя.
История от одного из них: на старых АОНах были хитрые кастомные прошивки, которые нельзя было скопировать, так как после простого клонирования микросхемы памяти, они не работали.
Секрет заключался в программировании определенных ячеек памяти на пониженном напряжении. В результате чего получалась не дошитая ячейка, которая нестабильно читалась. В прошивке была проверка, что если из этих ячеек за некоторое количество повторений читаются, хоть иногда, разные данные, то прошивка стартует.
Соответственно, если в лоб снять дамп и зашить в другую микросхему памяти "неправильно", то нестабильных ячеек не будет.
Вот такие истории старой школы)
Чувак, ты больной! Лайк/подписка!
Упоролись на отличненько. Моё почтение.
Это безумно круто!
В институте на теории информации изучал эти коды и то, как они работают. Было очень интересно прочитать про то, как вам пришлось с этим разбираться и применять на реальном дампе. Заслуженный плюс.

К сожалению, мне трудно запоминается сухая теория без практического применения. Алгебра с ее фундаментальными понятиями групп, колец, полей и т.д. была в вузе в 2010-2011гг, но когда я стал разбираться в изложенном в статье материале, я выглядел как Ди Каприо из этого мема)
Жаль, не было теории кодирования, но мне кажется, что на тот момент, она бы тоже прошла как "материал для сдачи сессии"
Я поделился статьей с моим преподавателем Алгебры, думаю, что она тоже была приятно удивлена.
Вот это уровень. Вот это статья. Всю дорогу меня терзал вопрос: сколько же времени заняло написание статьи и сам процесс - дочитываю до конца, а там все черным по белому написано) БРАВО
Спасибо. Не вижу смысла лукавить, хорошая статья пишется долго. Изначально это был "вызов себе", но когда я получил "грязный дамп" из первой части, то точно решил, что опубликую результат.
Возможно, моя продуктивность оставляет желать лучшего, но над некоторыми кусками кода в bchlib.c я думал несколько вечеров, особенно над превращением оптимизированного табличного метода xor в читаемый xor с проверкой и сдвигом.
Огонь! Редчайший и уникальный материал в такой абсолютно недружелюбной области, как data recovery.
Мне статья понравилась!
Вдохновляющая на подвиги в IT.
Плюс Вам в карму!
отплюсовал в двойном размере, настоящий гик, статья гром. У меня тоже лежит такая карта только не сломана.... надо посмотреть на нее свежим взглядом))
предполагаю автор - поколение Х?)
Обычно используют термины die -> plane -> block -> page -> cell.
Я, когда считывал oneNAND с помощью того же stm32, не рискнул использовать подпаянные проводочки, а быстро набросал платку под bga. Не исключено что часть ошибок сыпалось не из ячеек, а из-за такой разводки.
Я считывал дамп несколько раз:
Сначала просто полный дамп без инверсии и коррекции, потом полный дамп с 128 попытками чтения и новой коррекции (причем ошибки оставались только в 1 cell из 8 в page), затем отдельно вычитал именно эти страницы на разных напряжениях. И уже в конце, для чистоты эксперимента, после написания всей статьи, повторил последние шаги. Ошибки остались ровно в тех адресах, что и в прошлый раз.
Кстати, одна из проблем, о которой вспомнил: я снижал ток выходных падов stm32 (ведь я думал, что чем круче фронт, тем быстрее и лучше будет работа), но индуктивные выбросы порождали наводки и ошибки. Так что разводка тоже имеет место быть.
Не проводил анализ, есть ли закономерность в местах возникновения ошибок, которые удалось исправить с помощью кода BCH?
Может получилось бы восстановить ещё пару тысяч секторов.
Отличная статья, читал с удовольствием. А была возможность впаять память в другую SD карту? Файловая система бы поднялась?



Восстановление данных с нуля со сломанной пополам SD-карты памяти