По открываемого файла не соответствует по инженерного эбу
-2) С прошивкой J7ES в 7м блоке OltSn читает ключ, а АТО нет
* Вобщем вроде победил. С прошивкой версии 0.4.5 так и не захотел читаться sn . С прошивкой версии 0.4.4 всё пошло .
* Прошивки j7ES лежат тут
-1) В настройках должен быть указан онлайн протокол:
Протокол обмена=olt
0) Засранный EEPROM
* Чистить!, вообще его надо чистить после смены прошивки и при каждом удобном случае.
1) в настройках порта программы Atomic Tune online понизьте скорость
* это касается всех блоков Январь 7(особенности прошивки)
* всех не качественных адаптеров, особенно китайских VAG-COM, не качественные адаптеры просто не могут переварить интенсивный обмен данными. Если уж даллас с использованием инженерного протокола не читается, то о качественной отстройке авто речи быть не может.
2) не корректно подключён даллас к Микроконтроллеру
* Возможно отсутствует подтягивающее сопротивление, смотрите даташит на ds2401
* Возможно ошиблись с монтажом: перепутали ножки и т.п.
3) Блок читает серийник в микросхеме непонятной для неё командой
* Особенно это касается прошивки J7es, в которой доступна возможность читать даллас разными командами в зависимости от модификации микросхемы или в принципе от типа используемого насителя серийного номера.
4) В блоке записана не инженерная прошивка
* проверяйте флаги комплектации, заново записывайте инженерную прошивку в блок
5) программатор в процессе записи прошивки в блок внёс изменения в прошивку в процессе записи
*бывает и такое, особенно со взломанными коммерческими программами для записи прошивки в блок.
6) не исправна инженерная плата, или допущены ошибки при её монтаже
* проверяйте монтаж, или отправляйте\отдавайте блок на монтаж квалифицированным специалистам. Сэкономите в конечном итоге своё и наше время.
7) Проблемы с адаптером или блоком
* можно попробовать продиагностировать при помощи программы ECUCheck
Всегда можно проверить читается ли даллас в принципе программой OLTsn, если она прочитала даллас, значит с аппаратной точки зрения всё нормально, прошивка в блоке корректно читает серийный номер.
С первого дня разработки прошивки j7es у меня была идея реализовать протокол онлайн калибровки отдельных таблиц на не инженерном ЭБУ. Для данной задачи виделось два пути решения:
- Хранение калибровок в EEPROM, которая доступна для чтения и записи.
- Реализация функций захвата отдельных таблиц калибровок, перенос значений из этих таблиц в свободные области RAM и переключение ЭБУ в режим выбора значений захваченной калибровки из RAM.
Второй способ показался проще в реализации, на нем и остановились. Захват таблиц калибровок возможен только на специально подготовленной прошивке, начиная с версии j7es_v15.4_ram, и с использованием клиентского ПО OpenOlt начиная с версии 2.0.0.4.
Одним из ограничений данного метода онлайн настройки является то, что одновременно может быть захвачена и настраиваться только одна таблица, при этом в момент возврата управления к таблице из ROM, измененные ячейки перестают учитываться ЭБУ.
Весь процесс представляет собой следующую последовательность действий:
- Подготавливается ram версия прошивки j7es и записывается в ЭБУ.
- Запускается OpenOlt и в нем открывается требуемая прошивка.
- Запускается двигатель и устанавливается связь в OpenOlt с ЭБУ.
- Открывается закладка RAM в OpenOlt.
- Выбирается требуемая таблица из списка доступных к захвату таблиц
- С помощью кнопки "Захватить" осуществляется переключение на работу с RAM таблицей, при этом в память ЭБУ загружаются текущие значения из сетки (можно сразу записывать измененные значения).
- Далее, изменяя значения в ячейках таблицы, можно производить онлайн настройку захваченной калибровки.
- Все изменения сразу же передаются в память ЭБУ и сохраняются в файле прошивки, открытой в OpenOlt.
- По окончанию настройки необходимо переключить ЭБУ обратно на режим работы с таблицей в ROM, выполняется кнопкой "Вернуть".
После окончания настройки, необходимо загрузить измененную прошивку в ЭБУ. Таким образом, данный режим работы позволяет исключить необходимость многократного перепрограммирования ЭБУ, при настройке выбранной калибровки. За один сеанс настройки можно изменять несколько таблиц из списка, но онлайн калибровать одновременно только одну, при возвращении управления использоваться будут неизмененные калибровки из прошивки.
Появилась идея таки реализовать нечто подобное прошивкам LS и TRS для ЭБУ Я7. Предлагаю здесь собрать первичные требования: какие калибровки удалить, что добавить.
Мой вариант первой версии:
1) Удалить разделение экономичного и мощностного режимов
Таблицы для удаления:
УОЗ для экономичного режима - 0x6AC8, 16x16, 256b
УОЗ для работы с ДК - 0x6CC8, 16x16, 256b
Граница зоны экономичного режима - 0x6EEF, 1x32, 32b
Ширина зоны переходного режима - 0x7AA7, 1x32, 32b
Состав смеси для экономичного режима - 0x6613, 16x16, 256b
Удалив данные калибровки удастся освободить место в прошивке для калибровок ДАД и алгоритмов его обработки.
2) Реализовать поддержку ДАД и ДТВ и алгоритм расчета GBC через температуру заряда.
Там много таблиц в диагностика пропусков воспламенения. надо ли вообще эта диагностика?
В вообще идея такой прошивки очень хороша.
Можно сделать обороты/дроссель. Вопрос к настройщикам: в координатах обороты/дроссель проще настраивать?
первые версии будут исключительно атмо, так как для турбо нужны алгоритмы управления наддувом. А далее посмотрим
А почему бы не использовать в качестве аппаратной платформы Bosch 7.9.7+, для реализации задуманного? Зачем закладываться на заранее слабую комплектацию.
Да это оно конечно и М74 и прочие на ядре С167 есть, но проблема в том, что аппаратная платформа там на порядок сложнее в реверсе и программировании я пока не готов писать для этих ЭБУ
CM_GT, не нужно алгоритмов управления наддувом пока что, а место для таблицы УОЗ и Состав смеси по оборотам/давлению нужно обязательно оставить. Также считаю, что для работы по ДАД нужно делать расчёт по таблице объёмной эффективности (VE), а не всякие там поправки/прибавки. Выкинь из алгоритмов расчет температуры выхлопных газов. все кому это действительно нужно имеют датчик EGT
У Макси очень грамотный современный алгоритм, но я встречал и алгоритмы попроще, например в MegaSquirtAVR. В нашей системе его конечно же не применишь. Так как там вообще нет никакого расчета потребления воздуха, а просто выбор времени впрыска из таблицы в зависимости от оборотов/давления (с грамотной интерполяцией соседних ячеек конечно же) и коррекция времени впрыска по температуре воздуха, сигналу датчика кислорода, приращению или уменьшению дросселя и пр.
1) раз в 1мс выборка с канала ДАД и суммирование с накопителем
2) Раз в 180 градусов ПКВ деление накопителя на счетчик выборок - таким образом получается фильтрованное АЦП ДАД.
3) Термофактор определяется по следующей формуле.
. Ttf * (Твозд +40)
(точки для симметрии а то че-то все некрасиво выглядит).
Где:
Ttf - тарировка термофактора (=49644)
Твозд - знаковая температура воздуха в градусах цельсия.
3) Далее считается некоректированное входное GBC.
. (ADC MAP + TMAP1) * TMAP2
TMAP1 = первая тарировка мап - смещение, = 4
TMAP2 = 2-я тарировка мап - коэфицент, = 10452
ADC MAP = фильтрованное АЦП ДАД
4) Корекция GBC производится таким макаром:
JGBCIN= (((JGBCINnc*F TKGBC ) - JGBCINold ) * TKDGBC) + JGBCINold
JGBCINold=JGBCIN.
Где:
F TKGBC - коэфицент из 3D таблицы "Поправка GBC".
JGBCINold - JGBCIN в прошлом цикле.
TDKGBC - коэфцент динамической коррекции GBC на хх, или
в стаб режиме - выбирается из соотв ячеек.
5) После всего этого JGBC=JGBCIN - таким образом у нас получается ЦИКЛОВОЕ НАПОЛНЕНИЕ ВОХДУХОМ!
Обороты/дроссель вполне хватит для работы по дад, хоть атмо хоть турбо. нужно только сделать обороты/давления для БЦН и UOZ.
по турбо нужно обязательно давление. при одном и том же положении дросселя давление может очень сильно варьироваться. даже и обсуждать это нет смысла.
mihafedor писал(а): по турбо нужно обязательно давление. при одном и том же положении дросселя давление может очень сильно варьироваться. даже и обсуждать это нет смысла.
если железо не кривое, отстроив попраку цн по дросселю, независимо давление 0.6 или 1 бар, смесь будет расчитываться верно и никуда смеси не поползут. А на счёт UOZ и GBC я уже сказал что обороты давление обьязательно нужно.
Наконец-то дело сдвигается с мертвой точки! Денис, на тебя вся надежда! Считаю что нужно выкинуть все ненужные калибровки, такие как диагностика пропусков воспламенения, различные калибровки, мало влияющие на работу спортивного мотора, вроде коррекций уоз и смеси при прогреве и т.п., вырезать ненужные ветвления в алгоритмах чтобы максимально разгрузить процессор, обязательно сделать зависимость дроссель/обороты. Для начала, думаю, можно сделать атмо прошивку, а потому уже разбираться с таблицами по давлению. Можно скачать хелп для прошивки SPT и посмотреть какие были убраны лишние калибровки, ну и с прошивками ТРС и ЛС сравнить. Предлагаю обсудить возможность материальной поддержки проекта.
Статья содержит базовые этапы анализа прошивок ЭБУ на МК Infineon XC2765X.
Исследование программного кода прошивки выполняется с импользованием дизассемблера IDA Pro. На первом этапе необходимо загрузить бинарный образ прошивки в рабочую среду дизассемблера. IDA не имеет специализированного модуля для МК Infineon XC2765X, что в прочем не мешает проводить анализ используя общее процессорное ядро Siemens C166 v2 family [c166V2]. МК Infineon XC2765X имеет особенность в стартовом адресе микропрограммы. Размещение программного кода во внутренней флеш микроконтроллера начинается с адресов C0'0000h, соответственно для корректной интерпретации адресов в IDA необходимо загрузить бинарный образ соответствующим образом. Здесь проще привести скриншот окна загрузки:
После загрузки IDA выполнит некоторое разбиение адресного пространства на сегменты. Нас это разбиение не устраивает, так как не соответствует карте памяти в соответствии с датащитом. Для быстрого получения корректного разбиения на сегменты подготовлен соответствующий скрипт IDA.
МК использует адресацию с использованием страничных регистров DPP. Способ получения физического адреса хорошо описан на картинке ниже. Для корректной интерпретации адресов необходимо для каждого сегмента указать используемые адреса для регистров DPP. В противном случае мы получим некорректные переходы по относительным адресам и неверные ссылки на данные.
Следующая проблема заключается в том, что IDA не знает значительного количества специализированных регистров МК и отображает их как адреса в памяти. Связано это с тем, что мы выбрали модуль с общим процессорным ядром и не имеем специализированного модуля для применяемого МК. Решать данную проблему можно различными способами, например, разработать специализированный модуль МК для IDA, но у нас задача иная и для быстрого получения результата и перехода к анализу программного кода мы воспользуемся скриптовым языком IDA для именования специализированных регистров. Описание регистров возьмем из подключаемых файлов компилятора KEIL. После окончания работы скрипта можно приступать к анализу дизассемблированного листинга программы. Предварительную предобработку можно дополнить скриптом настройки таблицы прерываний и создания соответствующих функций в IDA. Такого скрипта у меня нет, но думаю не составит труда подготовить его на основе информации из датащита.
Зачастилась проблема с инженерными прошивками, ровно как и с инженерными блоками, пришлось придумать некоторые правила и порядок =), в принципе они практически равносильны как для 5-х так и для 7х блоков. Симптомы разные.
0) питайте блоки через ограничители тока
2 случая подряд по не внимательности, спалили(частично) управляющие драйверы. НЕ зря в схеме при руководстве по монтажу 5-х плат указана токоограничительная лампочка, хоть это и колхоз, но позволяет получить частичную информацию о состоянии или режиме работы блока, особенно, когда что то не работает. Её основная функция инизить потери в случае допущения ошибок.
1) бирите только исправные блоки.
Я конечно понимаю что частично жженые блоки в принципе работают, но электричество-штука коварная, угли в одном месте, а проблемы могут вылезти совсем с другой стороны.
2) Прежде чем запаивать плату, залейте в блок инженерную прошивку и хотя бы заведите мотор на ней !
Ситуации разные бывают\случаются. блок может жестко затупить(особенно 7й), и тогда сложно опоределить природу неисправности(программная она или аппаратная). поэтому если прошивка вся без потерь сидит в блоке, в случае проблем после впайки платы останется 2 момента- затуп блока, или ошибки при впайке.
3) Заливайте инженерные прошивки только программой Combiloader (не реклама).
В будущем мы планируем написать свой программатор, но пока много проектов, которые нужно реализовать прежде всего. Комбик- единственная ломанная вышивалка, которая нормально без потерь и прочих экзикуций полностью помещает прошивку во флэшь. Всё остальное - БАРАХЛО! Chiploader, winFlash, и прочая лабуда поросячит инженерные и коммерческие прошивки(догадайтесь почему). если вдруг найдёте прогу, которая без потерь шьёт инженерку-черканите в комментах, будет альтернатива.
4) сколько раз писал, и тут напишу
5) корявости 7х блоков
как правило у 7-го блока встречается такая бяка(даже на правильно подключенной плате и исправной прошивке): блок попросту не включается :) Не знаю где образуется адский мусор в RAM или в EEPROM, но помогает a) (всегда) чтение прошивки (. ) видать программаир или что то чистит при чтении\зашивке, или на аппаратном уровне в режиме программирования что то подчищается. б) (реже) полное обесточивание блока на некоторе время(минут 5), нужно обесточвать, отсоединить даже клайник, т.к. каким то магическим импульсом без отключения клайника блок продолжает тупить =) видать какая то разность потенциалов даёт о себе знать. в)(это в суровых случаях) перезашивка прошивки
Читайте также: