Здравствуйте! Наша команда занимается ремонтом и исследованием автомобильной электроники (и не только) более десяти лет. Мы изучаем устройство стороннего ПО, и разрабатываем утилиты для взаимодействия с прошивками и программами. Нередко мы сталкиваемся с интересными задачами. На страницах этого блога мы планируем делиться интересными исследованиями и историями ремонта. Мы надеемся, что наш опыт может быть полезным другим профессионалам в этой области. Сегодня мы хотим поделиться случаем ремонта блока SRS от Volkswagen Crafter, который помог нам углубиться в детали и выявить важные моменты.
ЭБУ SRS
, номер 5QF 959 655 AH
. Для того, чтобы убедиться в необходимости ремонта блока управления, в нашей компании тестируемое оборудование запускается сначала на столе.
Блок управления диагностировался по CAN шине платформой CantracerFD посредством интерфейса Tactrix OpenPort 2.0. Также его можно было считать другими инструментами для диагностики автомобилей VAG. В блоке, как мы видим, записана актуальная внутренняя ошибка B2000
. В автомобилях группы компаний VAG
такие ошибки нестираемые и удаляются только посредством модификации дампов ЭБУ SRS
.
В ремонтируемом блоке управления стоит процессор Infineon Tricore TC233-32
серии. Ранее нам встречались похожие блоки, но там был процессор TC222-16
серии. Дампы очень похожи, но имеют немного больший размер. Поэтому первое, что было сделано, это анализ и сравнение дампов с аналогами донорских ЭБУ
. Номера доноров:
5QF959655L
(TC22xx-16)
5QF959655A
5QF959655AA
Первичный анализ дампа показал, что блок разбит на три секции. Секции отделены друг от друга заголовками:
3A F5 AF AF F5 F5 AF AF
Изначально мы обратились за помощью на форумы, где нам предложили полностью стереть третью секцию. Очистка третей секции никаких изменений в блоке управления не вызвала. Таким образом, было определено, что внутренняя ошибка находится во второй секции и править нужно её. Изменения во второй секции вызвали появление множества внутренних ошибок в ЭБУ,
свидетельствующих о нарушении целостности дампа. Следующим этапом мы провели более глубокий анализ дампа. Просматривались сигнатуры блоков данных, фрагменты, из которых состоит дамп, где они начинаются и где они заканчиваются, где определяется тип блока, где определяется размер блока, где определяются флаги блока, где контрольная сумма и так далее. Разобрать такой большой дамп вручную - трудоёмкая задача. Мы приняли решение автоматизировать процесс, для этого был написан скрипт на языке Python. До написания скрипта мы обнаружили алгоритм контрольной суммы, она определяется в формате:
CRC-16/CCITT-FALSE
Затем дампы обработали калькулятором. Проверили как оригинальный дамп, в котором есть внутренняя ошибка, так и донорские дампы, в которых её нет. В процессе обнаружилось, что контрольная сумма не совпадает по трём блокам. Мы не стали их править, потому что эти же блоки, на донорских дампах имеют такие же проблемы. Далее произвели анализ посредством сравнения блоков, из которых удалено всё лишнее, и есть только данные. Для этого скрипт был модифицирован таким образом, чтобы сортировать блоки данных по типам. Было произведено сравнение однотипных блоков. Далее на скриншоте сравнения текстовых отчётов скрипта, который определяет типы блоков. Видно, что блок типа 0х400
размером 0x468
, а у донорского блока размер 0x5F0
, он находится слева.
Этот метод помог нам выделить блок данных типа 0хА00
, содержимое которого радикально отличается от донорского, и было сделано предположение, что по этой причине записывается внутренняя ошибка ЭБУ
.
После чего этот блок данных был перелит из донорского целиком в наш оригинальный дамп. Замена блока с типом 0xA00
привела к тому, что внутренняя ошибка исчезла. Помимо этого мы модифицировали блок, в котором хранятся ошибки и пересчитали контрольную сумму, чтобы ЭБУ
был полностью работоспособным.
Как итог, важно отметить, что анализ структуры дампа и выявление контрольных сумм являются ключевыми этапами в процессе ремонта электронных блоков автомобилей. Использование программы на Python
для анализа блоков дампа делает подход к устранению ошибок и восстановлению работоспособности блока SRS
более эффективным. Кроме того, копирование данных из донорского блока и последующее удаление ошибок с поправкой контрольной суммы имеют важность точности и надёжности процесса восстановления. Шаги, проделанные в нашем исследовании, не только позволяют устранить ошибки в блоке SRS
, но и гарантируют безопасность и надёжность работы системы пассивной безопасности автомобиля. Важно подчеркнуть, что процесс ремонта электронных блоков требует высокой квалификации и тщательного подхода к каждому этапу.
Комментарии (10)
shadrap
04.11.2024 05:51вот вроде интересно - но нифига не понятно... Ошибка по пиропатронам видимо обычно результат серьезной аварии , поэтому внутреннее ПО "хоронит" блок путем изменения контрольной суммы? В этом проблема? Насколько я помню у VW все блоки верифицированы защитным ключем , как защита от краж и не-санкционированной перепродажи запчастей, здесь получается такого нет ?
ecurep Автор
04.11.2024 05:51Давайте по-порядку:
Ошибки по пиропатронам возникают из-за того, что мы тестируем блок "на столе", без подключения периферии (подушек безопасности, датчиков, индикаторов и всего остального). На самом деле к блоку подключается (как и показано на схеме подключения) только питание и шина CAN.
Контрольная сумма в данном случае не являлась причиной внутренней ошибки, это очевидно из статьи. Контольные суммы применяются совсем не для того, чтобы прописывать внутренние ошибки, а для верификации целостности данных.
Защита от краж называется "Защитой компонентов". Она имеет место, если вы заменяете весь дамп целиком. Существуют блоки данных, где прописан VIN код автомобиля в зашифрованном виде, эти блоки мы не трогали, поэтому "защита" не включилась.
dec123
а после чего возникла ошибка B2000 ?
FAZIT в блоке есть?
ecurep Автор
В блоках подушек безопасности ошибка
B2000
возникает в ряде случаев:1. после превышения некоторого количества записанных в блоке событий;
2. после "сбоя" при обновлении или выполнения других диагностических функций;
3. при сбоях в питании;
4. при сбоях в периферии блока;
5. при выходе из строя электронных компонентов блока;
6. нарушение целостности прошивки.
Конкретно здесь, скорее всего, имели место проблемы с проводкой автомобиля.
FAZIT не понимаю при чём здесь. Мы не работаем посредством диагностических инструментов, мы работаем непосредственно со встроенными в блок ПЗУ. В современных автомобилях группы VAG есть "Защита компонентов", она включится, если будет использован донорский дамп или ЭБУ с другого автомобиля. Но это - тема отдельной статьи и рассказывать здесь об этом не планировалось.
dec123
счетчик ударов тоже потерли или Вы стерли только краш и B2000?
D-Flash из MCU читали/писали по CAN или через UART или JTAG?
ecurep Автор
Счетчик ударов потереть несложно. Но в данном блоке не было ударов, так как у автомобиля не было столкновений, и, следовательно, не было краш-даты.
Связь с процессором устанавливалась по JTAG.
dec123
Оригинальный VIN автомобиля в блоке сохранился после замены D-Flash? Обновление прошивки блока через ODIS пробовали делать?
ecurep Автор
Разумеется сохранился. Обновление не делали.