Человек попросил понимания и помощи.Как в Рождество можно не отозваться на такую просьбу?
Обратился с его вопросом к человеку смыслящему в этом больше чем я.Вот его ответ:
Disclaimer: я не являюсь чип тюнером. Я - инженер, разработчик встраиваемых систем, сейчас работаю на Continental Automotive и нахожусь , можно сказать, по другую сторону баррикад - я работаю над производством блоков управления различных систем автомобиля, а не над их модификацией. Если возникает необходимость что-то изменить, мы меняем исходный код на C и потом компилируем прошивку. Вам же доступен только машинный код и работать вы будете только с ним.
Для того, чтоб достичь какого-нибудь успеха в вашей задаче, вам необходимо, для начала, понять основы:
1. Практически любой блок управления автомобиля, будь то блок управления двигателем, или БУ светом, или БУ электрорегулировкой сидений основан на микроконтроллере. Почему практически? Потому-что ещё существют цифровые микросхемы, использующиеся только для одной конкретной задачи, весь алгоритм работы которых реализован с помощью цифровых цепей (при крупных масштабах производства они дешевле, чем микроконтроллеры, а софт для них пишется на специальных Hardware Description языках - VHDL, Verilog и т.д., затем отлаживается, а затем на его основе создаются интегральные схемы, а на их основе технологическе карты для производства микросхем; алгоритм работы этих микросхем невозможно изменить после их производства). В большинстве же используются микроконтроллеры - они позволяют вносить изменения в софт и исправлять баги не только после производства, но даже после поступления устройства (авто) в продажу. Сколько бы различных компонентов не находилось в БУ, основой скорее всего будет являться микроконтроллер.
2. Что такое микроконтроллер? Это устройство, в которое можно записать программу управления, а оно её будет исполнять (это если просто, а чуть более подробно - тут:
https://ru.wikipedia.org/wiki/Микроконтроллер ). Основными частями микроконтроллера является АЛУ (арифметическо-логическое устройство) и память, в которую записана сама программа. АЛУ производит вычисления и записывает результат в регистры - таким образом производится управление периферийными устройствами. CAN порт, ADC, DAC, просто порты ввода/вывода - это всё периферийные устройства. Память может быть встроенная в микроконтроллер либо внешняя и располагаться недалеко от микроконтроллера (чаще всего соединяется по параллельной шине, по этому расстояние и одинаковая длина каждой линии соединения является критичным). Для хранения управляющих программ используется энергонезависимая память (ПЗУ, бывает разного типа, но в народе чаще всего знают одну технологию - FLASH). У энергонезависимой памяти плюс указан в названии, а минусами является скорость работы и ограниченное количество циклов перезаписи, по этому во время работы данные хранятся в другой памяти, чаще всего Памяти с Произвольным Доступом (RAM). Такая память тоже бывает внешней (у вас в компьютере так, но ваш компьютер - это архитектура фон Неймана, а микроконтроллер - Гарвардская).
Итак: ваша работа будет происходить с управляющей программой.
3. Программу (прошивку, в народе), необходимо сначала слить. Для этого можно использовать как разрекламированные приблуды (вроде указанных вами), так и менее разрекламированные, но более дешёвые, а в некоторых случаях можно обойтись и вообще без них. Каким бы ни был программатор, у него всего 2 функции - слить "прошивку" и залить её обратно. Что бы вам не говорили и не впаривали - все рабочие программаторы работают одинаково. Тут надо учитывать одно обстоятельство: возможность слития и залития через интерфейс (без вмешательства в БУ) нужна для работы авторизованных сервис центров, то, что написано в их методичках уже проверенно в лабораториях и шансов угробить БУ у них мало. Вы же будете лить непроверенную прошивку на непроверенном оборудовании. Может случиться так, что после попытки залить дамп, БУ перестанет отвечать на ваши дальнейшие запросы (превратится в кирпич). В таком случае вам может понадобиться вскрывать БУ, подключаться к микроконтроллеру либо к ПЗУ программатором и заливать программу напрямую. Разъёмов для подключения нет, так-что тут как раз и понадобится ваше умение паять.
Добавлено спустя некоторое время 4. Итак, вы слили программу. Что делать дальше? Бэкап. Сохраните слитый дамп в нескольких экземплярах на разных носителях, отправьте сами себе на почту. Без него вам придётся очень худо.
4.а. Не забудьте удостовериться в правильности его слития. Есть специальные верификаторы. Самая простая проверка - размер. Если размер ПЗУ 8Мб, то и дам должен быть такого же размера.
5. Что же дальше делать с программой? Что это вы слили? Там нет ни строчек кода, ни названий переменных, только какие-то цифры в хексе. Это - машинный код. Инструкции, как их понимает микроконтроллер. Для того, чтоб с ними мог работать человек, был создан язык ассемблер (ASM). Для каждого микроконтроллера набор инструкций разный, так-что для перевода вашей программы из машинного кода в ассемблер нужен дизасемблер для конкретно вашего микроконтроллера. После этого вы получите исходный код программы для микроконтроллера на ассемблере. Если просто, то комманды ассемблера это инструкции что делать микроконтроллеру, например "сложи регистр А и регистр В, результат в регистр С", "перейди к инструкции на строке 120", "сравни регистр А с нулём, если больше - пропусти следующую инструкцию", и так далее. Все команды последовательны и имеют свой адрес. Если в программе не содержится условных либо безусловных прееходов, то все комманды будут выполненны подряд с начала до конца. Затем выполнение начнётся с начала.
6. Узнав какой у вас микроконтроллер вы скачали к нему даташит и изучили набор команд на асме. Вы так же в даташите посмотрели адреса портов ввода/вывода. Предварительно вы проследили на какой ноге микроконтроллера находится управляющий сигнал ЕГР'а и узнали какое периферийное устройство отвечает за управление этой ногой. Теперь вы можете найти в вашей программе инструкции записи в регистр этого периферийного устройства. Это и будет отправной точкой ваших исследований.
7. Если вы дошли до этого момента (а это может занять в зависимости от вашей подготовки и умственных способностей от 20 до 100 часов), то у вас возникает вопрос:
-Почему этот код на асме такой запутанный? Я уже понимаю, как работает assembler, но тут происходят непонятные действия.
-Потому-что вашу программу писал не человек. Программа была написана на С, С++ или ещё каком-нибудь высокоуровневом языке, а потом скомпилированна в ASM, после чего переведена в машинные коды и записанна в микроконтроллер. Если машина не старая, то скорее всего была использована операционная система реального времени (RTOS). Это ещё более запутало задачу.
8. То, что я описал - это только начало. В сложных системах с обратной связью тяжело просто так отключить ЕГР. Система отправляет управляющий сигнал, а потом с помощью различных измерений ожидает изменения в работе ЕГР. Это могут быть как датчики наддува, так и потенциометр на самом клапане или ещё что-нибудь придуманное менеджерами, реализованное инженерами и обещающее упростить диагностику, улучшить управление и так далее. Вам придётся читать код на асме, сгенерированный системой, досконально разобраться как это работает и внести необходимые изменения.
Если вы действительно хотите этим заняться (особенно, после написанного мной), то вам придётся посвятить этому большую часть своей жизни.
Добавлено спустя некоторое время В случае конкретно с ЕГР есть одна вещь, которая может вам помочь: никто никогда не будет разрабатывать разные программы для разных модификаций авто. Если существует версия БУ для вашего двигателя без ЕГР, то скорее всего, отличие в программе будет заключаться в нескольких константах. Это распространённая практика: объявляются несколько ключей (это будут участки в памяти, в которые запись произойдёт в момент записи программы), и в них записываются значения. Потом, во время работы, эти ключи проверяются и в зависимости от их значений происходит, либо не происходит вызов определённых функций. Ваша задача - найти такую программу, сравнить её с вашей и вычислить эти отличия.
Добавлено спустя некоторое время Это - реальный путь, который поможет вам стать сильным специалистом в этой области и понимать основы. Так ли работают все "чип тюнеры"? Нет, далеко не все. Есть другие пути.
Вариант 1. Заливается прошивка от другой машины. Как я уже говорил, есть различные варианты (Евро 2, экспортные версии для стран с другими экологическими нормами и т.д.). Самый простой вариант, работает с ограниченным кругом авто.
Вариант 2. Когда люди, разобравшиеся в теме, задумываются о том, как им отбить убитое на копание в асме, самыми очевидными способами становятся изменение чужих прошивок за деньги или написание и продажа софта для тех, кто будет этим заниматься. Я бы выбрал второй вариант, потому-как, если ты разобрался в асме, то наваять маленькую программулинку, меняющую десяток байтов в дампе не станет для тебя проблемой, а денег на этом можно поднять немало. Вот к тем, кто покупает такие программы и потом модифицирует дампы и относится большая часть наших любимых "чип тюнеров". У этих ребят ноль понимания процесса, зато большое количество купленного софта и огромное ЧСВ (подкрепляемое заработанными деньгами).
Итак, что же выбрать вам? Естественно, если вам хочется разобраться, то начните с того, что я описал. Скорее всего вы это забросите сразу после того, как получите дамп. Надеюсь - нет. Если же вся суть сводится к модификации вашей машины, то правильным советом будет обратиться к ребятам из второго варианта и получить готовый дамп.