В нашу техподдержку постоянно прилетают вопросы, а-ля, "Считал прошивку с машины [таким-то загрузчиком]. Считалось 500 кб, а у вас в каталоге эта же прошивка 2 мб. В чём может быть проблема?"
Или, "Нашёл сток в интернете, а он отличается размером и форматом от считанного с машины. Загрузчик неправильно считывает? Как тогда записывать?".
Если для вас подобные моменты тоже вызывают вопросы, то настоятельно просим прочитать текст настоящей статьи. Прочитать очень внимательно и вдумчиво!
Начнём с тривиального, и, в первую очередь, поверхностно разберёмся с тем, что есть "прошивка".
Итак, прошивка - это содержимое энергонезависимой памяти ЭБУ. По сути, это просто последовательность байт, содержащая исполняемый код и прочую информацию. Находясь в памяти блока управления, она НЕ представляет собой файл, так как в блоке управления нет операционной и файловой системы. Это просто длинная последовательность единиц и нулей. Файлом прошивка становится только тогда, когда эта прошивка (т.е. последовательность единиц и нулей) считывается из памяти блока и сохраняется программой-загрузчиком к вам на компьютер.
И это самый фундаментальный момент, который следует осознать. Поэтому проговорим его ещё раз. "Файл прошивки" (дамп) и "прошивка" - это несколько разные понятия. Ни в коем случае не следует путать их между собой. Прошивка - это последовательность единиц и нулей, абстрактно от способа хранения. Файл прошивки - это последовательность единиц и нулей, сохранённая как отдельный файл, как именованная область данных в рамках файловой системы вашего компьютера.
Окей, с файлами разобрались. Но есть ещё одно понятие, которое обязательно для понимания. А именно, "формат файла". Строгое определение понятия формата файла звучит страшно даже для IT-шников, поэтому попробуем объяснить простыми словами.
Итак, сглаживая острые углы, можно сказать, что формат файла - это просто способ хранения данных.
К примеру, возьмём число "13". Его кодирование (т.е. его представление) в десятичной системе счисления арабскими цифрами записывается как "13". Но можно записать и римскими цифрами - "XIII". Также, можно записать "13.00000", "13/1", "0000000013". Выбранное число можно также закодировать и в виде точек или чёрточек, а можно представить в виде суммы квадратов простых чисел: "22 + 32" и т.д. Да, звучит очень грубо и на уровне "информатики для дошкольников", но вышеперечисленные способы записи числа - это своего рода форматы, где информация, по сути, не меняется. Меняется лишь способ записи и хранения этой информации.
Очевидно, что любую информацию можно представлять и хранить разными способами. В том числе и прошивку. Сохраняя прошивку в файл, её можно, к примеру, зашифровать или сжать - полезные данные от этого никак не поменяются. Не поменяются они и от того, если в конец или начало того же файла добавить вспомогательную информацию для загрузчика. Либо хранить в едином файле, как прошивку, так и данные виртуального eeprom, считанные с конкретного авто. А можно хранить две прошивки в едином файле (к примеру, от двигателя и АКПП). Всё это - способы хранения, или, как привычнее говорить, форматы.
Очень надеемся, что вышесказанное вам понятно. Ведь именно непонимание вышесказанного, по нашему мнению, вызывает наибольшее количество непоняток у мастеров.
Разумный вопрос - от чего зависит формат файла прошивки? В первую очередь, он зависит от программы-загрузчика.
Форматов прошивок, с которыми можно столкнуться в работе довольно много. Это далеко не всегда привычный всем *.bin. Логика многих дилерских загрузчиков реализована так, что помимо тела самой прошивки, этим загрузчикам нужны определённые метаданные (об автомобиле, блоке управления, протоколе обмена и т.п.). Соответственно, как правило, "дилерский" формат файла прошивки подразумевает, что файл содержит в себе не только прошивку. В то же время, разработчики недилерских загрузчиков для чип-тюнинга вольны придумывать дополнительный функционал (например зашифрованные файлы-контейнеры прошивок под слейв и т.п.). Поэтому, повторимся, форматов прошивок существует много.
Далее перечислим те форматы файлов прошивок, которые чаще всего встречаются в сфере чип-тюнинга:
Двоичный файл произвольного вида (*.bin)
Простая последовательность байтов. Наиболее часто встречающийся формат в рамках сферы чип-тюнинга. Как правило, представляет собой образ памяти ЭБУ, или какую-то область образа памяти, сохранённую "как она есть", как она хранятся в памяти ЭБУ. Практически все мультимарочные загрузчики для чип-тюнинга работают именно с таким форматом. И это несомненный плюс, так как сформированный одним загрузчиком файл прошивки можно записывать другими загрузчиками, и, наоборот. В большинстве случаев имеет расширение *.bin. Но в некоторых загрузчиках могут применять иные расширения (например, в K-Tag можно встретить *.fls и *.mpc).
На самом деле, двоичный файл произвольного вида- это не совсем формат. И ключевая проблема именно в "произвольности". Дело в том, что разные загрузчики (в разных режимах работы с памятью ЭБУ) могут по разному формировать файлы.
К примеру, загрузчик "А" умеет читать только калибровки на определённом блоке управления, загрузчик "Б" прочитает калибровки + управляющую программу, когда загрузчик "В" считает "фуллфлеш". При этом, загрузчик "А" сформирует файл, содержащий только калибровки (допустим, 32kb), а загрузчик "Б" сформирует полный образ (допустим, 512kb), но заполнит не считанные области байтами "0xFF", и т.д.
SMS-Soft Container File (*.bcf)
Файл-контейнер, используемый в продуктах компании SMS-Soft. Имеет расширение *.bcf. В частности, применяется в загрузчике Combiloader. Позволяет хранить в едином файле данные внутренней\внешней флэш-памяти, данные eeprom, прочие мета-данные, что очень удобно. Помимо этого, имеет проверку целостности, защиту паролем, сжатие и многое другое.
Но в бочке с мёдом есть ложка дёгтя. Данный формат поддерживается только в рамках продукции SMS-Soft. К примеру, сохранённую в bcf-файле прошивку не получится записать через любой другой загрузчик, кроме как через Combiloader. Также, её нельзя будет открыть ни в одном редакторе, кроме как в ChipTuningPRO.
В любом случае, считав прошивку через Combiloader, её не обязательно сохранять именно в bcf-контейнере. Её можно сохранить и как обычный двоичный файл (*.bin). В старых модулях это делается при помощи зажатой клавиши Shift (необходимо зажать и удерживать в момент нажатия кнопки "Сохранить"). В более современных модулях выбор формата сохранения осуществляется прямо в диалоговом окне сохранения.
Calibration Update Wizard File (*.cuw)
Дилерский формат файлов прошивок Toyota\Lexus, предназначенных для программы Calibration Update Wizard, входящей в состав Toyota Techstream. Представляет собой файл-контейнер, содержащий заводскую прошивку (обновление заводской прошивки). Примечательно, что один cuw-файл может содержать в себе сразу две прошивки (для двигателя и для АКПП).
Volvo binary file (*.vbf)
Очень распространённый дилерский формат файлов с заводскими прошивками, применяемый у многих автопроизводителей (в частности, Volvo, Ford, Mazda, Jaguar, Land Rover). Является файлом-контейнером, в начале которого идут мета-данные (заголовок) для загрузчика, а затем двоичные данные самой прошивки.
VAG *.sgo, *.odx, *.frf и т.д.
Отдельным обобщённым пунктом следует выделить дилерские форматы файлов-контейнеров с заводскими прошивками автомобилей концерна VAG. Наиболее известные это *.sgo, *.odx, *.frf. Но также встречаются *.sgm, *.pdx, *.sox.
Разумеется, можно встретить и другие форматы файлов прошивок, как дилерские, так и не дилерские. Ничего необычного в этом нет. Главное - работать внимательно и следить за тем, что считываете и записываете в блок управления, а также пользоваться хорошим оборудованием и всегда (ВСЕГДА!) читать инструкцию к загрузчику. И не забывайте, что чип-тюнинг является наукой о нюансах, которые нужно знать и предугадывать, дабы не получать "увалы" блоков.