Распиновка эбу digifant df1
Осенью был наконец-то установлен компрессор, и тут же встал вопрос настройки мозга, т.к. конфиг довольно сильно отличается от стока: другие форсунки, ст сж, объем, наддув. На более менее похожих чипах машина отказывалась работать, а единственные 2 человека, которые понимают в настройке ЭБУ Digifant - KDA и Vov@Syncro - уже давно не сидят на форуме. Установку других мозгов считаю неприемлемой и никогда на моей машине их не будет, поэтому стал разбираться, как работает дигифант. Также, не вижу никаких оснований доверять найденным в сети адресам таблиц и параметров, винолсу с его автопоиском карт тем более.
Единственный правильный путь - разреверсить весь мозг самому, что и было сделано в межсезонье. На это ушел не один месяц, поэтому считаю важным не потерять опыт и выложить свои наработки для всех. С другой стороны, это можно рассматривать как мануал по созданию инженерного блока с удобной онлайновой настройкой карт в 3D, поэтому описывать все буду максимально подробно.
Все сделанное можно повторить для любого другого мозга. Не нужно поддержки ни k-line, ни CAN, ни других протоколов.
Purplelightblue Corrado '90 R36
E3V series
Recaro Flockdiagonal half leather
Schwartz Exklusiv interior
Айтишник
Итак, вскрываем Digifant.
Фото из интернета:
Ключевыми элементами мозга являются микропроцессор Motorola MC68HC11A1FN, микросхема MC68HC25FN (для расширения регистров) и чип памяти EPROM 27C256 в корпусе DIP28, содержащий прошивку. При включении зажигания, микропроцессор считывает программу из чипа во внутреннюю память и выполняет. Все эти элементы находятся на небольшой плате, соединенной с основной шлейфом. По сути, все остальные элементы мозга это т.н. обвязка - они нужны для преобразования уровня сигналов, устранения помех, защиты от перепадов напряжения и тд.
EPROM это постоянная память, мозг может только её прочитать, для записи необходим программатор. Я использовал MiniPro TL866.
Вынул чип из мозга, считал дамп программатором и открыл в дизассемблере IDA Pro, указав архитектуру микропроцессора - Motorola 6811A1, адреса загрузки, как на скриншоте:
Таблица векторов прерываний находится по адресу 0xFFC0-0xFFFF. RESET располагается по 0xFFFE. Переходим на прерывание RESET. Из первых инструкций видно, что RAM располагается по 0xB000. Там следует проименовать все регистры согласно даташиту, поскольку IDA этого сама не сделала.
Теперь потребуется схема мозга. К счастью, добрый человек её уже нарисовал в 2002 году для дигифанта, она есть на форуме.
Если для другого мозга схемы нет - её нужно будет делать самостоятельно. Долго и кропотливо, но ничего сложного. Есть куча софта, который в этом поможет, типа P-CAD.
Собственно, далее прошивка несколько месяцев реверсилась, постоянно заглядывая в схему, Instruction Set и даташит. Поначалу было непонятно вообще нифига, как на этом скришоте:
но довольно быстро вкуриваешь, как работают микропроцессоры, и что имели ввиду инженеры bosch (кликабельно):
Purplelightblue Corrado '90 R36
E3V series
Recaro Flockdiagonal half leather
Schwartz Exklusiv interior
Айтишник
Несколько вспомогательных моментов при разборе кода:
1) Функции чтения из таблиц.
С этого можно начать анализ. Ищутся легко, т.к. небольшие, состоят из сплошной арифметики, работают с регистрами, а не с RAM. Адрес таблицы передается через индексный регистр X. Смотрим, откуда они вызываются и находим таким образом около 90% всех таблиц в прошивке.
Код чтения данных из оставшихся таблиц не вынесен в отдельные функции.
2) Почему на скриншоте значение 0x54 это 491Ом?
Сигналы, которые не надо оцифровывать (микрики), приходят напрямую на порты микропроцессора. Остальные, как ни странно, приходят на АЦП
Напряжение, подающееся на АЦП, должно быть в пределах опорного напряжения (пины процессора Vrh и Vrl - 5В и 0В). Далее АЦП выдает байт пропорционально.
Т.е. если на на пин приходит 0В, АЦП выдаст значение 0x00. 5В - 0xFF. 1,647B - 0x54.
Для привязки физических величин с большинства датчиков к напряжению на АЦП, гуглим, что такое делитель напряжения. Для датчиков ДТОЖ и ДТВ - гуглим модифицированное уравнение Стейнхарта-Харта. Для сигнала с датчика Холла - гуглим про фронт и спад сигнала, и читаем в даташите про счетчики и прерывания входных/выходных сравнений микропроцессора.
Чтобы постоянно не лазить в калькулятор, был написан скрипт на python, содержащий все необходимые преобразования:
3) Гуглинг 80го левела
Найденные более ранние прошивки приходилось бы анализировать с нуля, что заняло бы слишком много времени. Переименование регистров, поиск функций чтения из таблиц, поиск самих таблиц по этим функциям, создание структур для описания форматов, поиск базонезависимых функций (hardcode) - все это было автоматизировано с помощью python-скриптов для IDA. Теперь я загружаю неизвестную прошивку, натравливаю скрипт и вуаля, огромный кусок прошивки разобран, основные таблицы найдены, проставлено множество комментариев.
Purplelightblue Corrado '90 R36
E3V series
Recaro Flockdiagonal half leather
Schwartz Exklusiv interior
минипредыстория вообщем появилось у меня 12в постоянно на форсунках, вследствии чего переливает пипец как, полазил по форуму и понял что похоже сгорели мозги, но прежде чем починить ЭБУ хотелось бы устроить причину что бы опять не погорели, а распространённая причина это отсутствие массы на нужных контактах, посмотрел по схеме 13 контакт (масса отрицательный вывод аккумулятора) прозванивается, 19 контакт (масса впускной коллектор) не прозванивается, где найти эту массу на коллекторе, можно ли к ней подобраться не снимая его?, и на каких контактах должна прозваниватся масса? заранее спасибо за помощь
Распиновки ЭБУ Bosch
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Siemens
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Delphi
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Magnetti Marelli
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Denso
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Mazda
Посмотреть распиновки раздела
View more
Распиновки ЭБУ Toyota
Посмотреть распиновки раздела
View more
12.14.22 Система зажигания, блок управления Digifant / Volkswagen Golf II
Общие сведения
F60 – датчик положения дроссельной
заслонки на холостом ходу;
F81 – датчик положения дроссельной заслонки
при максимальной частоте вращения;
G19 – потенциометр измерителя воздушной смеси;
G40 – датчик Холла;
G42 – датчик температуры всасываемого воздуха;
G61 – датчик детонации;
Читайте также: