Ремонт автомобильной электроники

Публикации

Клонирование блоков комфорта (BCM) автомобилей Fiat Freemont, Chrysler 300C, Jeep Grand Cherokee, Dodge Charger, Durango, Journey, RAM, Challenger

Гарантия до 5 лет. Только оригинальные запчасти.

Предлагаю помощь в клонировании и ремонте блоков BCM автомобилей Fiat Freemont, Chrysler 300C, Jeep Grand Cherokee, Dodge Charger, Durango, Journey, RAM, Challenger.

Выполняю:

  • Клонирование программной части - считывание и перенос дампов FLASH и EEPROM памяти.
  • Модификацию программного обеспечения - корректировка конфигурационных данных, устранение ошибок согласования VIN между модулями, адаптация прошивки под конкретную комплектацию автомобиля.
  • Клонирование аппаратной части - переукомплектация платы донора под необходимый Part Number и ревизию: замена отсутствующих драйверов, перепайка компонентов, приведение платы в полное соответствие с оригиналом на компонентном уровне.

Работы выполняю качественно и точно в срок. Без предоплаты.

Звоните: +7 (919) 967-23-03

В блоке BCM автомобиля Fiat Freemont (перелицованная версия Dodge Journey для европейского рынка) вышли из строя цепи управления передним стеклоочистителем. Причём неисправность оказалась "плавающей": стеклоочистители то работают, то нет. Зависимости от вибрации, температуры или других возможных причин владелец не выявил.

Поскольку автомобиль находился в другом городе и возможности пригнать его для диагностики не было (на тот момент с ним велись другие ремонтные работы), было принято решение о клонировании блока комфорта.

Для решения задачи был куплен точно такой же блок BCM с идентичным каталожным номером (Рисунок 1, 2).

Обратите внимание: методика клонирования блока BCM, описанная в данной публикации, подходит для всех автомобилей Fiat Freemont, Chrysler 300C, Jeep Grand Cherokee, Dodge Charger, Dodge Durango, Dodge Journey, Dodge RAM и Dodge Challenger, на которых установлены блоки комфорта со следующими каталожными номерами (Part Numbers): 68154476AB, 68320319AB, 68320319AC, 68309502AC, 68424595AB, 68444252AD, 68444252AI, 68444252AH, 68236153AD, 68236153AC, 68236153AB, 68236153AA, 68396561AC, 68193350AD, 68193350AB, 68277389AC, 68236139AD, 68228904AD, 68193350AC, 68242014AD, 68396563AC, 68617764AA, 68666781AA, 68309504AB, 68154472AC, 68354140AC, 68372380AC, 68226574AB, 68164872AC, 68164835AC, 68236139AF, 68258390AD, 68258390AF, 68258390AH, 68354769AD, 68354769AC, 68354769AE, 68438337AE, 68200252AA, 68200252AB, 68200252AC, 68200252AD, 68200252AE, 68200252AF, 68200252AG, 68210531AA, 68210531AB и многие другие.

Все эти блоки комфорта одинаковы внешне и содержат на своём борту один и тот же микроконтроллер MPC5515SBMLQ66 (с ним мы и будем работать), но могут иметь отличия в аппаратной части.

Блоки BCM 68164835AD
Рисунок 1. Блоки комфорта BCM (P)68164 835AD (68164835AD) автомобиля Fiat Freemont 2013 г.в.

Итак, в наличии два блока управления кузовом (BCM) от Fiat Freemont 2013 года выпуска.

Справа - неисправный блок: в нём нестабильно работает управление передним стеклоочистителем. Из него мы будем считывать оригинальный дамп FLASH, включающий область EEPROM. В этом блоке отдельной EEPROM нет: она виртуальная и является частью FLASH.

Слева - приобретённый на разборке блок. Он полностью исправен и готов к приёму клонированных данных; на него будем переносить дамп с неисправного.

Оба блока имеют одинаковые каталожные номера (Part Numbers) - (P)68164 835AD, что крайне важно для совместимости.

При отсутствии в продаже блока с аналогичным каталожным номером можно приобрести блок с другим Part Number из той же линейки, но тогда на печатной плате такого блока будут отличия в распаянных электронных компонентах и распиновке разъёмов. В этом случае придётся выпаивать или припаивать лишние/недостающие детали, приводя купленный блок в полное соответствие с неисправным на компонентном уровне. Разводка печатных плат при этом, как правило, у обоих блоков должна быть идентична, однако бывают исключения, если аппаратная и/или программная ревизия купленного для клонирования блока отличается.

Почему у одних и тех же блоков с разными каталожными номерами имеются отличия? На компонентном и программном уровне разница, как правило, обусловлена различиями в комплектации автомобиля. Допустим, у одного и того же автомобиля, но в разных комплектациях, имеется или отсутствует функция автоматического складывания зеркал. Тогда в блоке автомобиля, у которого эта функция присутствует, на плате будут распаяны элементы цепей управления складыванием зеркал, а прошивка этого блока будет содержать программный код, поддерживающий эту функцию. Соответственно, в другом блоке это будет отсутствовать.

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

Отдельно стоит отметить: на большинстве автомобилей Chrysler этого поколения блок BCM связан с иммобилайзером, интегрированным в модуль RF Hub (Radio Frequency Hub Module, RFHM), так как в прошивке блока BCM прописан VIN-номер автомобиля. Если в автомобиль подкинуть (допустим, для проверки) такой же BCM блок от аналогичного автомобиля, разумеется, при этом в нём будет другой VIN-номер, то иммобилайзер в RF Hub заблокируется (его алгоритм посчитает, что машина подвергается угону), выдаст нестираемую ошибку B1A8A, после чего потребуется разблокировка и привязка блока RF Hub к автомобилю через дилерское оборудование wiTECH (в связке с онлайн-сервисом TechCONNECT), к которому в России доступ заблокирован. Впрочем, судя по информации на американских форумах, даже официальным дилерам устранить эту ошибку и заново возродить RF Hub удаётся далеко не всегда.

Краткая справка: B1A8A-00 - это код "Multi-Module VIN Handshake Failure" (Сбой согласования VIN между модулями). Условие возникновения ошибки B1A8A: RF Hub принимает и проверяет сообщения, содержащие VIN-номер, от PCM (Powertrain Control Module) и BCM (Body Control Module). Если VIN, полученный от одного из этих модулей, отличается от того VIN, который RF Hub сохранил при последней успешной синхронизации, он устанавливает этот код. И самое главное! Ошибка B1A8A фиксируется при потере связи RF Hub с BCM или ЭБУ. Причины могут быть разными: неисправность самого модуля, обрыв шины, либо банальное отключение блока - например, сняли разъём с BCM для проверки и включили зажигание. RF Hub в этот момент не видит BCM и записывает ошибку. Именно это и произошло в нашем случае, и к решению этой проблемы мы ещё вернёмся.

Важно: для Fiat Freemont (как и для Chrysler 300C, Jeep Grand Cherokee, Dodge Charger, Durango, Journey, RAM, Challenger), где иммобилайзер интегрирован в RF Hub, а VIN-номер прописан в его памяти, а также в ЭБУ и BCM, принято считать, что без дилерского оборудования wiTECH и доступа к TechCONNECT корректно выполнить привязку и устранить ошибку B1A8A невозможно.

Хорошая новость - это не так: проблема решаема, хотя и не просто. Но всему своё время. Подробнее о блокировке RF Hub и о том, как его разлочить, удалив ошибку B1A8A, я расскажу в следующей статье, а сейчас перейдём к клонированию BCM блока - тут тоже будет много интересного.

Шильдик BCM 68164835AD
Рисунок 2. Наклейка (шильдик) приобретенного блока BCM 68164835AD автомобиля Fiat Freemont 2013 г.в.

Для начала разберемся с данными на этикетке BCM блока, акцентируя внимания на тех, которые требуются при выборе клона.

Расшифровка информации на наклейке (шильдике) купленного на разборке исправного блока (Рисунок 2):

  • (P)68164 835AD - каталожный номер (Part Number) детали (OEM) от Fiat/Chrysler Mopar. Именно по этому номеру ищут и подбирают запчасть в случае замены. Подбор производится по восьмизначному номеру 68164835, префикс (P) - стандартное обозначение для Mopar, буквы AD в конце - это ревизия или версия (иначе дата выпуска) детали, которая может обновляться производителем.
    Mopar (от Motor Parts) - официальный бренд для оригинальных запасных частей, аксессуаров и сервисного обслуживания автомобилей концерна Chrysler.
  • 64469S - альтернативный номер блока по каталогу Mopar. Как и 68164835AD может использоваться для поиска этого блока.
  • 1503 - код даты производства, согласуется с серийным номером, начинающимся на YH1503...
  • Continental - компания производитель (один из крупнейших мировых поставщиков автокомпонентов).
  • Fabrique au Mexique / Made in Mexico - страна производства - Мексика, в которой Continental имеет внесколько заводов по выпуску электроники.
  • HW 68164835AD - аппаратная версия блока (Hardware), крайне желательно чтобы этот номер совпадал с вашим.
  • SW 68164832AD - версия программного обеспечения или прошивки (Software), также желательно чтобы этот номер совпадал с вашим.
  • PN A2C7410840000 - внутренний номер производителя от компании Continental. Полезен для поиска информации в базах данных производителя, но для поиска запчасти на рынке лучше использовать OEM-номер 68164835AD.
  • (T)YH150300956 - уникальный серийный номер конкретного экземпляра блока.

Шильдик BCM 68164835AD
Рисунок 3. Наклейка (шильдик) неисправного блока BCM 68164835AD автомобиля Fiat Freemont 2013 г.в.

А это наклейка от неисправного блока комфорта у которого перестали работать передние стеклоочистители (Рисунок 3). Каталожный номер 68164835AD, HW (аппаратная версия) 68164835AD и SW (программная версия) 68164832AD на этом блоке полностью совпадает с номерами на исправном блоке, даже ревизия (AD - последние литеры в Part Number).

Блоки BCM 68164835AD
Рисунок 4. Блоки комфорта BCM (P)68164 835AD (68164835AD) автомобиля Fiat Freemont 2013 г.в. - задняя сторона.

Эти же блоки с противоположной стороны. Чтобы разобрать блоки и добраться до печатных плат, сперва необходимо выкрутить винт, находящийся ближе к центру крышки (Рисунок 4), а затем отжать (желательно одновременно) клипсы, расположенные по периметру, и разъединить половинки.

Платы BCM 68164835AD
Рисунок 5. Печатные платы блоков комфорта BCM (P)68164 835AD (68164835AD) - вид сверху.

Перед нами две платы: слева - исправная (от блока, купленного на разборке), справа - с неисправными цепями управления передними стеклоочистителями (Рисунок 5).

Последовательно и тщательно сравниваем все электронные компоненты обеих плат между собой. Совпадение должно быть стопроцентным. К слову: если взамен вышедшего из строя блока куплен блок с точно таким же парт-номером, в нашем случае (P)68164835AD, то электронные компоненты на платах должны совпадать. Но проверка в любом случае обязательна. Не буду вдаваться в подробности, но мне попадались блоки с одинаковыми парт-номерами, однако разных ревизий, у которых установленные компоненты отличались. На блоке с более ранним релизом отсутствовали некоторые драйверы, которые пришлось перепаивать с донора. Да, это были не крайслеровские блоки, но причина, по которой сравнение обязательно, я думаю, очевидна.

Платы BCM 68164835AD
Рисунок 6. Печатные платы блоков комфорта BCM (P)68164 835AD (68164835AD) - вид снизу.

С противоположной стороны плат электронные компоненты отсутствуют (Рисунок 6). С этой стороны удобно проверять наличие пинов в разъёмах: на обоих блоках количество и расположение пинов должно совпадать.

Также по возможности стоит проверить разводку дорожек на плате (хотя бы внешних, так как платы, как правило, а в нашем случае бесспорно, многослойные). Иногда при изменении ревизии блока разводка дорожек меняется. В некоторых случаях это может привести к невозможности клонирования: блок с изменённой прошивкой либо не запустится, либо будет работать с ошибками.

Микроконтроллер MPC5515SBMLQ66
Рисунок 7. Микроконтроллер MPC5515SBMLQ66 QTW1309 YAGTQ неисправного BCM.

Сравнение плат на компонентном уровне выполнено. Они полностью идентичны, переходим к программной части.

Для начала подключимся к микроконтроллеру MPC5515SBMLQ66 QTW1309 YAGTQ, находящегося на плате неисправного блока BCM, (Рисунок 7) и посмотрим, что из него можно извлечь. По идее, в нём должно находиться всё программное обеспечение этого блока.

Забегу немного вперёд и сразу отмечу: в микроконтроллере, который мы будем клонировать, память EEPROM виртуальная - она является частью FLASH. Я ещё не подключался к нему, но изучил даташит. Наличие EEPROM и FLASH здесь логично и ожидаемо, но обычно это два независимых раздела памяти. В нашем же случае они объединены в один: FLASH хранит неизменный программный код, а виртуальная EEPROM - пользовательские настройки, которые задают режимы работы блока BCM. Кроме того, в микроконтроллере есть отдельный раздел теневой (SHADOW) памяти - только для чтения. Что это за раздел, разберём чуть позже. Несмотря на то, что структура памяти микроконтроллеров серии MPC5515 содержит и другие разделы, только с этими двумя разделам - CODE FLASH и SHADOW могут работать даже профессиональные программаторы.

Такая организация распределения памяти микроконтроллера не предусматривает отдельной микросхемы EEPROM на плате: энергонезависимая память реализована виртуальным блоком внутри FLASH и хранит данные, необходимые для переноса на другой блок. Внешняя EEPROM обычно представляет собой небольшую микросхему с 8 выводами, почти всегда расположенную рядом с микроконтроллером. Тем не менее наличие или отсутствие такой микросхемы на плате всё равно необходимо проверить.

Настало время работы с микроконтроллером.
Итак, микроконтроллер SPC5515SBMLQ66 - это 32-битный автомобильный микроконтроллер от NXP (ранее Freescale) из семейства MPC5510 на ядре e200z1 (архитектура Power). Он работает на частоте 66 МГц, имеет 768 КБ FLASH и 48 КБ RAM, выпускается в корпусе LQFP-144 и рассчитан на температурный диапазон −40…+125 °C. Предназначен для автомобильных приложений (центральные кузовные модули, шлюзы) и поддерживает интерфейсы FlexRay, CAN и LIN.

Полная структура памяти микроконтроллера MPC5515:

  1. CODE FLASH (основной массив)

    Размер: 768 КБ

    Адресное пространство: 0x0000_0000 - 0x000B_FFFF

    Как устроена: Массив физически разделен на три пространства: Low Address Space (LAS), Mid Address Space (MAS) и High Address Space (HAS).

    LAS состоит из 4 малых секторов по 16 КБ (L0–L3) и 2 средних по 48 КБ (L4–L5). Малые сектора обладают повышенным ресурсом (до 100 000 циклов стирания/записи), и именно в них разработчики софта организуют эмуляцию виртуальной EEPROM.

    MAS включает 2 сектора по 64 КБ (M0–M1).

    HAS включает 4 больших сектора по 128 КБ (H0–H3). В пространствах MAS и HAS хранится основной исполняемый код программы (софт блока BCM). Таким образом, системные изменяемые параметры и управляющая программа делят один общий кристалл флеш-памяти.

  2. SHADOW Flash (теневая / служебная область)

    Размер: 32 КБ

    Адресное пространство: 0x00FF_8000 - 0x00FF_FFFF

    Как устроена: Сервисная зона. Используется для хранения конфигурационных битов запуска процессора (BAM) и регистров низкоуровневой аппаратной защиты памяти. На б/у процессоре, который уже работал в составе готового изделия, эта область практически всегда переведена в режим Read-Only (только для чтения). Любые попытки программатора записать или стереть эти 32 КБ на б/у чипе полностью блокируются кремниевой логикой.

  3. Test Flash (Заводская область UTEST)

    Размер: 16 КБ

    Адресный диапазон: 0x0040_0000 - 0x0040_3FFF.

    Как устроена: Полностью изолированный физический массив памяти вне пользовательского пространства. Это закрытый заводской "черный ящик", где хранятся калибровки частоты встроенного генератора и уникальный ID кремниевого кристалла. Данный блок находится в режиме OTP (однократная запись), а его стирание аппаратно запрещено навсегда, о чем программаторы прямо предупреждают в логе: "Note that the Erase of the Test Flash block is always locked". Программатор к нему даже не подключается при стандартном чтении буфера, поэтому никакие пользовательские данные или серийные номера электронного модуля в Test Flash храниться не могут.

  4. Internal SRAM (Внутреннее ОЗУ)

    Размер: 64 КБ / 80 КБ (в зависимости от маски процессора)

    Адресное пространство: Начало строго с 0x4000_0000

    Как устроена: Сверхбыстрая статическая оперативная память. Защищена аппаратным кодом коррекции ошибок (ECC), исправляющим случайные искажения бит при просадках питания. Поддерживает режим Standby: при переходе устройства в режим глубокого сна (Low Power) на часть ОЗУ сохраняется дежурное питание. Благодаря этому микроконтроллер мгновенно "просыпается" по внешнему прерыванию, помня текущее состояние системы, переменные и таймеры.

Считывать и записывать данные будем программатором Xhorse MultiProg, который поддерживает этот микроконтроллер (среди прочих).

MCU Adapter Xhorse MultiProg
Рисунок 8. Адаптер программатора Xhorse MultiProg для подключению к микроконтроллеру MPC5515SBMLQ66.

Для подключения к микроконтроллеру непосредственно на плате, без выпаивания, задействуем шнур-адаптер MCU Adapter (Рисунок 8), идущий в комплекте с программатором. Кратко рассмотрим, что он собой представляет.

Специалисты Xhorse не перевели документацию полностью на английский язык - половина обозначений на изображении адаптера выполнена китайскими иероглифами. Впрочем это не создаёт серьёзных проблем: во-первых, на самом адаптере есть кембрики с обозначениями, а во-вторых, можно ориентироваться по цвету проводов.

Важно обратить внимание на то, что все провода, выходящие из адаптера, разделены на три группы:

  1. Группа питания - самые толстые провода. Состоит из 6 проводов: двух чёрных - масса (GND), объединённых между собой; 4 красных - питание (VCC, VDD, VPP, DC-PWR), также объединённых друг с другом. Крайне важно не перепутать эти провода при подключении к микроконтроллеру ни с какими другими и припаивать их только к тем пинам, которые обозначены на схеме подключения. В противном случае вы с очень большой долей вероятности выведете микроконтроллер из строя.
  2. Группа тонких проводов - служат для работы программатора с микроконтроллером. На схеме обозначены иероглифами, но продублированы цветами (Gray - серый, Green - зелёный, Blue - синий, Purple - фиолетовый, Orange - оранжевый, Yellow - жёлтый, Red - красный и Brown - коричневый). В работе будет задействована большая часть из них.
  3. Группа из двух тонких коротких проводов в экране: белый CLK - линия подачи тактового сигнала (Clock) от программатора к микроконтроллеру и чёрный GND-C - выделенная "чистая" земля (Ground-Clock) именно для тактовой линии. Ground-Clock - это не общий минус питания, а отдельный опорный проводник, который создаёт "нулевую точку" для тактового сигнала Clock, обеспечивая его максимальную стабильность.

Для дальнейшей работы нам потребуются группы 1 и 2.

Схема подключения MultiProg к MPC5515
Рисунок 9. Схема подключения программатора Xhorse MultiProg к микроконтроллеру MPC5515SBMLQ66.

Итак, перед нами типовая распиновка для подключения программатора Xhorse MultiProg по интерфейсу JTAG к микроконтроллеру MPC5515 семейства MPC5510 (NXP, ранее Freescale) (Рисунок 9).

Расшифровка линий подключения:

  • VCC (Voltage Common Collector) - питание. Плюс питания программатора и микроконтроллера (обычно 3.3В или 5В, зависит от платы).
  • GND (Ground) - земля, общий минус. Обязательно соединяется с землей программатора.
  • RESET - сброс. Сигнал для перевода микроконтроллера в исходное состояние (активный низкий уровень). Необходим для корректного старта программирования.
  • JCOMP (JTAG Compliance) - сигнал разрешения/сброса для JTAG-контроллера. Управляет режимом работы порта отладки. Для того чтобы программатор "увидел" чип, на этот пин обычно нужно подать высокий уровень (подтянуть к VCC). Если его не подключить, чтение/запись могут быть невозможны.
  • TDI (Test Data Input) - вход данных JTAG. Сигнал, по которому данные от программатора поступают в чип.
  • TDO (Test Data Output) - выход данных JTAG. Сигнал, по которому данные из чипа возвращаются программатору.
  • TCK (Test Clock) - тактовый сигнал JTAG. Синхронизирует обмен данными между программатором и чипом.
  • TMS (Test Mode Select) - выбор режима тестирования. Управляет внутренней логикой JTAG-контроллера (TAP controller) в чипе.

Важно!

Резистор 100 Ом между линиями JCOMP и VCC.
На схеме указано что линия JCOMP и VCC должны быть соединены через резистор 100 Ом - это не просто рекомендация, а обязательное условие. Поскольку Xhorse MultiProg не имеет встроенную подтяжку для линии JCOMP, то необходимо впаять резистор на 100 Ом между пином JCOMP (68 ножка) и VCC (46 ножка). Без этого программатор будет выдавать ошибку связи с чипом.

Резистор 500 Ом - 1 кОм на линии TCK.
Если MultiProg не может прочитать или записать ваш чип MPC5515 серии, необходимо подключить последовательно в линию TCK резистор номиналом от 500 Ом до 1 кОм (подбирается эмперически). Это делается для гашения помех и "звона" сигнала. Если у вас длинные провода, или чтение срывается, попробуйте впаять этот резистор в разрыв провода, идущего на пин TCK (71 ножка).

Печатная плата BCM 68164835AD
Рисунок 10. Фрагмент печатной платы блока BCM BCM (P)68164 835AD (68164835AD).

Подпаиваться напрямую к ножкам микроконтроллера сложно и опасно - легко перепутать выводы, создать короткое замыкание или повредить микросхему. В таких случаях обычно находят на плате пятачок или элемент (резистор, конденсатор), соединённый напрямую с нужным выводом микросхемы, и подпаивают провод к нему.

Но нам повезло: на плате предусмотрены специальные контактные площадки (Рисунок 10), на которые выведены все ключевые выводы микроконтроллера, необходимые для программирования.

Такие площадки - скорее исключение, чем правило: они есть далеко не на всех платах содержащих микроконтроллеры или микросхемы памяти. Косвенно это говорит о том, что возможность программирования микроконтроллера на плате изначально заложена производителем и что чип не защищён от считывания и программирования.

ISP-площадки MPC5515 на BCM
Рисунок 11. Контактные площадки на плате блока BCM для внутрисхемного программирования микроконтроллера MPC5515SBMLQ66.

На рисунке 11 - увеличенное изображение контактных площадок ISP (In-System Programming) для внутрисхемного программирования микроконтроллера. Для определения распиновки я прозвонил контакты площадки относительно выводов микросхемы мультиметром; микроскоп использовал для позиционирования щупов на ножках микроконтроллера. Найденные связи отмечены стрелками и подписаны.

Распиновка приведена для программатора Xhorse MultiProg, поэтому задействованы не все контакты площадки.

Распайка разъёма MultiProg к MPC5515
Рисунок 12. Распайка разъёма программатора Xhorse MultiProg внутрисхемно к микроконтроллеру MPC5515SBMLQ66.

Теперь подпаиваем выводы адаптера к контактным площадкам. Между линиями JCOMP и VCC устанавливаем резистор сопротивлением 100 Ом.

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

Перед подключением разъёма к программатору необходимо отмыть место пайки от флюса - его остатки могут создать паразитные утечки, что приведёт к ошибкам при считывании и записи дампов.

Клонирование MPC5515
Рисунок 13. Считывание дампа микроконтроллера MPC5515SBMLQ66 программатором Xhorse MultiProg.

На данном этапе подключаем плату неисправного блока BCM к программатору и начинаем процесс клонирования. В интерфейсе программатора доступны два раздела внутренней памяти: CODE FLASH и SHADOW. Первым делом считываем и сохраняем на компьютер оба раздела.

Несмотря на то что переносить на исправный блок BCM мы будем только CODE FLASH, а раздел SHADOW в данном микроконтроллере доступен только для чтения, следует взять за правило всегда и при любых обстоятельствах сохранять полную копию программного обеспечения микросхемы. Что-то может пойти не так, и заранее неизвестно, не придётся ли откатывать прошивку чипа в исходное состояние.

Краткая инструкция по работе с микроконтроллером серии MPC5515 от MultiProg, взято из документации.

Информация об устройстве:

  • Производитель: MOTOROLA;
  • Наименование чипа: MPC5515;
  • Объем памяти (в 8-битных байтах): C8000h (819200 Байт);
  • Алгоритм подключения: JTAG;

Важная информация:

  1. Обратите внимание: стирание блока Test Flash всегда заблокировано. Область Test Flash является OTP-зоной (допускает только однократную запись, без возможности очистки).
  2. бласть CODE FLASH SHADOW часто используется для хранения пользовательских конфигурационных битов (option bits) или битов защиты от чтения и копирования (censorship).

Общая информация по адресам:

  • Массив CODE FLASH (основная память) расположен в буфере программатора по адресам: 00000000h - 000BFFFFh
  • Массив SHADOW (служебная память) расположен в буфере программатора по адресам: 00FF8000h - 00FFFFFFh

Фрагмент дампа CODE FLASH MPC5515
Рисунок 14. Фрагмент дампа раздела CODE FLASH микроконтроллера MPC5515SBMLQ66 QTW1309 YAGTQ неисправного BCM.

Сначала считываем раздел CODE FLASH и выполняем верификацию. Если верификация считанного дампа с содержимым микросхемы прошла успешно, дамп можно считать корректным. Дополнительно проверяем содержимое: почти наверняка в нём будут данные в открытом виде. В нашем случае, помимо прочей осмысленной информации, мы видим VIN автомобиля, повторяющийся четыре раза (рисунок 14).

Если считывать дамп несколько раз подряд и результат всегда одинаков, а в содержимом присутствует осмысленная информация - это верный признак того, что дамп считан правильно и без ошибок.

Я уже упоминал об этом ранее, но сейчас повторюсь: в микроконтроллере MPC5515SBMLQ66 отдельного аппаратного модуля EEPROM нет. Вместо него используется программная эмуляция EEPROM на основе основной флеш-памяти (CODE FLASH), поддерживающей режим "чтение во время записи" (Read-While-Write, RWW).

Вот как это реализовано согласно технической документации NXP:

  • Разделение флеш-памяти: Основная флеш-память (CODE FLASH) объемом 768 КБ разделена на небольшие блоки (партиции).
  • Выделенная область: Специально для эмуляции EEPROM выделяется один или несколько таких блоков.
  • Процесс обновления: Когда BCM нужно сохранить, например, новое положение сиденья или обновить VIN, драйвер эмуляции EEPROM записывает эти данные в выделенный блок. В это же время процессор может продолжать выполнять код из другого, основного блока, не дожидаясь завершения записи.
  • Данные для клонирования: Когда вы клонируете BCM, ваш программатор считывает содержимое всей флеш-памяти, включая эту эмулируемую область. Именно поэтому в считанном дампе содержатся и VIN, и PIN-код, и все настройки.

Вывод: такой подход к организации памяти микроконтроллера MPC5515SBMLQ66 означает, что все уникальные данные автомобиля "зашиты" непосредственно в основной флеш-памяти. Когда происходит считывание CODE FLASH программатором, получается полный образ, включая и ту область, которая программно эмулирует EEPROM. Отдельного чипа EEPROM в BCM нет - его функцию выполняет небольшой, специально выделенный участок основной флеш-памяти.

Фрагмент дампа SHADOW MPC5515
Рисунок 15. Фрагмент дампа раздела SHADOW микроконтроллера MPC5515SBMLQ66 QTW1309 YAGTQ неисправного BCM.

Теневая (SHADOW) область в нашем блоке BCM содержит всего две строки, отличные от пустых (FF). Эти данные - служебная информация самого микроконтроллера, к автомобилю она отношения не имеет; по крайней мере, такой вывод можно сделать после изучения даташита. Считать эту область можно, а записать в неё ничего не получится: производитель намеренно закрыл её, иначе микроконтроллер можно навсегда вывести из строя.

Обратите внимание на два байта кода (EE DB), которые я выделил на изображении. Именно этим участок в дампе SHADOW нашего блока отличается от дампа SHADOW в блоке, на который мы будем переносить информацию (рисунок 19). Всего два байта разницы - но вопросов по этой разнице впереди будет много, и, к сожалению, они в некотором смысле останутся без ответа.

Кратко о теневой памяти (SHADOW FLASH) в MPC5515:

Техническая документация NXP (производитель данной серии микроконтроллера) описывает теневой блок как область для "security or system initialization information", то есть для служебных, а не автомобильных данных. В отдельных реализациях теневой сектор может использоваться под пользовательские опциональные биты (user option bits), но это по-прежнему не данные, привязанные к конкретному автомобилю.

Иначе, теневой блок - это отдельный небольшой энергонезависимый блок внутри FLASH-модуля (32 КБ). Он существует вне обычного адресного пространства и программируется/стирается независимо от основной памяти. Предназначен для служебной информации, которая должна быть доступна до запуска основного кода:

  • биты цензуры (защита от чтения через JTAG);
  • настройки последовательной загрузки (serial boot);
  • калибровочный байт TRIMIRC для внутреннего генератора;
  • информация о сбросе lock-регистров FLASH.

Вывод: чтение из теневого блока - обычное. Запись и стирание технически возможны, но только при установленном бите MCR[PEAS], и сопряжены с риском необратимо "залочить" чип, поэтому на практике его закрывают от записи, работает режим "только для чтения".

Микроконтроллер MPC5515SBMLQ66
Рисунок 16. Микроконтроллер MPC5515SBMLQ66 QJF1318 YIJNQ исправного (с разборки) BCM.

Сохранённый дамп CODE FLASH переносим в микроконтроллер MPC5515SBMLQ66 QJF1318 YIJNQ купленного рабочего блока (Рисунок 16). Разумеется, для этого придётся выполнить всю предыдущую работу ещё раз.

Если всё прошло удачно и дамп записался в новый микроконтроллер без ошибок, клонирование блока можно считать успешным. Область SHADOW, как мы помним, перенести невозможно: она закрыта от записи.

Плата BCM 68164835AD
Рисунок 17. Восстановление платы блока BCM (P)68164 835AD (68164835AD) после клонирования.

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

Собираем блок, устанавливаем его в автомобиль и проверяем.

Стеклоочистители снова работают, как и другие функции. Подключённое диагностическое оборудование ошибок не находит. Вроде бы всё в порядке, блок работает без нареканий, но…

Два разных VIN в блоке BCM
Рисунок 18. Результат диагностики: после клонирования в BCM обнаружены два VIN (сканер OTOFIX D1 PROS2).

... теперь диагностический сканер, показывает в блоке BCM два вин номера: нужный нам 3C4PFAAB5DT676018, который мы перенесли из неисправного блока , и 2C3CCANJ2DH718618, из купленного, от чужого автомобиля, который спрятался непонятно где (Рисунок 18).

Возникает предположени, что старый вин номер в закодированном виде может находится именно в теневой (SHADOW) области, хотя в даташит говорится, что эта область памяти предназначена только для технических данных. Но что за данные там помещены можно только преполагать.

Фрагмент дампа SHADOW MPC5515
Рисунок 19. Фрагмент дампа раздела SHADOW микроконтроллера MPC5515SBMLQ66 QTW1309 YAGTQ исправного (с разборки) BCM.

Более того, информация в SHADOW (теневой) области на блоках отличается только двумя байтами, которые я выделил курсором: 89 DF - в купленном блоке (Рисунок 19), против тех же двух байт EE DB - в нашем, неисправном блоке (Рисунок 15). Сложно предположить, что можно закодировать VIN-номер в двух байтах.

То, что старый VIN-номер мог случайно остаться при клонировании в основном разделе CODE FLASH, исключено, так как после записи нового дампа программатор проводит проверку (верификацию) содержимого памяти с файлом, откуда происходит запись. Эта процедура гарантирует то, что запись прошла без ошибок.

Хорошая новость: на этом этапе процедуру клонирования можно завершить и смело ставить блок в автомобиль - несмотря на то, что сканер выдаёт два VIN-номера в содержимом памяти блока, RF Hub корректно его определяет, не выбрасывает фатальную ошибку B1A8A, функции автомобиля работают штатно, хотя в системе и висят два VIN-номера, что неприятно.

Микросхемы  BCM 68164835AD
Рисунок 20. Схема расположения интегральных микросхем на плате блока комфорта BCM P)68164 835AD (68164835AD).

И всё же наличие постороннего VIN в блоке комфорта не даёт мне покоя. Сразу оговорюсь: эта статья пишется "по мотивам".

Автомобиль давно отремонтирован и уже нашёл нового хозяина. Как я говорил ранее, клонирование блока BCM было лишь первым этапом этой задачи: когда я удалённо клонировал BCM, владелец автомобиля случайно заблокировал RF Hub, и следом пришлось решать ещё и эту проблему. На решение ушло около двух недель: автомобиль находился в другом городе, а приезжать туда я мог только по выходным.

За это время был приобретён ещё один RF Hub, чтобы слить из него чистый дамп EEPROM без ошибки, а родной блок BCM отремонтирован. В общем, автомобиль давно продан, я пишу статью, а на руках у меня остались два блока, доставшихся в наследство: BCM (клонированный, с двумя VIN-номерами) и RF Hub. Оба абсолютно рабочие и привязаны к проданному автомобилю по VIN-номерам, иммобилайзеру и ключам - проще говоря, это полные копии тех блоков, что уехали вместе с автомобилем.

Такое положение дел даёт поле для дальнейших поисков и экспериментов.

Но для начала давайте снова вернемся к плате клонированного блока BCM, содержащего в своей прошивке два VIN номера и попробуем отыскать внешнюю еепром память, и если старый VIN не находится в памяти микроконтроллера, то она точно будет присутствовать.

По стандартной топологии любой платы эбу, если на ней присутствует внешняя память, то она должна находится в непосредственной близости от микроконтроллера, попробуем ее найти, а заодно проверим все остальные микросхемы, для успокоения души так сказать.

Интегральные микросхемы, присутствующие на плате блока BCM (P)68164835AD.

  1. 6251DS (TLE6251DS) SOP-8 - высокоскоростной приёмопередатчик CAN-шины (High-Speed CAN Transceiver) с функцией пробуждения, производства Infineon Technologies.
  2. 2272M (TLC2272M) SOP-8 - двойной маломощный прецизионный операционный усилитель (Dual Operational Amplifier), производства Texas Instruments.
  3. VN5E160S SOP-8 - одноканальный драйвер верхнего плеча (High-Side Driver) от компании STMicroelectronics. Микросхема специально разработана для управления автомобильными нагрузками, подключёнными к "массе".
  4. D5E050AJ (VND5E050AJ-E) - двухканальный драйвер верхнего плеча (High-Side Driver) с аналоговым измерением тока от компании STMicroelectronics, предназначенный для управления автомобильными нагрузками, подключёнными к "массе".
  5. TLE7239GS - 8-канальный интеллектуальный драйвер (SPIDER) верхнего (High-Side) и нижнего (Low-Side) плеча, произведённый компанией Infineon Technologies. Микросхема специально разработана для автомобильных применений для управления стандартными реле и светодиодами.
  6. TLE7237GS - 8-канальный интеллектуальный драйвер (SPIDER) верхнего (High-Side) и нижнего (Low-Side) плеча, произведённый компанией Infineon Technologies. Микросхема специально разработана для автомобильных применений для управления стандартными реле и светодиодами.
  7. MC10XS3535HFK - автомобильный 5-канальный (три с сопротивлением 10 мОм, два - 35 мОм) драйвер/переключатель верхнего плеча (High-Side Switch) от компанией NXP (ранее Freescale Semiconductor). Предназначен для управления мощными нагрузками в автомобильных системах освещения (лампы, ксеноновые модули, светодиоды).
  8. D5E160AJ (VND5E160AJ-E) - двухканальный драйвер верхнего плеча (High-Side Driver) с аналоговым измерением тока от компании STMicroelectronics, предназначенный для управления автомобильными нагрузками, подключёнными к "массе".
  9. VNQ5E160K - четырёхканальный драйвер верхнего плеча (High-Side Driver), произведённый компанией STMicroelectronics. Микросхема предназначена для управления автомобильными нагрузками, подключёнными к "массе", и широко применяется в блоках управления кузовом (BCM), ЭБУ и других автомобильных модулях.
  10. TLE8264E - универсальная системная базовая микросхема (System Basis Chip, SBC) производства Infineon Technologies, разработанная для автомобильных применений. Она объединяет в себе функции питания, связи и управления периферийными устройствами в одном корпусе.
  11. ULQ2003AT - сборка из семи транзисторов Дарлингтона, производства Texas Instruments..
  12. HC4051A (MC74HC4051A) - аналоговый мультиплексор/демультиплексор 8:1 от компании ON Semiconductor, выполненный по КМОП-технологии. Микросхема предназначена для коммутации аналоговых или цифровых сигналов, позволяет подключить один из восьми входов к общему выходу (или наоборот) под управлением цифрового кода.
  13. S50055A (BTS50055-1TMA) - автомобильный интеллектуальный ключ верхнего плеча (High-Side Power Switch) из серии PROFET™ от компании Infineon Technologies/
  14. S50080A (BTS50080-1TMA) - автомобильный интеллектуальный ключ верхнего плеча (High-Side Power Switch) из серии PROFET™ от компании Infineon Technologies/

Итак, при детальном анализе найдены три микросхемы в корпусе sop8, но они не являются EEPROM памятью. Две из них находятся в непосредственной близости от микроконтроллера, а одна с противоположного конца платы. Их я привел в самом начале выборки, специально отметив, что они в корпусе SOP8 (Рисунок 20). Маркировку и назначение оставшихся микросхем я тоже привел следом за ними, это не бесполезная информация, так как разбор элементной базы электронного оборудования дает более полное понимание его топологии и крайне необходимо при ремонте.

Мне попадались блоки BCM c внешней памятью, как EEPROM так и FLASH, встречались даже блоки с тремя микропроцессорами, но не в этот раз. На этой плате кроме микроконтролллера нет больше ни одной микросхемы. в которой могла бы находится какая либо прошивка.

В принципе, на этом можно было бы и закончить, но хочется разобраться до конца, что же у нас произошло.

Предлагаю снова подключиться программатором к склонированному блоку, который остался у меня, и прочитать из него дамп снова. Затем изучим вычитанный дамп и сравним его с оригинальным дампом родного BCM, который мы туда изначально заливали. И если в повторно вычитанном дампе склонированного блока произошли изменения, например "вылезли" донорские данные, попытаемся разобраться, что же произошло, и сделать какие-либо выводы.

Фрагмент дампа CODE FLASH MPC5515
Рисунок 21. Фрагмент дампа раздела CODE FLASH микроконтроллера MPC5515SBMLQ66 QTW1309 YAGTQ с двумя VIN номерами склонированного (исправного, с разборки) BCM после его активации в автомобиле.

Собственно говоря, вот скриншот части повторного чтения дампа из склонированного блока (Рисунок 21), после того как он был установлен в автомобиль и активирован его системой.

Можно было бы сказать, что в коде дампа произошли некоторые изменения, но это было бы неправдой - изменения кардинальные. При сравнении двух дампов - оригинального (который заливали) и вычитанного после установки блока в автомобиль - практически всё светится красным: вычитанный заново дамп изменился глобально. И теперь вместо 4 одинаковых VIN-номеров подряд появилось два старых и два новых.

Почему при клонировании б/у чипа старый VIN выживает?

Физическая запись нового дампа во все 768 КБ CODE FLASH проходит успешно. Если бы контроллер памяти процессора блокировал стирание секторов эмуляции EEPROM, программатор MultiProg сразу прервал бы процесс с ошибкой верификации — записанные данные не совпали бы со считанным буфером. Но сектора очищаются, и в чип записывается только новый VIN-номер. Двоение VIN-номера объясняется тем, как устроена эмуляция EEPROM и как с ней работает софт кузовного модуля Continental.

Как устроена эмуляция EEPROM. Виртуальная EEPROM работает по принципу циклической дозаписи: новые данные дописываются в свободные строки флеш-памяти в секторах LAS (Low Address Space), а внутренние индексы актуальности при этом увеличиваются. У каждого физического кристалла процессора своя карта износа ячеек и заводских калибровок, привязанных к его аппаратной части. Когда заливается «чужой» дамп, структура маркеров оригинального автомобиля один-в-один переносится на физическую структуру флеш-памяти донора.

Что происходит при первом включении. При первой подаче питания и инициализации блока на автомобиле софт BCM Continental обнаруживает конфликт контрольных сумм в ОЗУ (которое сохраняет данные в режиме Standby) либо несоответствие логической структуры виртуальной EEPROM. Дальше в дело вступает аппаратный уровень: внутренний контроллер флеш-памяти процессора понимает, что логическая структура данных нарушена, и активирует скрытые аппаратные ячейки замещения — резервные области кремния, которые использовались на машине-доноре для компенсации износа флеш-памяти. Эти области физически невидимы для стандартных программаторов при записи CODE FLASH.

Итог. Как только блок донора включается, его внутренний софт Continental считывает эти резервные ячейки — и извлекает оттуда «выживший» VIN донорского автомобиля.

BCM 68164835AD
Рисунок 22. Сборка склонированного блока BCM 68164835AD автомобиля Fiat Freemont 2013 г.в..

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

Если микроконтроллер MPC5515 уже находился в эксплуатации, его служебная зона SHADOW Flash закрыта для записи на аппаратном уровне. Программный обход этой защиты невозможен. Ни один существующий программатор не способен принудительно изменить биты защиты памяти или очистить заблокированную кремниевую структуру виртуальной EEPROM в б/у чипе.

Для достижения 100% идентичности при ремонте существует только два решения:

  1. Программное (только для новых компонентов): Применение исключительно новых, "чистых" (Blank) процессоров MPC5515 из коробки, у которых SHADOW-зона еще открыта для записи.
  2. Аппаратное (для б/у доноров): Физический перенос (перепайка) оригинального микроконтроллера MPC5515 со старой поврежденной платы на заведомо исправную плату донора. Поскольку процессор переезжает вместе со своей физической структурой памяти и родной конфигурацией SHADOW Flash, устройство сохраняет абсолютную аутентичность без конфликтов адресов и сбоев инициализации.


Я ремонтирую