DEF после изменения байта чексуммы

VDOeditor2. Micronas

Думаю что большинству из тех, кто работает с VDO приборными панелями VAG, хорошо известен то факт, что в 35 платформе использовались решения не только на базе NEC850, но и на базе Micronas Securised 3217G. Такие панели с внешним EEPROM объемом 4096 байт в большинстве своем ставились в Audi, чуть реже в VW и, на сколько мне известно, не применялись в Skoda.

Ранние версии VDOeditor 1 понимали такие дампы, но изменить ничего было нельзя. Поэтому поддержка Micronas не была реализована и вскоре полностью удалена.

Но все меняется и, очень похоже, что VDOeditor2 (VDOe2) получит поддержку дампов панелей на базе Micronas, включая полюбившуюся многим функцию замены и конвертации шкал, благодаря Antony из Électrovag.

Некоторое время назад на форуме появилась ветка на тему «Как на счет Audi A3 White/Red clusters?» На тот момент я мог ответить одним словом: никак. На руках нет ни дампов, ни панелей: одним словом нет ничего. В таких условиях сложно говорить о какой-либо реализации. Обсуждение можно было заканчивать.

Но обсуждение получило продолжение: был предоставлен дамп и смещение карты спидометра (пусть и не очень точное, но это не важно). И каково же было мое удивление, когда с минимальными модификациями в VDOe2 этот дамп был загружен и даже обработан в рендере шкал (не обращаем внимания на артефакты вроде контрольной точки).

Дамп Micronas в VDOe2
 Дамп Micronas в VDOe2

Начало хорошее, но для полноценного решения нужно знать алгоритм пересчета контрольной суммы и ее адрес. Без корректной суммы после загрузки исправленного дампа вы увидите сообщение об ошибке: DEF.

Ошибка целостности Micronas
 Ошибка целостности Micronas

Значит надо искать адрес и алгоритм. И тут была главная проблема: на одном дампе без тестовой панели далеко не уедешь. А панели у меня не было. Конечно, при наличии свободного времени можно и на базе одного дампа найти нужное, но мне, например, не хотелось бы тратить время на подобный вариант поиска.

Скорее всего, это обсуждение так бы и заглохло, если примерно в это же время ко мне не обратился Anthony со схожим же вопросом о поддержке Micronas в VDOe2. Однако, у него были весомые аргументы в виде структурированной коллекции дампов, желание и возможность протестировать промежуточные результаты.

Чтобы найти нужное пришлось написать временный  дополнительный код для VDOe2, который для начала сформировал обобщенную карту дампов EEPROM, а потом рассчитал  статистику распределения.

Карта выглядела примерно следующем образом:

Карта EEPROM Micronas
 Карта EEPROM Micronas

Байты 0x00 расположены по адресам, где потенциально может находится контрольная сумма. Байты 0xFF обозначают адреса, в которых контрольная сумма находится точно НЕ может.

После получения карты, все что осталось сформировать статистику, используя карту. Результат полученной таким образом статистики был более чем очевидным =) 

Распределение статистики
 Распределение статистики

Не представляю сколько времени могло бы потребоваться, чтобы проверить все варианты, если бы не было этой статистики. А так, все что мне оставалось этот попросить Anthony исправить байт по адресу, который набрал 42 совпадения. На рабочем дампе такая модификация, очевидно, должна дать DEF.

Просим Anthony поменять байт и бинго, заветный DEF!

DEF после изменения байта чексуммы
 DEF после изменения байта контрольной суммы

Ну и финальный тест. Берем дам от 8J0920930A со шкалой 300 км/ч.

Дамп 8J0920930A в VDOe2
 Дамп 8J0920930A в VDOe2
Шкала 300 кмч в панели 8J0920930A
 Шкала 300 кмч в панели 8J0920930A

И импортируем в этот дамп другую шкалу, благо это операция в VDOe2 требует всего пары кликов мышкой. Я брал в прямом смысле первую попавшуюся, это оказалась шкала в 160мч из дампа от 8P0920983G.

Импорт из дампа 8P0920983G
 Импорт из дампа 8P0920983G
Дамп 8J0920930A со шкалой от 8P0920983G
 Дамп 8J0920930A со шкалой от 8P0920983G

Опять просим проверить результат и вуаля. Все работает. Ошибка отсутствует.

Проверка дампа с измененной шкалой
 Проверка дампа с измененной шкалой

Вот таким образом, удалось найти решения для простой замены и конвертации шкал для панелей приборов на базе Micronas. В ближайшее время, все наработки, полученные в результате этих экспериментов будут реализованы в VDOeditor 2. База EEPROM также получит соответствующие обновление и поддержку дампов Micronas.

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

Оставайтесь с нами. Надеюсь, что дальше будет не менее интересно…