Что такое gpt в эбу

Опубликовано: 18.05.2024

Описание: Вскрытие, подключение, распиновка, бут-пины, и другие особенности работы с ЭБУ на столе
Правила раздела: Просьба создавать темы в формате "марка, модель, блок". Названия иномарок писать строго на английском языке! Самим же потом легче будет что-то найти.

Шина CAN. Пара строк теории.

Как известно, шина имеет два сигнальных провода - CAN-Low и CAN-High. Спецификация требует, чтобы на каждом конце шины был подключен резистор-терминатор номиналом 120 Ом.

Это всё написано к тому, что если в вашем адаптере BSL такого резистора нет, то, возможно, для работы с адаптером GPT, его понадобится установить. Прикиньте сами, вписывается ли ваша текущая конфигурация оборудования в схему выше, и решайте, нужен резистор, или нет.

Подготовка к работе

Прежде всего, конечно, нужно припаять провода.
Внимание: ввиду того, что плата очень компактная, в адаптере нет никакой защиты от статики, или паяльников с фазой на жале! Претенизии, по "убитым" таким образом адаптерам, не принимаются. Используйте нормальное оборудование!
Чтобы не путаться, я использовал цвета, аналогичные k-tag.

Выглядит это вот так:

Вверху, под зелёным (CAN-L) и белым (CAN-H) проводами CAN-шины, видно резистор 120 ом, о котором шла речь перед этим. Чёрный и красный - питание 12 вольт, оранжевый и желтый - выходы. К выходам припаяны провода с контактами, которые подключаются к пинам разъёма блока, т.е. "тонкая мама". Проще всего взять уже готовые, обжатые провода из какой-нибудь автомобильной проводки.

Один момент по проводам: предусмотрите возможность отдельного вкл/выкл питания адаптера, или отключения его от CAN-шины.

Первое включение нужно произвести без ЭБУ. Вместо этого, к адаптеру BSL подключается адаптер GPT (и OpenPort тоже). Достаточно 4-х проводов: CAN и питание. Естественно, тумблер ручного управления питанием должен быть включен.

После этого:
1 Идём в модуль BSL TriCore, выбираем из списка TPROT любой пункт GPT, и нажимаем кнопку прочитать пароль. Если мелькнуло окошко "Установка связи с ЭБУ. " и программа выдала

то всё подключено правильно, адаптер готов к работе, и остальные пункты можно пропустить.

2 Если появилось и висит такое окошко

то программе не удалось связаться с адаптером.

3 Предыдущее окошко будет присутствовать на экране не долго. После него появится вот такое

У вас есть 5 секунд, чтобы передёрнуть питание тумблером ручного режима. Если вы передёрнули питание, а "термометр" продолжает уменьшаться, можно дёрнуть питание ещё раз (если успеете).

4. Если предыдущие действия не помогли, появится окно

Расстраиваться не нужно, проверьте питание адаптера, 120 ом на CAN-шине, не перепутаны ли местами CAN-L и CAN-H, и т.п. После этого, нужно всё повторить сначала, пока не добьётесь, чтобы после нажатия кнопки "прочитать пароль" программа сразу выдавала окно

Прогресс не стоит на месте и автопроизводители все больше усложняют доступ к прошивкам в своих ЭБУ. Как правило, в современных ЭБУ очень активно используется семейство процессоров Tricore, которые имеют аппаратную защиту от чтения-записи. И эта защита в большинстве случаев включается для того, чтобы осложнить жизнь тем, кто по какой-то причине хочет изменить прошивку ЭБУ. Однако есть ряд лазеек, которые все-таки позволяют обойти защиту ЭБУ и получить полный контроль над флеш и еепром памятью ЭБУ. Одна из этих лазеек заключается в том, что на определенные участки флеш памяти Tricore ставятся защита от чтения и записи, которую можно снять, зная пароль. Вот к "добыванию" этого пароля в основном и сводится работа с разными ЭБУ использующими Tricore. Все что описано ниже, в большей мере относится к ЭБУ Bosch, но справедливо и для других ЭБУ.

Каждый пароль индивидуален для каждого ЭБУ, а точнее каждого процессора. Этот пароль устанавливается на заводе производителе, или предположительно, при производстве самого чипа. По какой-то причине в ЭБУ на самом деле хранится установленный с завода пароль. Зачем это сделано — непонятно. Скорее всего это связано с технологическим циклом производства самого ЭБУ и первичной записи в него прошивки. Вид этого пароля и способ его "добычи" эволюционировал, и ниже я расскажу — как.

Первоначально пароль к Tricore генерировался на базе серийного номера процессора, но потом от этого отказались, и начали прописывать пароль просто во внутренней флеш памяти Tricore. Почему-то завод оставил лазейки с помощью которых можно считать эту область прямо по OBD2. После того, как многие производители оборудования для чиптюнинга начали активно использовать эту лазейку для чтения пароля, завод пошел дальше, и сделал так, что чтение определенной области памяти по OBD2 доступно только при определенных условиях — а именно при наличии определенных сигналов, получаемых с ряда датчиков. GPT адаптер как раз и служит для того, чтобы сгенерировать сигнал определенной формы, который нужно подать на ЭБУ. После этого можно вычитать пароль по OBD2 так же, как это делалось раньше.

Мы сделали GPT адаптер на базе самого простого процессора от STM — STM8. Генерируемые сигналы находятся на пинах GPT1, GPT2. В зависимости от используемого ЭБУ нужно подключать один или два этих пина. Т.к. для перевода в бут режим процессоров Tricore очень часто нужно замыкать ряд пинов процессора на 3.3В через резистор 1К, то мы добавили в GPT адаптер и эти бут пины.

В свое время, мы уже разработали очень удобный универсальный девайс — CHIPSOFT OBD2 Breakout Box. Поэтому GPT адаптер мы решили выполнить в виде "плагина" к этому девайсу. Для работы GPT адаптера достаточно подключить его в один из DB9 разъемов CHIPSOFT OBD2 Breakout Box и подать питание.

CHIPSOFT GPT адаптер не имеет никакой привязки к какому-то из загрузчиков, и будет работать с любым, который не привязан к своему собственному GPT адаптеру.

Модуль Combiloader BSL Tricore TC17xx

Модуль BSL Tricore TC 17 xx

Модуль предназначен для чтения-записи FLASH/EEPROM ЭБУ, основанных на процессорах Infineon семейства TriCore TC 17 xx через встроенный BootStrapLoader.

Предлагается в трех вариантах:

Модуль Combiloader BSL Tricore TC 17 xx [ 064 – 067 ]

  • Модуль поддерживает работу с открытыми процессорами и закрытыми процессорами Bosch TPROT 8 + и др..
  • Чтение пароля ЭБУ Bosch GPT возможно только при использовании адаптера DiaLink. При этом питание на 16 контакт адаптера подавать нельзя.
  • Для ввода дополнительных кодов активации модуля нажмите и удерживайте клавишу Ctrl перед запуском Загрузчика.
  • Обмен с ЭБУ происходит через интерфейс J 2534 , а не через адаптер Загрузчика. Несмотря на это, адаптер Загрузчика должен быть подключен к компьютеру для нормального функционирования ПО и обязательного коммутирования линий питания ЭБУ.
  • Для сохранения считанной прошивки в несжатом двоичном виде (если это разрешено специальной лицензией) необходимо удерживать клавишу Shift при нажатии кнопки «Сохранить». Следует иметь ввиду, что в bin производится сохранение считанного из ЭБУ файла, загруженные отредактированные файлы модуль не конвертирует в разные форматы.
  • Для установки пароля на доступ к файлу необходимо удерживать клавишу Ctrl при нажатии кнопки «Сохранить».
  • При открытии файла, в котором нет информации о типе процессора/памяти, загрузка происходит в буфер, определяемый текущим выбором процессора/памяти.
  • При записи закрытых процессоров сторонними прошивками следует обеспечивать соответствие пароля в прошивке паролю процессора. Для ЭБУ Bosch эта операция производится модулем автоматически (исключение составляют ЭБУ Bosch ME 17 GreatWall/Chery).

Окно программы содержит следующие вкладки:

Вкладка FLASH

Модуль Combiloader BSL Tricore TC17xx


Вкладка содержит окно просмотра буфера программы контроллера и кнопок управления:

чтение Flash из контроллера во внутренний буфер программы
запись Flash из внутреннего буфера программы в контроллер

Вкладка EEPROM

Модуль Combiloader BSL Tricore TC17xx


Вкладка содержит окно просмотра буфера программы контроллера и кнопок управления:

чтение Eeprom из контроллера во внутренний буфер программы
запись Eeprom из внутреннего буфера программы в контроллер

Наличие галочки в поле «Общее действ.» позволяет производить выбранные операции одновременно с FLASH и EEPROM памятью контроллера за один сеанс связи.

Модуль Combiloader BSL Tricore TC17xx


Вкладка содержит окно выбора опций работы программы:

Выбор J 2534 -устройства – открывает окно выбора J 2534 -устройства для связи с ЭБУ.

Модуль Combiloader BSL Tricore TC17xx

Считать пароль из ЭБУ – открывает окно выбора ЭБУ для чтения пароля.

Модуль Combiloader BSL Tricore TC17xx

Чтение пароля ЭБУ Bosch GPT возможно только при использовании адаптера DiaLink. При этом питание на 16 контакт адаптера подавать нельзя .

Операции с ЭБУ – позволяет выполнить определённые операции с ЭБУ в автоматическом режиме. Перед выполнением операций настоятельно рекомендуется считать и сохранить FLASH ЭБУ. Последующая перезапись ЭБУ в BSL-режиме отменяет изменения, произведённые данной функцией Загрузчика.

  • ME 17 . 9 . 71 ВАЗ/УАЗ: отключить проверку подписи – отключает проверку подписи при записи диагностическим методом. Выполнение этой операции в BSL режиме позволяет впоследствии использовать диагностический метод записи для модифицированного ПО.
  • SID 208 : отключить проверку подписи – отключает проверку подписи при записи диагностическим методом. Выполнение этой операции в BSL режиме позволяет впоследствии использовать диагностический метод записи для модифицированного ПО.

Импортировать данные MEDC 17 – позволяет переносить данные из внешнего файла в текущую загруженную прошивку (для программного обеспечение Bosch). Функция может быть использована для переноса калибровок из файлов, содержащих только область калибровок.

При переносе данных проверяется как совместимость переносимых областей, так и номер ПО, для которых они предназначены. Для отключения проверки удерживайте нажатой клавишу Alt либо при нажатии на кнопку «Импортировать данные» либо при нажатии кнопки «Открыть» в диалоговом окне выбора файла. Не используйте отключение проверки без крайней необходимости и полного понимания результатов, к которым это может привести.

Выполнить подсчёт КС MEDC 17 – выполняет подсчёт контрольных сумм образа FLASH (ПО Bosch), загруженного в программу.

Перевод ЭБУ в режим программирования (Bootstrap Mode)

Порядок действия при работе с ЭБУ:

1 . Подключите ЭБУ на столе не переводя в режим программирования.
2 . Считайте пароль доступа к ЭБУ воспользовавшись соответствующей кнопкой на вкладке «Дополнительно». Сохраните пароль в файл.
5 . Подключите ЭБУ на столе в режиме программирования (см.таблицу ниже).
6 . Произведите необходимые операции.
7 . Выведите ЭБУ из режиме программирования.
8 . Установите ЭБУ на автомобиль и полностью проверьте его функционирование.
9 . Снимите ЭБУ с автомобиля и закройте его корпус. Установите ЭБУ на автомобиль.

Перевод в режим программирования производится установкой определённого состояния на конфигурационных входах процессора.

Состояние « 0 » обеспечивается замыканием контакта процессора через резистор* на массу ЭБУ.
Состояние « 1 » обеспечивается замыканием контакта процессора через резистор* на напряжение питания процессора (любой из контактов Vddp)

В случае, в процессе обмена с ЭБУ на этапе установки связи происходят постоянные сбои соединения, возможно процессу обмена мешает процессор безопасности ЭБУ. В таком случае необходимо контакт HDRST процессора отсоединить от печатной платы на время перепрограммирования ЭБУ.

Подключение контроллера, снятого с автомобиля, необходимо произвести Универсальным кабелем Загрузчика.

Для этого расположите ЭБУ на столе разъёмами к себе и произведите соединения в соответствии с типом ЭБУ.

Предназначен для генерации необходимых сигналов для чтения паролей процессора Tricore (ЭБУ современных авто BMW, Mercedes, и т.д). Адаптер выполнен в виде платы, которая подключается к CHIPSOFT OBD2 BreakOut Box.

Дополнительно в адаптере предусмотрены 4 бут пина на 3.3В через резистор 1К (используется для работы с ЭБУ Tricore ).

ChipLoader, модуль Tricore, CHIPSOFT J2534, CHIPSOFT OBD2 BreakOut Box, CHIPSOFT GPT Adapter представляют собой законченное решение для работы с широким спектром ЭБУ на базе процессора Tricore.




Кабель к адаптеру Сhipsoft, подключаемый к пинам GPT ЭБУ.


Адаптер CHIPSOFT J2534 Mid будет полезен тем пользователям, которым недостаточно возможностей адаптера CHIPSOFT J2534 Lite.


Недорогой универсальный адаптер второго поколения от Chipsoft, предназначенный для диагностики и программирования ЭБУ автомобилей по протоколку J2534, прибор также может функционировать как k-line адаптер.


Разветвитель сигналов OBD2 v2 предназначен для работы с ЭБУ на столе при помощи J2534, KLine или любого другого адаптера, без привязки к загрузчику или программе.


Адаптер CHIPSOFT J2534 Pro на данный момент самый мощный по функционалу в линейке адаптеров CHIPSOFT J2534 Lite, CHIPSOFT J2534 Mid. По сравнению с указанными адаптерами имеет больший функционал для диагностики автомобилей, т.к. имеет два мультиплексора для коммутации CAN и KLine шины данных. Поддержка большого количества сторонних программ, работающих по стандарту J2534 делает адаптер незаменимым инструментом при диагностике и чиптюнинге, а его цена позволит начать свой бизнес с минимальными финансовыми затратами. Возможность использования различных режимов работы адаптера (J2534 адаптер, KLine адаптер, CANHacker) существенно расширяет возможности его использования.


Итак, GPT (GUID Partition Table) это:

  • в первую очередь название схемы разметки памяти (GPT-схема) МУ ;
  • затем уж название раздела памяти (GPT-раздел), где расположена физически эта схема;
  • ну и также название файла-образа GPT-раздела памяти (GPT-файл).

Как устроена MBR-схема разметки можно посмотреть в [1], а GPT это другой формат описания разметки памяти — GUID (GUID Partition Table). Он является частью EFI (Extensible Firmware Interface) — стандарта UEFI, используемого вместо BIOS для загрузки разделов памяти.

Переход на другой формат позволил устранить самый существенный недостаток MBR-формата — малое число разделов. Если в MBR помещалось только 4 записи с ограничением на длину раздела и его смещение из-за того, что эти параметры описывались 32-разрядными числами, то в GPT можно разместить 128 записей о разделах. Причем их параметры уже описываются в 64-разрядной системе счисления…

Для совместимости со старым стандартом загрузки (BIOS) и с целью защиты самой таблицы описания разделов памяти GPT-раздел тоже начинается с MBR, которая описывает всего один раздел — всю память МУ. Сама MBR называется теперь «защитной» (protective), т.е. PMBR. Она располагается тоже в первом секторе памяти по адресу 0х0000-0х01FF (512 байт). Поле Смещение указывает на начало заголовка GPT, а размер раздела устанавливается равным длине всей памяти устройства. Тип раздела имеет значение 0хEE (GPT-раздел).

Суть защиты GPT-раздела да и всей памяти МУ сводится к следующему. Если такой раздел откроет средство работы с MBR-схемой разметки, то оно увидит пустую неразмеченную память, состоящую только из раздела описания разметки. Соответственно, что-либо сделать с этой памятью ему не удасться.

Вот как выглядит PMBR, например, от МУ .


Рис.1 «Защитная» MBR, т.е. PMBR

По адресу 0х01FE видна сигнатура MBR (0xAA55).

Перейдем к рассмотрению непосредственно структуры GPT-раздела.

2. Структура GPT

GPT-раздел состоит из PMBR, заголовка и таблицы описания разделов памяти.

Сразу за PMBR, т.е. с адреса 0х0200, располагается заголовок GPT, имеющий длину 0х5С (92) байта, но занимающий весь сектор (512 байт). Вот как он выглядит в том же МУ:



Рис.2 Заголовок GPT

Он имеет следующую структуру:


Поле Magic содержит строка символов «EFI PART» — 45h 46h 49h 20h 50h 41h 52h 54h, которая выделена на рис.2 бирюзовым цветом и однозначно идентифицирует GPT-раздел.

Поле Revision, выделенное зеленым цветом, содержит номер версии структуры GPT-раздела (0х00010000). Например, для GPT версии 1.0 должно быть 00h 00h 01h 00h

Поле HeaderSize, выделенное оранжевым цветом, содержит размер заголовка, выраженный в байтах. Пока это 0х0000005Ch, что означает 92 байта.

Поле HeaderCRC32, выделенное розовым цветом, содержит контрольную сумму заголовка (0x09BE8E1F), расчитанную по алгоритму CRC32. При непосредственном выполнении расчета учитываются только 92 байта, а в это поле перед расчетом заносится 0.

Следующее поле Reserved1 никак не выделено, является резервным и содержит 0.

Поле MyLBA, выделенное темно-синим цветом, содержит смещение в блоках размещения первичного GPT-раздела (0х00000001).

Поле AlternateLBA содержит смещение в блоках размещения резервного GPT-раздела. Оно не указано.

Поле FirstUsableLBA, выделенное красным цветом, содержит смещение в блоках размещения первого разрешенного для использования сектора памяти (0х00000022). Расчитывается так: LBA последнего сектора, занятого первичным GPT-разделом, + 1.

Поле LastUsableLBA содержит смещение размещения последнего сектора памяти, разрешенного для использования. Расчитывается так: LBA первого сектора резервного GPT-раздела — 1. Оно не указано.

Поле DiskGUID, выделенное голубым цветом, содержит GUID прошивки.

Поле PartitionsLBA, выделенное красным цветом, содержит смещение начала GPT. В первичном всегда равен 2, а в резервном равен LastUsableLBA.

Поле NumberParts, выделенное ярко-зеленым цветом, содержит размер таблицы описания разделов, т.е. число записей о разделах (0х00000018).

Поле PartitionSize, выделенное розовым цветом, содержит размер одной записи о разделе в байтах. Согласно UEFI Specification размер записи фиксирован и составляет 128 байт или 0х00000080.

Поле PartitionsCRC, выделенное красным цветом, содержит контрольную сумму таблицы описания разделов (0x93D54D33), расчитанную по алгоритму CRC32. При выполнении расчета учитываются все байты, начиная с PartitionsLBA и до FirstUsableLBA.

Поле Reserved2 содержит резервное поле. Содержит 0 до конца сектора, т.е. 420 байт для сектора размером 512 байт.

Непосредственно сразу за заголовком, начиная с адреса 0х400, располагается таблица описания разделов, содержащая записи о каждом разделе памяти, включая и сам раздел разметки. Вот как она выглядит:



Рис.3 Таблица описания разделов

Каждая запись размером 128 байт имеет следующую структуру:


Поле PartitionTypeGUID, выделенное красным цветом, содержит GUID типа раздела, который определяет файловую систему, используемую для хранения данных в этом разделе. Каждая файловая система получает свой GUID, однозначно её идентифицирующий. Стандарт UEFI жестко определяет только следующие GUID типов разделов:


Поставщикам ОС (vendors) нужно генерировать свой собственный GUID типа раздела, чтобы идентифицировать их. Некоторые известные GUID можно посмотреть в [3].

При записи в память или в файл-образ значение GUID записывается в другом порядке. Например, GUID системного раздела EFI имеет следующий вид: C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Порядок записи байтов в написаниях GUID является little-endian, причем задом наперед пишутся байты только в первых трех блоках. Для приведенного выше GUID запись в таблице разделов будет иметь такой вид:


Поле UniquePartitionGUID, выделенное синим цветом, содержит GUID раздела. Является уникальным идентификатором раздела, поэтому создается каждый раз, когда создается раздел.

Поле StartingLBA, выделенное зеленым цветом, содержит смещение в блоках на первый сектор раздела (0x00020000).

Поле EndingLBA, выделенное оранжевым цветом, содержит смещение на последний сектор раздела (0x0003FFFF). При этом размер раздела (PartitionSize) определяется по формуле


Поле Attributes, выделенное фиолетовымым цветом, содержит атрибуты (флаги) раздела. 8 байт (64 бита) флагов распределены следующим образом. Биты с 0 по 47 (48 шт.) отведены под общие атрибуты типов разделов, а остальные 16 битов (с 48 по 63) описывают конкретный раздел.

Вот небольшое описание этих битов:


Поле PartitionName, выделенное синим цветом, содержит метку раздела («modem»), содержащую строку текста с завершающим нулем числом не более 36 символов, выраженную в кодировке UTF-16LE.

Все, что такое GPT мы уже знаем, только это стандартная структура GPT-раздела. Оказывается, имеется и модификация…

Т.к. я обнаружил GPT-раздел другой структуры при работе с МУ на основе чипа Intel, то я и назвал ее GPT-раздел типа Intel.

3. Что такое GPT-раздел типа Intel?

Прошивка новых мобильных устройств (МУ) Lenovo, выполненных на основе чипов Intel, имеет Gpt-схему разметки памяти, но структура самого Gpt-файла отличается от стандартной, описанной в [1]. Это касается, например, устройств YOGA BOOK YB1-X90.

По сравнению со стандартной структурой Intel-тип сокращен до максимума:

  • из заголовка убраны Guid, контрольные суммы, смещения всех разделов, кроме саамого первого и все стандартные значения или пустые, например, размер записи параметров раздела, размещение Primary и Backup таблиц;
  • из описания параметров раздела удалены атрибуты, а смещения первого и последнего блока заменены на размер раздела.

GPT-раздел, как и стандартный, состоит из:

  • заголовка;
  • таблицы описания параметров разделов.

Рассмотрим строение заголовка.

3.1. Структура заголовка нового GPT-раздела.

Заголовок имеет размер всего 12 (0x0C) байт (против 512 в стандартном варианте):



Рис.5 Заголовок Gpt-файла Intel-типа

и содержит следующие поля:


Поле Magic, отмеченное синим цветом, содержит число 0х6А8В0DA1, идентифицирующее образ GPT-раздела Intel-типа.

Поле StartLba, отмеченное красным цветом, содержит значение смещения размещения первого раздела памяти.

Поле Number, отмеченное зеленым цветом, содержит общее число разделов памяти, т.е. число записей таблицы описания разделов. Сама таблица расположена сразу после заголовка.

3.2. Структура записи описания нового GPT-раздела

Таблица описания разделов содержит записи, содержащие параметры каждого раздела памяти. Число записей равно числу разделов, а окончание таблицы ничем не отмечается.

Каждая запись имеет размер 108 (0x6C) байт, тогда как по UEFI она содержала 128 байт. Вот как выглядит запись описания раздела нового формата:



Рис.6 Запись описания раздела

и содержит следующие поля, описывающие параметры раздела:


Поле Size, выделенное на рис.6 синим цветом, содержит размер раздела, выраженный в Мб (1024 * 1024 = 1048576 байт).

Поле Label, выделенное на рис.6 красным цветом, содержит метку раздела, т.е. имя раздела, выраженное в кодировке UTF-16.

Поле GuidType, выделенное на рис.6 зеленым цветом, содержит GUID типа раздела.

Поле GuidPartition, выделенное на рис.6 желтым цветом, содержит GUID самого раздела.

4. Заключение

Изучив строение GPT-раздела разметки памяти МУ, можно приступить и к практическим занятиям.

В следующих публикациях я поделюсь опытом переразметки памяти МУ, выполненного по GPT-схеме.

Читайте также: