Сравнение двух дампов eMMC/SPI: хэши и различия
Дамп полезен, только если это точная копия. Два чтения одной микросхемы должны совпадать бит в бит; если нет, что-то не так с контактами, питанием или программатором. Хэши и побайтное сравнение подскажут, что именно.
Раздел: Руководство по прошивкам и дампам.
Когда нужно сравнивать
- Сразу после чтения микросхемы: копия 1 с копией 2.
- До и после ремонта: что ТВ изменил в собственной памяти?
- Рабочий аппарат и неисправный с одинаковой платой.
- После записи: прочитать обратно и сравнить с записанным файлом.
Шаг за шагом
- Прочитайте микросхему дважды, ничего не трогая между чтениями. Порядок работы в первый раз описан в статьях чтение дампа eMMC и распиновка SPI-флеш SOIC8.
- Проверьте размеры файлов. Они должны быть одинаковыми. Другой размер означает, что чтение оборвалось или прочитана не та область.
- Посчитайте хэш каждого файла. CRC32 быстр и подходит для обнаружения случайных ошибок; MD5, SHA-1 и SHA-256 лучше подходят для записи эталона. Равные хэши означают идентичные файлы.
- Если хэши отличаются, выполните побайтное сравнение, чтобы получить список отличающихся диапазонов (смещение и длина).
- Определите по картине причину, устраните её и прочитайте заново.
Как читать различия
| Картина | Вероятный смысл |
|---|---|
| Несколько разбросанных одиночных байтов или небольших блоков, каждый раз разные | Нестабильный контакт или пограничное питание; переподключите провода и сократите их |
| Большая область 0x00 или 0xFF в одной из копий | Чтение не удалось или остановилось; проверьте программатор и питание |
| Одни и те же несколько областей всегда отличаются у двух ТВ | Данные конкретного аппарата (серийные номера, MAC, калибровка) или логи; это нормально |
| Различия только в конце | Размеры отличаются; общая часть совпадает, а хвост отмечается отдельно |
Если ТВ работает, пока вы читаете eMMC в плате, его собственная прошивка может писать в микросхему во время чтения, поэтому два корректных чтения могут отличаться. Читайте при неработающей основной системе и не считайте, что различие в области логов означает плохое чтение.
Типичные ошибки
- Сравнивать дамп с пакетом прошивки и ждать совпадения. Это разные вещи.
- Доверять одному чтению. Одно чтение может скрыть плохой контакт, который проявится только во втором.
- Сравнивать после «исправления» дампа вручную. Сначала посчитайте хэш оригинала и сохраните его.
- Игнорировать проверку размера.
Как это делается в FW Tool
- «Справочник → Hex-утилиты» считает CRC32, MD5, SHA-1 и SHA-256 за один проход по файлу, с индикатором выполнения и отменой для больших дампов.
- Функция сравнения работает побайтно, потоково, и возвращает число отличающихся байтов и список диапазонов (смещение, длина); список ограничен по длине, и программа сообщает, если он был обрезан. Если размеры отличаются, сравнивается общая часть, а хвост считается отдельно.
- В той же вкладке можно искать шестнадцатеричный шаблон или текстовую строку (ASCII и UTF-16) и открыть классический hex-просмотр со смещениями и ASCII.
- Во вкладке «Дамп eMMC» запись в дамп по умолчанию выключена и включается галочкой; сделайте копию и проверьте её хэш, прежде чем включать запись. Смотрите все возможности.
Когда копия проверена, её можно исследовать, как описано в статье как устроен пакет USB-прошивки.
Вопросы и ответы
Достаточно ли CRC32?
Чтобы поймать плохое чтение — да. Для долговременной записи эталона сохраните ещё и более надёжный хэш.
Два хороших чтения отличаются в нескольких местах. Дамп плохой?
Не обязательно. Посмотрите, где именно: логи, счётчики и метки времени меняются сами. Повторите чтение и проверьте, отличаются ли те же диапазоны.
Можно ли сравнить папку eMMC с образами разделов?
Считайте хэши и сравнивайте файл за файлом. Совпавшие разделы можно отмечать по отдельности.
Ведение записей
Для каждого устройства записывайте маркировку микросхемы, размер дампа, хэш и дату. Храните оригинальный дамп только для чтения и работайте только с копиями. Когда вам снова попадёт та же модель, хэш позволит сразу проверить, идентичен ли присланный вам дамп вашему, не открывая его. Если вы обслуживаете много ТВ одной модели, коллекция проверенных дампов становится эталонной библиотекой для неисправностей, при которых подозревается содержимое памяти, а не железо.
Второе применение сравнения — после попытки ремонта. Прочитайте микросхему, измените одну вещь, прочитайте снова и сравните: список диапазонов точно покажет, какие области ТВ перезаписал. Это простой способ узнать, какие разделы хранят настройки, а какие систему, и решить, что можно безопасно восстановить из резервной копии.
Наконец, помните: совпавший хэш доказывает лишь то, что два файла одинаковы, а не то, что содержимое хорошее. Два одинаковых чтения микросхемы с отказывающей ячейкой или микросхемы, читаемой через постоянно неисправный контакт, совпадут и всё равно будут неверными. По возможности подтверждайте дамп проверкой, что таблица разделов читается и файловые системы открываются, как описано в статье о дампе eMMC.