Дмитрий DarkByte Москин

Мой блог, да.
logo

Прошивка ЭБУ Lada XRAY (М86 Итэлма) или чип-тюнинг на коленке

Опубликовано 01.06.2020 автором Дмитрий Москин
С приходом тепла вновь ощутил ущербность программистов родного автоваза. Машина брыкается, с места трогается с провалами и рывками, электронная педаль газа реагирует с секундной задержкой, и даже когда до машины доходит, что педаль газа была нажата, то разгон получается такой, будто под тобой не 106 лошадей, а один жирный увалень, которого как ни бей - ногами он быстрее перебирать не станет. А уж если в него ещё и 92 бензин залить, то ситуация ещё сильнее усугубится, и даже музыка не сможет заглушить звона от детонации. Впрочем многие на это не обращают внимание, а кто-то с подобными проблемами вовсе не сталкивался - автоваз одинаковых машин не выпускает.



Впрочем и я уже с проблемой смирился. Но на днях участник форума xrayclub под ником Electromaster выложил ссылку на свой пост на drive2, после прочтения которого появилась новая надежда. Сразу же обратился за помощью к пользователю msa96.

Сходу он никого не смог порекомендовать в нашем городе, но предложил произвести прошивку самостоятельно, порекомендовав товарища, который и помог работаться с процессом прошивки. Собственно это была небольшая предыстория, а ниже будет описан сам процесс прошивки ЭБУ на примере М86 Итэлма.



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

Кроме того, если при прошивке что-то пойдёт не так, то опять же можно потерять блок или возможность его прошивать данным методом. Но в целом процесс довольно простой, не требует особых знаний, а из железа потребуется только USB-K-Line адаптер, 12В блок питания и несколько проводов, чтобы соединить всё это вместе.



В моём случае в качестве адаптера оказался usb vag com kkl 409.1 на чипе CH340. И чтобы там не рассказывали маркетолухи, в данном случае не имеет никакого значения, будет адаптер выполнен с использованием usb-uart преобразователя от фирмы FTDI, или его аналоге - CH340.

Главное, чтобы адаптер определился в системе как COM-порт. В случае проблем с установкой драйверов, можно попробовать установить их вручную (например для CH340).



Собственное потребление контроллера М86 (без подключенных к нему устройств) составляет примерно 1Вт, поэтому подойдёт любой блок питания на 12В. Данное питание так же потребуется подключить и к K-Line адаптеру, так как при штатном использовании он предполагает получение питания от бортовой сети автомобиля через OBD2 разъём.

Чтобы немного упростить задачу и избавиться от необходимости использовать внешний блок питания, я решил встроить в адаптер повышающий dc-dc преобразователь на базе MT3608. Мощности данного преобразователя достаточно как для питания адаптера, так и для питания ЭБУ. А размеры позволяют разместить его внутри корпуса адаптера.



К блоку управления потребуется подцепить 5 проводов, я использовал китайские монтажные провода (dupont wire).

Плюс 12В на L3 (питание ЭБУ), на A5 (зажигание), и на G5 (переключение контроллера в режим программирования). Так же +12В подключается к адаптеру на пин 16.

Минусовой провод GND - L4 на блоке соединяется с минусом на адаптере - пин 4, и с минусом блока питания.

И так же K-Line - пин  C4  (на правом разъёме) соединяем с пином  7  адаптера.

При подключении стоит быть аккуратным, и не замыкать провода на соседние пины, так как например пины L3 и K3 соединены, и подав +12В на один, они окажутся на втором. Аналогично с землёй - K4 K5 L4 L5 - это один и тот же провод.



Электрическая часть на этом закончена, можно приступать к настройке ПО. Для чтения и записи прошивки используется Infineon MemTool. Скачиваем и устанавливаем. После первого запуска программы потребуется настроить профиль контроллера (либо скачать готовый). В меню выбираем Target -> Change



Тыкаем: New -> Create a new target configuration step by step. Далее



Заполняем Taget description: "XC2768X-136F", выбираем в Family: SAB C166S-V2 Family (XC16x, XC2000, XE166). Далее



В type выбираем XC2768X-136F. Далее



Выбираем Minimonitor Interface. Нажимаем Setup



На вкладке General в Access Device выбираем COM порт нашего адаптера. На вкладке Monitor меняем Baudrate на 38400. И ставим галочку Use K-Line protocol. ОК. Далее. Далее



В появившемя окне пишем имя для нашего профиля, например "XC2768X-136F" и нажимаем Сохранить. ОК.



В итоге видим основное окно программы, начальная настройка завершена, можно подавать питание на ЭБУ и нажимать кнопку Connect.

Если всё сделали правильно, то статус должен смениться на "Ready to Memtool Command", в противном случае могут быть следующие варианты ошибок:

  • "Port error: Не удается найти указанный файл." - не подключен адаптер или не правильно выбран порт в настройках профиля
  • "Start monitor failed" - просто нажать Retry, или переткнуть адаптер и попробовать ещё раз
  • "K-Line protocol failed" - возможно забыли подключить 12В питание к адаптеру на пин 16.
  • "Bootstrap loader not responding !" - контроллер не отвечает, проверить ещё раз подключение, передёрнуть зажигание (A5)

После успешного подключения первым делом выполняем резервную копию текущей прошивки блока. Для этого в левой части окна нажимаем Read -> New



Задаём блок для считывания с адреса 00C00000, по адрес 00D0FFFF. Итоговый размер получается примерно 1.063M. ОК -> Start



Дожидаемся окончания считывания прошивки и нажимаем Save As. Выбираем надёжное место для хранения оригинальной прошивки

Так же после подключения к блоку и перед записью новой прошивки необходимо настроить защиту для секторов EEPROM, для этого нажимаем SW Protect и отмечаем галочками 16 секторов начиная с 64 (сектора начинающиеся с адресов 0х00С40000 - 0х00С4F000 включительно). Данная настройка записывается в профиль, но всё равно можно на всякий случай проверять, что в правом окне данные сектора отмечены как защищённые от записи.



Полученная от msa96 прошивка представленная в виде бинарного файла (для примера можно взять последнюю версию официальной прошивки: I765XM57), а Infineon MemTool желает видеть файл в HEX формате. Для преобразования воспользуемся утилитой srec_cat. Для тех, кто не умеет пользоваться командной строкой - в архиве есть инструкция. Всё делается одной командой:
srec_cat.exe I765XM57v3.bin -Binary -offset 0x00C00000 -output I765XM57v3.hex -Intel


После выполнения которой, получившийся файл можно загружать в Infineon MemTool, нажав в левой части окна кнопку Open File. Затем Select All и Add Sel



И если уверены, что всё сделали правильно, то можно нажимать кнопку Program. Сначала будет удалена текущая прошивка, затем записана новая, и в конце пройдёт проверка записанных данных



На этапе проверки, в районе отмеченных как защищённые секторов EEPROM (0х00С40000 - 0х00С4F000) счётчик ошибок насчитает их некоторое количество - так и должно быть. Главное, чтобы ошибок не было за пределами данных секторов. Но в любом случае, результат этапа verify будет failed - это нормально. Можно закрывать окно, отключать питание и подключать контроллер обратно к автомобилю.



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

Ну и на случай, когда начнёт казаться, что всё не так хорошо, как хотелось бы, и появится подозрение о том, что всё это самовнушение - в прошивке предусмотрен режим включения стоковых настроек, - после включения зажигания нужно нажать и подержать 5 секунд педаль газа в пол, а затем отпустить и завести двигатель. Разница заметна сразу, но так же я заметил, что свежая прошивка I765XM57 отличается от той, что была залита в мой блок с завода (I765XK55) и после этого никем никогда не трогалась. Поэтому если у вас есть подобные описанным в начале проблемы, а официальный дилер разводит руками и отказываться обновлять ПО ЭБУ под предлогом того, что для вашей машины обновлений не поступало - то можно для начала залить свежую версию серийной прошивки, без всяких модификаций - возможно этого будет достаточно.

Результат однозначно радует и остался лишь один вопрос - как я ездил до этого, и зачем так долго надеялся на решение проблем от официального дилера автоваза?