В программном обеспечении для программаторов Тритон, при работе с микросхемами NAND-FLash, начиная с версии 5.8.56 (декабрь 2020г.), добавлены алгоритмы коррекции ошибок и управление дефектными блоками. Учитывая, что данная тема очень сложная, и не многие программаторы поддерживают эту функцию в полном объеме, попробую объяснить, что это такое и для чего нужно. На форуме огромное количество вопросов по прошивке микросхем K9GAG08U0E и других NAND. Почему один и тот же файл записанный у одних работает, у других - нет? Конкретно, в файле для D5500 очень много пустых мест и, если дефектный блок в новой микросхеме попадает в пустое место, то телевизор заработает. Если же он попадает в область данных - то телевизор не заработает вообще или некоторые функции будут вызывать сбои. Для того, чтобы исходный файл "работал" на всех микросхемах, программатор при записи должен использовать "нужный" алгоритм обработки дефектных блоков и обязательно поддерживать используемый в устройстве алгоритм коррекции ошибок (ECC).
Технология, по которой изготовлены микросхемы NAND-Flash, не может гарантировать отсутствие ошибок в процессе работы с микросхемой. Существуют два типа этих ошибок. Первый тип обнаруживается при записи или стирании микросхемы и маркируется как дефектный блок. Для обработки таких блоков используют один из двух алгоритмов: пропускают дефектный блок (Skip), сдвигая данные, или заменяют его блоком из резервной области (RBA). Второй тип ошибок появляется при чтении микросхемы, как правило, в виде искажения отдельных битов. Для исправления таких ошибок используются корректирующие коды (или ECC). Ошибки могут быть в виде "плавающих" бит, которые будут считываться каждый раз по-разному. При повторном чтении или проверке программатор может сообщить об этом. Либо постоянно читаться не правильно, в этом случае программатор напишет, что считано успешно, но данные будут повреждены. Если при записи такого файла в другую микросхему, к ошибкам в файле добавятся еще ошибки в микросхеме, то общее число ошибок может превысить корректирующую способность кода и устройство работать не будет.
Что сделано (версия V5.8.56). - Программа поддерживает основные алгоритмы коррекции ошибок: Хемминга, Рида-Соломона, БЧХ. - В режиме Автокоррекции программа распознает 50 различных конфигураций этих алгоритмов. - Программа позволяет исправлять считываемые из микросхемы данные и очищать чужой файл от ошибок при записи микросхемы.
Добавлено (версия V5.8.57). - В режим Автокоррекции добавлены 5 новых схем расчета ECC для алгоритма BCH. - Добавлены алгоритмы обработки дефектных блоков: пропуск блока (Skip) и замена (RBA). - В режиме RBA добавлены три схемы обработки: 1 схема Samsung и 2 схемы LG. - В режиме SKIP добавлена поддержка таблиц рабочих и дефектных блоков в микросхеме.
Как это работает в программе. После выбора микросхемы NAND, в меню "Управление блоками" и "Коррекция ошибок" (эти меню доступны при подключении программаторов V5.7T или V5.8T) можно выбрать нужный алгоритм обработки и настроить его параметры, либо выбрать режим AUTO. В этом режиме, при ЧТЕНИИ микросхемы, программа вычисляет ECC для каждой страницы, сверяет его с ECC считанным из микросхемы, при необходимости корректирует ошибки, и сохраняет данные в буфере. При ЗАПИСИ микросхемы программа определяет и обрабатывает дефектные блоки, проверяет и исправляет ошибки в исходном файле, при необходимости корректирует ECC, после чего пишет данные в микросхему.
Вот пример записи многострадальной K9GAG08U0E.
============================================= TRITON Plus programmer. Hardware: 5.8.57 "USB" Software: 5.8.57.578 (04.04.2021) Windows 5.1.2600, Service Pack 3, v.3311 =============================================
*V8U: K9GAG08U0E [TSOP-48], $000000..$040DFF, 05.04.2021 14:56:03 Checking Bad Blocks... Chip Bad Block 014F80 (029F) Chip Bad Block 016000 (02C0) Chip Bad Block 039C00 (0738) Chip Bad Block 03B500 (076A) Chip Bad Block 03BC80 (0779) Chip Bad Block 040400 (0808) Chip Bad Block 040C80 (0819)
*V8U: K9GAG08U0E [TSOP-48], $000000..$040DFF, 05.04.2021 14:56:07 File: C:\Delphi\Tri_Main\TV Samsung UE40D5500RW K9GAG08U0E.bin Checking the file... Обработка блоков: AUTO. Замена плохих блоков. Erase BBM. Коррекция ошибок: AUTO. BCH Пропуск ECC в плохих блоках и пустых страницах. Erasing... Chip Bad Block 014F80 (029F) Chip Bad Block 016000 (02C0) Chip Bad Block 039C00 (0738) Chip Bad Block 03B500 (076A) Chip Bad Block 03BC80 (0779) Chip Bad Block 040400 (0808) Chip Bad Block 040C80 (0819) Programming... Chip Bad Block 014F80 (029F) reassigned to 03FD80 (07FB) Chip Bad Block 016000 (02C0) reassigned to 03FD00 (07FA) File Bad Block 022B80 (0457) replaced with 03FD80 (07FB) File Bad Block 026180 (04C3) replaced with 03FD00 (07FA) Chip Bad Block 039C00 (0738) reassigned to 03FC80 (07F9) Chip Bad Block 03B500 (076A) reassigned to 03FC00 (07F8) Chip Bad Block 03BC80 (0779) reassigned to 03FB80 (07F7) Chip Bad Block 040400 (0808) ignored Chip Bad Block 040C80 (0819) ignored Обнаружено ошибок: 19503 Исправлено ошибок: 19503 Verifying... Chip Bad Block 014F80 (029F) reassigned to 03FD80 (07FB) Chip Bad Block 016000 (02C0) reassigned to 03FD00 (07FA) File Bad Block 022B80 (0457) replaced with 03FD80 (07FB) File Bad Block 026180 (04C3) replaced with 03FD00 (07FA) Chip Bad Block 039C00 (0738) reassigned to 03FC80 (07F9) Chip Bad Block 03B500 (076A) reassigned to 03FC00 (07F8) Chip Bad Block 03BC80 (0779) reassigned to 03FB80 (07F7) Chip Bad Block 040400 (0808) ignored File Bad Block 040C80 (0819) outside the RBA Chip Bad Block 040C80 (0819) ignored Обнаружено ошибок: 112 Исправлено ошибок: 112 Микросхема запрограммирована. Контрольная сумма - 70DF T=678,91s
Что пока не работает. 1. Дампы, в которых используется два алгоритма ECC. В основном это телевизоры Sony. Программа понимает эти алгоритмы, но пока не решен вопрос как переключать алгоритм в процессе работы. К тому же у меня нет полной уверенности, что это "родной" дамп с телевизора, а не смонтированный файл от разных моделей. 2. Дампы, использующие 14-байтный ECC, с нестандартным размерами страниц.
Буду признателен за любые идеи или подсказки по этим вопросам. В случае, если эта информация конфиденциальна, это можно обсудить в личке или в техподдержке на сайте Тритона.