Понимание JTAG и отладки ядер Arm: ADI и SWD объяснены
Статья разъясняет, как JTAG интегрирован в устройства с ядрами Arm, фокусируясь на Arm Debug Interface (ADI) и протоколе Serial Wire Debug (SWD).
Предыдущие посты в этой серии исследовали стандарт IEEE 1149.1, контроллер Test Access Port (TAP) и машину состояний TAP. Мы также рассмотрели распространенные распиновки JTAG, разъемы и ассортимент доступных на рынке отладочных зондов.
Здесь мы переключаемся на экосистему ARM, детализируя, как повсеместные процессоры ARM реализуют JTAG через ADI и его двухпроводной вариант SWD.
Что такое ARM?
ARM обозначает архитектуру процессора и обширный портфель интеллектуальной собственности, определяющий интерфейсы микропроцессоров и микроконтроллеров. В то время как потребительские ПК обычно используют x86, встроенные системы почти исключительно полагаются на ядра ARM.
Интеллектуальная собственность ядра лицензируется кремниевым производителям — таким как STMicroelectronics, NXP и другие — которые затем добавляют периферийные функции (I²C, SPI, ADC/DAC, USB и т.д.). Архитектуры ARM версионируются (ARMv2, ARMv6, ARMv7, ARMv8 и т.д.), а ядра брендируются как ARMx (например, ARM7) или, недавно, как серии Cortex‑A/R/M для прикладных, реального времени и микроконтроллерных случаев использования. Версионирование архитектуры следует за суффиксом Cortex, давая имена вроде ARMv7‑A или ARMv6‑M.
Отладка в ARM регулируется архитектурой CoreSight, которая включает Arm Debug Interface (ADI), Embedded Trace Macrocell (ETM), High-Speed Serial Trace Ports (HSSTP) и трассировку потока программы. ADI обеспечивает фундамент для отладки, предлагая как JTAG интерфейс, так и альтернативу Serial Wire Debug (SWD).
Обзор Arm Debug Interface (ADI)
Спецификация ADI определяет как аппаратные, так и логические интерфейсы между хост-отладчиком и одним или несколькими ARM-устройствами. Большинство современных процессоров поддерживают ADIv5 (Arm IHI0031E), в то время как ADIv6 (Arm IHI0074C) постепенно внедряется. Мы фокусируемся на ADIv5.
ADI вводит Debug Access Port (DAP), состоящий из Debug Port (DP) и одного или нескольких Access Ports (AP). DP управляет физическим соединением (JTAG или SWD) и содержит встроенные регистры; APs предоставляют доступ к системным ресурсам — отладочным регистрам, трассировочным портам, таблицам ROM или системной памяти.
ADI поддерживает два типа DP: JTAG-DP и SWD-DP. APs бывают трех видов: MEM-AP (доступ к памяти), JTAG-AP (сканирование всей отладочной единицы) и вендор-специфичные APs. MEM-AP наиболее распространены.
В контексте JTAG, ADIv5 поставляет набор инструкционных кодов (например, EXTEST, SAMPLE, PRELOAD, INTEST, CLAMP, HIGHZ, ABORT, DPACC, APACC, IDCODE, BYPASS) и регистров данных (ABORT, DPACC, APACC, IDCODE, BYPASS). Особенно DPACC и APACC позволяют отладчику выдавать команды регистрам DP и AP соответственно.
Типичные регистры DP включают:
- CTRL/STAT — управление и отчет статуса DP.
- DLCR — Data Link Control, установка режима связи.
- DLPIDR — Data Link Protocol ID, указание версии протокола.
- DPIDR — Debug Port Identification.
- EVENTSTAT — сигнализация событий внешнему отладчику.
- RDBUFF — буфер чтения для операций DP.
- SELECT — выбор AP и его банка регистров.
- TARGETID — идентификация цели при подключении одного устройства.
Регистры MEM-AP включают:
- CSW (0x00) — Control/Status Word.
- TAR (0x04) — Transfer Address Register.
- DRW (0x0C) — Data Read/Write регистр.
- BD0–BD3 (0x10–0x1C) — банкированные Data регистры.
- CFG (0xF4) — Configuration.
- BASE (0xF8) — Debase Base Address.
- IDR (0xFC) — Identification Register.
Serial Wire Debug (SWD)
SWD — двухпроводная альтернатива JTAG от ARM, предназначенная для устройств с ограниченным числом пинов. Многие микроконтроллеры Cortex‑M используют SWD вместо полного JTAG для экономии пинов.
SWD заменяет пару JTAG TDI/TDO на один двунаправленный пин SWDIO, устраняет пин TMS и сохраняет тактирование (переименованное в SWCLK). Поскольку SWD опускает машину состояний TAP, команды отправляются последовательно по SWDIO, а затем тот же пин используется для передачи данных.
Обмен происходит в трех фазах: запрос пакета, подтверждение и передача данных. Бит четности используется на протяжении всего процесса. Последовательность начинается со стартового бита (HIGH), затем бит AP/DP, бит RnW, биты адреса, четность, стоп-бит (LOW) и парк-бит. После запроса цель отвечает 3-битным ACK. Для записи хост передает 32 бита данных (младший бит первый) с битом четности; для чтения цель驱动 32 бита данных обратно хосту.
Существует две версии SWD: SWDv1 (точка-точка) и SWDv2 (один хост, много целей). Версия 2 в основном обратно совместима с незначительными пограничными различиями.
Другие варианты JTAG с уменьшенным числом пинов
Помимо SWD, стандарт IEEE 1149.7 определяет двухпроводной JTAG интерфейс. Дополнительные стандарты IEEE 1149.x (1149.4 для смешанно-сигнального теста, 1149.6 для передовых цифровых сетей) предоставляют расширенные возможности, такие как аналоговый boundary-scan и дифференциальные AC-связанные линии.
Обновленные стандарты можно найти на сайте IEEE Standards Association.
Заключение
Мы проследили происхождение JTAG, изучили его физическую реализацию и исследовали, как процессоры ARM адаптируют JTAG через протоколы ADI и SWD. Вооруженные этими знаниями, инженеры могут уверенно отлаживать и программировать встраиваемые устройства, выбирая подходящий интерфейс для своих аппаратных ограничений.
Встроенный
- Arm добавляет поддержку кастомных инструкций для Cortex-M: расширение гибкости
- Надёжные решения power-on для батарейных медицинских устройств
- Mouser поставляет IMU ADIS1647x от Analog Devices: точная навигация для IoT, БПЛА и AR/VR
- ams и Face++ партнерствуют для ускорения внедрения 3D оптического сенсирования и распознавания лиц
- Marvell углубляет стратегический альянс с Arm для следующего поколения ThunderX серверных процессоров
- Отслеживание достижений в технологии медицинских устройств
- Infineon представляет IMC300 контроллер двигателя с интегрированным Arm Cortex-M0 для повышенной гибкости
- ADI ADM2867E: интегрированный изолированный RS‑485 трансивер с DC/DC для компактных применений
- Arm усиливает IoT-коннективность и управление устройствами через покупку Stream Technologies
- Устройства безопасности якорной машины (виндласса): основные защитные функции