TAP-контроллер JTAG
Всё, что делает JTAG, — сдвиг команды или данных через кристалл — проходит через небольшой конечный автомат. Его называют TAP-контроллером, и им управляют всего два сигнала: TMS и TCK.
Обновлено Редакция GAW
TAP-контроллер (Test Access Port controller) — конечный автомат из 16 состояний внутри каждой микросхемы с JTAG. Он решает, что сейчас делает тестовая логика: стоит в покое, сдвигает регистр команд (IR) или регистр данных (DR), загружает или применяет их. Управляют автоматом два сигнала: состояние меняется по уровню TMS на нарастающем фронте TCK. TDI и TMS кристалл читает по нарастающему фронту, а TDO меняет по спадающему — у приёмника на другой стороне цепочки остаётся полтакта на установку (TI SSYA002D, гл. 3).
Состояния
- Test-Logic-Reset — сброс. Тестовая логика не мешает работе микросхемы, а в регистр команд загружается BYPASS или, если она есть, IDCODE. Это единственное состояние, в котором автомат остаётся при TMS = 1, поэтому пять тактов с TMS = 1 приводят его в сброс из любого места. Отдельный вывод TRST поэтому необязателен.
- Run-Test/Idle — ожидание между операциями.
- Две одинаковые ветви для DR и IR: Select → Capture → Shift → Exit1 → Pause → Exit2 → Update. Вместе с двумя состояниями выше это и есть 16.
В ветви: Capture параллельно загружает выбранный регистр — граничный регистр защёлкивает уровни выводов, регистр команд получает код, у которого два младших бита всегда 01. По этим 01 отладчик проверяет, что цепочка цела. Shift выдвигает регистр на TDO и вдвигает TDI по биту за такт; последний бит сдвигают уже с TMS = 1, уходя в Exit1. Pause приостанавливает сдвиг. Update переписывает сдвинутое в теневые защёлки, и только тогда команда или данные начинают действовать (SSYA002D, гл. 3).
Пример: загрузить команду и прочитать данные
Из Run-Test/Idle последовательность TMS = 1, 1, 0, 0 приводит в Shift-IR. Биты команды сдвигают младшим вперёд, последний — с TMS = 1; ещё одна единица — Update-IR, команда вступила в силу. Затем TMS = 1, 0, 0 ведёт через Select-DR-Scan и Capture-DR в Shift-DR: выбранный командой регистр данных выдвигается на TDO. Выход — тем же путём через Exit1-DR и Update-DR.
Длина регистра команд и цепочка
Стандарт требует IR не короче двух бит; у JTAG-DP Arm он 4 или 8 бит (IHI 0031G, гл. B3). Если TAP соединены в цепочку TDO → TDI, все автоматы ходят по состояниям синхронно, а сдвиг идёт через их регистры подряд. У STM32F4 внутри корпуса последовательно стоят TAP граничного сканирования (IR 5 бит, ID-код 0x06413041 у STM32F405/407) и TAP ядра Cortex-M4 (IR 4 бита, 0x4BA00477) — итого 9 бит команды (RM0090, разд. 38.5 и 38.6). Отладчики находят такие цепочки автоматически, считывая IDCODE каждого TAP.
Подробный разбор автомата со схемой переходов, команд и протокола SWD — в статье «JTAG и SWD», разводка разъёмов — на странице «Распиновка JTAG и SWD».
Частые вопросы
Как сбросить JTAG без вывода TRST?
Подать пять или больше тактов TCK при TMS = 1. Из любого состояния автомат за эти такты попадает в Test-Logic-Reset и остаётся там, пока TMS держится в единице. Поэтому вывод TRST по IEEE 1149.1 необязателен, и многие отладчики сбрасывают цепочку именно так.
Почему при сдвиге команды выходы микросхемы не дёргаются?
Потому что сдвиг идёт через отдельный сдвиговый регистр, а действующее значение хранят теневые защёлки. Новое значение переписывается в них только в состоянии Update — после того как весь код уже сдвинут. Пока идёт Shift, микросхема работает со старой командой.
Сколько бит сдвигать в регистр команд, если в цепочке несколько TAP?
Сумму длин регистров команд всех TAP цепочки. У STM32F4 внутри одного корпуса стоят TAP граничного сканирования с IR 5 бит и TAP ядра с IR 4 бита, поэтому команда сдвигается 9 битами. Остальным TAP при работе с одним из них дают команду BYPASS.
Источники
- Texas Instruments. IEEE Std 1149.1 (JTAG) Testability Primer (SSYA002D, 1997) — гл. 3: TAP, регистр команд и регистры данных; TMS и TDI читаются по нарастающему фронту TCK, TDO меняется по спадающему; состояние TAP меняется по уровню TMS на нарастающем фронте TCK; сброс тестовой логики за пять тактов TCK с TMS = 1 даже без TRST; при сбросе в регистр команд загружается BYPASS или IDCODE; при захвате регистр команд получает код с двумя младшими битами 01; регистр команд — не меньше двух бит
- STMicroelectronics. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437, STM32F429/439 (Rev 21) — разд. 38.5: в цепочке два TAP — граничного сканирования с IR 5 бит и ядра Cortex-M4 с IR 4 бита; разд. 38.6: ID-код TAP граничного сканирования 0x06413041 для STM32F405/407/415/417, TAP ядра — 0x4BA00477
- Arm. Arm Debug Interface Architecture Specification ADIv5.0 to ADIv5.2 (IHI 0031G) — гл. B3: JTAG-DP с регистром команд длиной 4 или 8 бит; команды ABORT, DPACC, APACC, IDCODE, BYPASS
Нашли ошибку?
Смотрите также
- JTAG и SWDTAP из 16 состояний, IR/DR, пакеты SWD, ACK, DP и AP, SWO, VTref
- JTAGПоследовательный интерфейс тестирования и отладки по IEEE 1149.1: TCK, TMS, TDI, TDO
- Граничное сканированиеПроверка соединений платы через ячейки JTAG у каждого вывода микросхемы
- IDCODE32-битный идентификатор микросхемы в JTAG: версия, изделие, производитель
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK