пишу кому надо в веках:
разобрался,
считывают прогроматоры "как есть" , вроде бы всегда норма для них "наоборот" , а для человека читать хо, и есть функция, в некоторых есть редакторах и програматорах, переставить 1-2 на 2-1, что бы понятно стало, вроде там еще надо для умных.
т.к. на форуме умным не когда - они бабки зарабатывают - я как то сформцулировал вопрос для ИИ и он ответил:
Программаторы всегда считывают прошивку «как есть» (as is), то есть байт за байтом в том порядке, в котором они физически прописаны в памяти устройства (от младшего адреса к старшему).
Разница между тем, как видит данные программатор и как их хочет видеть человек, возникает из-за
порядка байт (Endianness) [3] и разрядности шины данных.
Почему для человека всё выглядит «наоборот»?
- Порядок байтов (Little-Endian): Большинство современных процессоров (например, x86, ARM, AVR) используют порядок, при котором младший байт записывается первым, а старший — вторым.
- Пример: Число 0x1234 в памяти физически запишется как 34 12. Программатор считает его именно так: 34 12. Человеку же читать это неудобно, он хочет видеть 12 34.
- Разрядность (16-битные и 32-битные системы): Если память 16-битная (слово состоит из двух байт), микроконтроллер читает два байта сразу. Но программатор отображает их как последовательность одиночных байт. Из-за этого текст или значения «выворачиваются» попарно.
Функции изменения порядка байт (Byte Swap)
В редакторах дампов (например,
WinHex, HxD) и софте для программаторов эта функция обычно называется
Byte Swap (Перестановка байт),
Swap Words или
Endian Conversion.
Основные режимы, которые нужны «для умных» (в зависимости от архитектуры процессора):
- Попарная перестановка (1-2 в 2-1):Меняет местами соседние байты.
- Было: A B C D \(\rightarrow \) Стало: B A D C.
- Зачем: Идеально для восстановления читаемости текста (ASCII strings) в 16-битных дампах автомобильных ЭБУ, приборных панелей или старых игровых приставок (например, Sega Mega Drive).
- Почетверная перестановка (1-2-3-4 в 4-3-2-1):Полностью разворачивает блоки по 4 байта (32-битное слово).
- Было: A B C D \(\rightarrow \) Стало: D C B A.
- Зачем: Применяется для анализа прошивок 32-битных процессоров (например, ARM или MIPS в маршрутизаторах и современных блоках управления).
Как это использовать на практике?
Если вы открыли дамп и видите, что вместо понятного текста (например, маркировки детали или VIN-кода) идет абракадабра вида I_V_O_N_O_K вместо VIN_CODE, примените функцию
Swap Bytes (в HxD это меню
Правка \(\rightarrow \) Переставить байты). Дамп сразу станет читаемым для человека.
Важно: Перед тем как
записывать отредактированный дамп обратно в микросхему, его нужно вернуть в исходное («вывернутое») состояние, если ваш программатор не делает это автоматически при выборе конкретного профиля микросхемы. Процессор должен получить данные в том порядке, который заложен в его архитектуру.
Если вы работаете с конкретным типом прошивки, подскажите:
из какого устройства этот дамп (автомобильный ЭБУ, мультимедиа, биос материнской платы)? Я подскажу, какой именно порядок байт там стандартно используется.
You must be registered for see links
Чтобы точно понять, нужно ли «выворачивать» (делать Byte Swap) полученный дамп перед записью, или шить его «как есть», вам нужно ориентироваться на
три главных правила.
1. Золотое правило: Проверка по тексту (ASCII)
Самый простой и надежный способ узнать состояние дампа — открыть его в HEX-редакторе (например, в бесплатном
HxD) и посмотреть на текстовую панель справа.
- Если текст читается нормально (вы видите четкий VIN-код, марку процессора, HW/SW номера блока без искажений): значит, дамп уже находится в «человеческом» виде.
- Что делать: Если ваша микросхема (или программатор) требует обратного порядка (как часто бывает с EEPROM/Flash в некоторых ЭБУ), то для записи этот дамп, скорее всего, придется вывернуть обратно.
- Если текст «вывернут попарно» (например, вместо VOLVO написано OVLOV, вместо WBA... написано BW...): значит, это «сырой» дамп (as is), считанный напрямую из памяти.
- Что делать: Его нужно писать «как есть», ничего не меняя. Программатор запишет байты ровно в том физическом порядке, в котором их ждет процессор.
2. Зависимость от того, КТО и КАК готовил дамп
Поведение автора дампа определяет его формат:
- Если это серийный сток (Full Flash) из базы данных (например, скачанный с профильного форума или из софта вроде Alientech KESS/KTAG, PCMTuner): такие дампы всегда пишутся «как есть». Профессиональный софт сохраняет их в физическом порядке байт.
- Если автор правил дамп вручную (отключал иммобилайзер, делал чип-тюнинг): тюнеры часто работают в редакторах (типа WinOLS), которые автоматически переворачивают байты для удобства работы. Если автор забыл сделать Swap обратно перед сохранением, файл останется «человеческим». Проверьте VIN-код, как описано в пункте 1.
3. Зависимость от типа чипа и программатора
Разные типы микросхем имеют свои стандарты:
- 8-битные EEPROM (серии 24Cxx, 93Cxx, 95xxx): В них данные почти всегда идут последовательно. Понятие Byte Swap для них редкость. Если VIN «кривой», возможно, при чтении была неверно выбрана разрядность (например, 93C46 читали как 16-бит вместо 8-бит).
- 16-битные Flash (серии 29F200, 29F400, 29F800): Это главные виновники путаницы. В блоках Bosch (например, ME7.x) или Siemens старых поколений программаторы типа Minipro (TL866) или Gallo могут считывать их по-разному.
Пошаговый алгоритм для вас:
- Откройте оригинальный дамп, который вы лично считали со своего чипа (если он сохранился). Посмотрите на VIN/номера.
- Откройте полученный от автора дамп в соседней вкладке HEX-редактора.
- Сравните их:
- Если структура текста и символов совпадает (в обоих файлы VIN читается одинаково — либо везде нормально, либо везде «кашей»), то полученный дамп готов к записи «как есть».
- Если в вашем считанном дампе VIN «перевернут», а в авторском читается идеально — автор прислал вам дамп в «человеческом» формате. Перед записью программатором сделайте Byte Swap (1-2 в 2-1).
Если у вас открыты эти дампы прямо сейчас, напишите:
- Какая модель автомобиля и блока управления (ЭБУ)?
- Какое имя (маркировка) у чипа/микросхемы?
- Как выглядит VIN-код или любой знакомый текст в полученном файле? (нормально или буквы поменялись местами?)
Я точно скажу, нужно ли делать конвертацию в вашем конкретном случае:
You must be registered for see links