Разбор стокового дампа раннего блока для 2.7 TDi (TD27ETi) по коду. Дизассемблером C166 разобрано 40 657 инструкций, около 450 функций, таблица процессов на 60 записей и 58 калибровочных карт (77 обращений). Каждая карта привязана к функции, которая её читает, и к переменным на её осях.
Железо и карта памяти те же, что у блока Frontera X22DTH. Две микросхемы флеша, C167 с масочным ПЗУ, код в 0x10000–0x37FFF, калибровка в 0x38000–0x3FFFF через DPP0/DPP1 = 0x0E/0x0F, тот же пролог задач и те же адреса подпрограмм ПЗУ (интерполяция карт 00:20D6 / 00:20AC, выход из задачи 00:07B4). Инструменты и выводы по Фронтере сюда переносятся, адреса карт — нет.
Регулятор дозатора ТНВД находится в ПЗУ. Флеш считает уставку дозатора FC56 и сразу передаёт её через CALLS 00:26FC. ПИ-регулятора и записей в ШИМ/CAPCOM2 во флеше нет, поэтому коэффициенты регулятора не меняются. Вся цепочка подачи до уставки — во флеше.
Алгоритм контрольной суммы тот же, что у Фронтеры. По блоку на каждый набор данных (0x00B80–0x07FFB → 0x07FFC, 0x38B80–0x3FFFB → 0x3FFFC), на стоковом дампе обе суммы верны. Редактор карт поддерживает этот блок и пересчитывает обе.
Жёсткий предел подачи в блоке параметров. Он ограничивает подачу независимо от всех карт, которые показывает ECM Titanium; выше 68 мг его тоже нужно поднимать.
| Адреса | Что там |
|---|---|
| 00000–0FFFF | Процессор видит здесь своё масочное ПЗУ, вызовы 00:xxxx уходят туда. В файле по 0x00000–0x07FFF лежит второй набор данных (Nissan 7F406). |
| 10000–13FFF | Загрузчик и сервисы. Таблица из 19 векторов по 0x10120 ведёт в ПЗУ: таймеры, АЦП, последовательный порт, сброс. |
| 10000–37FFF | Код. По 0x2F1A0 диспетчер на 81 вход (похоже на диагностику по K-line). |
| 38000–3FFFF | Рабочий набор данных (Nissan 7F405). Таблица процессов по 0x383F6 (60 × 10 байт), таблица указателей на карты по 0x38F04. Контрольная сумма по 0x3FFFC: тот же алгоритм, что у Фронтеры, редактор карт её пересчитывает. |
Код работает с набором по 0x38000 (при старте DPP0 = 0x0E, DPP1 = 0x0F). Копия по 0x00000–0x07FFF устроена так же и отличается в 812 байтах, в основном картой «подача → дозатор» и двумя картами обороты × подача. Переключения на неё в коде нет, а по этим адресам процессор видит ПЗУ, так что она, скорее всего, не используется. Адреса одной и той же карты в двух наборах отличаются на 0x38000; ECM Titanium показывает адреса 0x0xxxx и пишет в оба набора.
Запрос водителя = f(обороты, педаль C1D0).
Потолок подачи: ограничитель по оборотам (атм. давление × обороты), ограничитель дыма с входом , пусковая подача и ещё 13 карт.
Координатор подачи: сводит запрос и ограничения, читает 8 карт по 0x3919A–0x39630.
Итоговая подача и подача на впрыск.
Поправка по температуре топлива .
Уставка дозатора: пересчитывает подачу и обороты в положение дозатора ТНВД.
Номера процессов и функции найдены в этой прошивке напрямую. Их роли определены сопоставлением кода с более поздней прошивкой Terrano, где цепочка разобрана построчно. Переменные: обороты FC3A (ID оси E08A), итоговая подача FC36, потолок FCBA, педаль C1D0, атмосферное давление C234, уставка FC56.
Карты, которые код реально читает через подпрограммы интерполяции ПЗУ. Уверенность подписи: H — роль подтверждена кодом и ECM Titanium, M — кодом, L — догадка; у карт без подписи роль пока не установлена. Нажмите на строку, чтобы увидеть описание карты.
| Заголовок | Данные | Размер | Роль | Ув. | Функция |
|---|