Интерфейс JTAG извлечение кода прошивки памяти

Интерфейс JTAG извлечение кода прошивки памяти

Интерфейс JTAG (Joint Test Action Group) представляет установленный стандарт (IEEE 1149.1), принятый для тестирования электронных печатных плат (схем) в процессе производства таковых. После появления и применения на практике, этот интерфейс  быстро набрал популярность в области тестирования электронных схем. Тем более, когда получил другие функциональные возможности — отладка и запись флэш-памяти. На текущий момент времени интерфейс доступен в схемах большинства процессоров и микроконтроллеров различных архитектур, включая ARM, x86, MIPS, PowerPC и другие.

Интерфейс JTAG особенности действия

Несмотря на существование нескольких вариаций стандарта, интерфейс JTAG, как правило, реализуется производителем чипа посредством четырёх рабочих контактов:

  • TDI (входной),
  • TDO (выходной),
  • TCK (частотный),
  • TMS (тестовый).

Кроме отмеченных контактов используется дополнительный контакт – TRST (сброс). Внутренние соединения реализованы через порт доступа TAP (Test Access Port). Модулем TAP реализуется конечный автомат (16 состояний), открывающий доступ на группу регистров (IR, DR) оснащения микросхемы.

Интерфейс JTAG извлечение кода прошивки памяти + распиновка
Разнообразие так называемой распиновки, которое встречается на практике, слева направо: 10-ти пиновая; 14-ти пиновая; 16-ти пиновая; 20-ти пиновая

Управление этим конечным автоматом осуществляется через выводы TMS и TCK. Через конечный автомат допустимо выбрать операцию через регистр IR (регистр инструкций) и передать параметры или проверить результат через регистр DR (регистр данных).

Размерность регистра IR и количество поддерживаемых инструкций определяется производителем чипа. Например, 5-битный регистр IR поддерживает до 32 инструкций. Каждая инструкция имеет свой собственный DR (регистр данных) переменной размерности.

Три инструкции (BYPASS, EXTEST, SAMPLE/PRELOAD) определены стандартом интерфейса JTAG и реализуются производителем устройства. Также есть ряд необязательных инструкций, но обычно также реализованных (например, IDCODE). Таким образом, производителям доступно расширение интерфейса JTAG функциями отладки и доступа к памяти.

Интерфейс JTAG применение на практике

Посредством интерфейса JTAG допустимо контролировать действие прошивки:

  • останов выполнения,
  • проверку памяти,
  • определение точки останова,
  • выполнение кода пошагово и другие.

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

Так, через функцию Boundary Scan интерфейс JTAG открывает доступ буквально к полному набору выводов чипа. Соответственно, инженеру-электронщику доступен контроль каждого вывода. Доступно управление периферийными устройствами, подключенными к процессору/микроконтроллеру (GPIO, память, флэш-память и т. д.).

Практически интерфейс JTAG позволяет инженеру:

  • идентифицировать оборудование (процессор, память и т. д.);
  • выполнить сброс оперативной памяти;
  • получить доступ к любым данным;
  • изменить программный код,
  • получить полный доступ к системе;
  • активировать периферийные устройства.

Наконец, через интерфейс JTAG относительно легко снять дамп, который содержит флэш-память — извлечь «прошивку» аппарата. Инструмент оптимально подходит для тестирования выполнения кода прошивки, поиска уязвимостей, проверки работы устройства.

Как снять дамп памяти через интерфейс JTAG?

Здесь следует отметить четыре основных процедуры, благодаря которым снимается дамп (извлекается код прошивки) микросхемы памяти конкретного устройства с помощью интерфейса JTAG:

  1. Определяются контактные точки.
  2. Проверяется соединение через адаптер.
  3. Выполняется анализ данных памяти чипа.
  4. Извлекается код прошивки в файл.

Рассмотрим весь процесс на примере извлечения кода прошивки, внедрённого в состав чипа BCM5352 (BCM5354).

Определение контактных точек интерфейса JTAG на чипе BCM5352, как и на любом другом, процедура достаточно трудоёмкая. Не исключено, что производитель конкретного устройства закрыл, изменил, а то и вовсе отключил интерфейс JTAG.

Здесь нужна чёткая картина, получить которую можно попытаться через сеть Интернет. Электронщиками нередко выводится в общий доступ полезная информация. Логичной видится загрузка технического описания процессора (даташит), что также поможет идентифицировать контакты.

Интерфейс JTAG извлечение дампа памяти + схема соединения
Схематично соединение межблочное под интерфейс JTAG: 1 — обслуживаемое (ремонтное) устройство; 2 — персональный компьютер

Проверка связи с чипом осуществляется через адаптер – устройство, организующее связь между микросхемой и компьютером. Помимо адаптера также потребуется коммуникационное программное обеспечение. Адаптеры представлены достаточным выбором в продаже, например:

  • Bus Blaster,
  • Black Magic Probe,
  • Flyswatter/Flyswatter2,
  • Bus Pirate,
  • Shikra и другие.

Что касается программного обеспечения, тут выбор также огромен. Среди свободно распространяемых программ, к примеру, можно отметить UrJTAG или OpenOCD. Подключив через адаптер устройство с чипом BCM5352 к USB (или другому) порту компьютера, программой UrJTAG (OpenOCD) проверяется связь с интерфейсом JTAG.

Извлечение идентификатора устройства выполняется с помощью инструкции IDCODE (этот идентификатор уникален для каждой микросхемы). Затем анализируется адресное пространство памяти чипа — определяется начальный адрес и размерность флэш-памяти устройства. Если получены эти данные, следующий шаг — извлечение кода прошивки устройства. Подробности работы с объектом обычно описываются документацией программного обеспечения.

Заключение

Рассмотренный интерфейс JTAG – действенный инструмент, помогающий инженеру-электронщику производить ремонт электронных устройств. Фактически без такого инструмента невозможно полноценно работать с электроникой современного исполнения. Тем более актуальным использование такого рода системы видится для промышленной сферы, где широко применяются контроллеры и программируемые реле.


При помощи информации: EEWeb