Нажмите "Enter", чтобы перейти к содержанию

Восстанавливаем “окирпиченное” Головное Устройство (MZD CONNECT I)

Вопрос восстановления CMU после неудачного обновления поднимался не один раз. Внесу свой вклад по изучению данного вопроса.

Стоить отдать должное всем кто ранее изучал данный вопрос, приведу некоторые источники:
1. www.2x4logic.com/jci-failsafe.html
2. yms.livejournal.com/3006373.html
3. mzdonline.wordpress.com/2…nnect-mission-impossible/
4. mazda3revolution.com/foru…reen-mzd.html#post2401643
5. www.drive2.ru/c/3110055/%C2%A0#_=_

Подход к восстановлению заключается в следующем:

  1. Разобрать CMU модуль.
  2. Найти микросхему SPI NOR Flash памяти — MX25L6445E
  3. Выгрузить из неё содержимое (сделать дамп)
  4. Подкорректировать полученный дамп
  5. Загрузить обратно исправленный дамп
  6. Повторить процедуру обновления с помощью USB-флешки

Что за микросхема SPI NOR Flash в CMU?

Это микросхема памяти на плате CMU, содержащая загрузчики, конфигурацию, прошивку Fail-Safe. Именно с неё начинается грузиться система.

Плата Mazda CMU (MZD CONNECT I)

Вблизи микросхема выглядит так:

MX25L6445E

Структура памяти микросхемы SPI NOR Flash

Структура памяти SPI NOR Flash

Небольшая цитата из первого источника:

Образ bootstrap соответствует образу Программы загрузочных устройств, задокументированному Freescale для i.MX6. В зависимости от состояния раздела boot-select он либо выполняет код из ibc1 (нормальная работа) или ibc2 (операция обновления, fail-safe).

Выполнение ibc1 приводит к загрузке системы в NAND-flash image (~ 5 ГБ памяти). Выполнение ibc2 переходит к выполнению 7-мегабайтного «отказоустойчивому» образа.

«Отказоустойчивое» изображение (Fail-Safe) — это то, что заставляет ЖК-дисплей отображать индикатор выполнения во время длительного процесса обновления. Он считывает образ обновления с USB-накопителя и перепрограммирует флэш-память NAND, а также встроенное ПО встроенных периферийных устройств.

Для пользователя обновление прошивки состоит из двух частей: «отказоустойчивая» (bootstrap, ibc2 и fail-safe) и приложение (ibc1, NAND-flash и периферийная прошивка).

Аргументация JCI была явно основана на (ошибочном) убеждении, что это сделало его отказоустойчивым, поскольку устройство будет загружаться только в ibc2 + безотказно до полного обновления прошивки. Однако, как всегда, дьявол кроется в деталях.

Подробней о байте по адресу 0x10000 (boot-select)

Если он равен 0xFF, то загружается основная система,
Если 0x00, то загружается fail-safe, чтобы после запустить обновление с USB-флешки.

Иногда достаточно поменять этот байт на 0x00 для перезапуска процесса обновления. Именно этот случай описан в источнике №4

Из выше приведенных источников было установлено, что файл обновление с окончанием _failsafe.up содержит искомые bootstrapibc2 и fail-safe.

Кстати, если кто не знал, то файлы обновления *.up ничто иное как запакованные zip-архивы.

Отсюда следует, что в случае повреждения bootstrap, ibc2 и fail-safe их можно восстановить в дампе, что и было проделано в источнике №2.

Для упрощения процесса извлечения прошивок из файлов обновления fail-safe и внедрения данных в дамп была написана небольшая утилита — Mazda Fail-Safe Extractor

Mazda Fail-Safe Extractor

Mazda Fail-Safe Extractor

Как это работает можете посмотреть на видео:

Как считать и записать микросхему памяти SPI NOR Flash:

Оборудование:
CH341A programmer: https://aliexpress.ru/item/32725360255.html
SOIC16 SOP16 Clip: https://aliexpress.ru/item/32956814786.html

Скачать: Mazda Fail-Safe Extractor
Mazda Fail-Safe Extractor
Скачано: 88, размер: 704.5 KB, дата: 10 Май. 2020

PS:
Вот и первые отзывы: www.drive2.ru/l/523032459726553163/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

шестнадцать + девятнадцать =