JTAG - JTAG

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

JTAG внедряет стандарты для оборудования на кристалле в автоматизация проектирования электроники (EDA) в качестве дополнительного инструмента к цифровое моделирование.[1] Он определяет использование выделенного порт отладки реализация последовательная связь интерфейс для доступа с низкими издержками без необходимости прямого внешнего доступа к системным адресам и шинам данных. Интерфейс подключается к встроенному порту тестового доступа (TAP), который реализует сохранный протокол для доступа к набору тестовых регистров, которые представляют уровни логики микросхемы и возможности устройств различных частей.

Группа Joint Test Action Group сформирована в 1985 году для разработки метода проверки конструкций и испытаний. печатные платы после изготовления. В 1990 г. Институт инженеров по электротехнике и электронике систематизировал результаты усилий в стандарте IEEE 1149.1-1990, озаглавленном Стандартный тестовый порт доступа и архитектура пограничного сканирования.

Стандарты JTAG были расширены многими производителями полупроводниковых микросхем за счет специализированных вариантов, обеспечивающих специфические особенности производителя.[2]

История

В 1980-х годах многослойные печатные платы и интегральные схемы (ИС) с использованием массив сетки мячей и аналогичные технологии монтажа становились стандартными, и между ИС выполнялись соединения, недоступные для датчиков. Большинство производственных и полевых неисправностей печатных плат были вызваны плохим припаять стыки на платах, дефекты между соединениями плат или соединения и скрепление проводов от контактных площадок к рамкам выводов. Группа Joint Test Action Group (JTAG) была сформирована в 1985 году для того, чтобы обеспечить представление выводов от одной контактной площадки к другой, чтобы эти неисправности могли быть обнаружены.

Промышленный стандарт стал IEEE стандарт в 1990 году как IEEE Std. 1149.1-1990[3] после многих лет первоначального использования. В том же году, Intel выпустили свой первый процессор с JTAG ( 80486 ), что привело к более быстрому внедрению в отрасли всеми производителями. В 1994 г. вышло приложение с описанием язык описания пограничного сканирования (BSDL) был добавлен. Дальнейшие уточнения относительно использования нулей для EXTEST, разделения использования SAMPLE от PRELOAD и лучшей реализации для ячеек OBSERVE_ONLY были сделаны и выпущены в 2001 году.[4] С 1990 года этот стандарт был принят электроника компании по всему миру. Граничное сканирование в настоящее время в основном является синонимом JTAG, но JTAG имеет важное применение помимо таких производственных приложений.

Отладка

Хотя ранние приложения JTAG были нацелены на тестирование на уровне платы, здесь стандарт JTAG был разработан для помощи при тестировании устройств, плат и системы, диагноз, и изоляция неисправностей. Сегодня JTAG используется в качестве основного средства доступа к субблокам интегральные схемы, что делает его важным механизмом для отладка встроенные системы у которого может не быть другого канала связи с возможностью отладки.[нужна цитата ] В большинстве систем отладка на основе JTAG доступна с самой первой инструкции после сброса ЦП, что позволяет ей помочь в разработке программного обеспечения ранней загрузки, которое запускается до того, как что-либо будет настроено. An внутрисхемный эмулятор (или, точнее, «адаптер JTAG») использует JTAG в качестве транспортного механизма для доступа к встроенному чипу. отлаживать модули внутри цели ЦПУ. Эти модули позволяют разработчикам программного обеспечения отлаживать программное обеспечение Встроенная система непосредственно на уровне машинных инструкций, когда это необходимо, или (чаще) в терминах исходного кода языка высокого уровня.

Поддержка отладки системного программного обеспечения является для многих разработчиков программного обеспечения основной причиной интереса к JTAG. Многие кремниевые архитектуры, такие как PowerPC, MIPS, ARM, x86, построили всю инфраструктуру отладки программного обеспечения, трассировки инструкций и трассировки данных на основе базового протокола JTAG. Однако часто отдельные поставщики микросхем реализуют только части этих расширений. Некоторые примеры ARM CoreSight и Nexus а также реализации Intel BTS (Branch Trace Storage), LBR (Last Branch Record) и IPT (Intel Processor Trace). Есть много других подобных расширений для конкретных производителей кремний, которые могут быть не задокументированы, кроме как в NDA. Принятие стандарта JTAG помогло увести JTAG-ориентированные среды отладки от ранних проектов, ориентированных на процессор. Процессоры обычно могут быть остановлены, пошагово или свободно работать. Можно установить точки останова кода как для кода в RAM (часто с использованием специальной машинной инструкции), так и в ROM / flash. Часто доступны точки останова по данным, а также массовая загрузка данных в ОЗУ. Большинство проектов имеют «отладку в режиме остановки», но некоторые позволяют отладчикам получать доступ к регистрам и шинам данных без необходимости останавливать отлаживаемое ядро. Некоторые инструментальные цепочки могут использовать модули ARM Embedded Trace Macrocell (ETM) или эквивалентные реализации в других архитектурах для запуска действий отладчика (или трассировки) при сложных аппаратных событиях, таких как логический анализатор запрограммирован на игнорирование первых семи обращений к регистру из одной конкретной подпрограммы.

Иногда FPGA разработчики также используют JTAG для разработки инструментов отладки.[5] Те же методы JTAG, которые используются для отладки программного обеспечения, работающего внутри ЦПУ может помочь отладить другие блоки цифрового дизайна внутри FPGA. Например, могут быть предоставлены пользовательские инструкции JTAG, позволяющие читать регистры, построенные из произвольных наборов сигналов внутри FPGA, обеспечивая видимость поведения, которое невидимо для операций сканирования границ. Точно так же запись таких регистров может обеспечить управляемость, недоступную другим способом.

Хранение прошивки

JTAG позволяет аппаратное обеспечение программатора для передачи данных во внутреннюю энергонезависимую память устройства (например, CPLD ). Некоторые программисты устройств служат двойной цели: как для программирования, так и для отладки устройства. В случае FPGA устройства энергозависимой памяти также можно программировать через порт JTAG, как правило, во время разработки. Кроме того, через порт JTAG могут быть доступны возможности внутреннего мониторинга (температура, напряжение и ток).

Программисты JTAG также используются для записи программного обеспечения и данных в флэш-память. Обычно это делается с использованием того же доступа к шине данных, который использовал бы ЦП, а иногда обрабатывается ЦП. В остальных случаях сами микросхемы памяти имеют JTAG-интерфейсы. Некоторые современные архитектуры отладки предоставляют доступ к внутреннему и внешнему мастеру шины без необходимости останавливать и загружать ЦП. В худшем случае обычно можно управлять сигналами внешней шины, используя средство граничного сканирования.

На практике при разработке встроенной системы эмуляция хранилища инструкций - это самый быстрый способ реализовать «цикл отладки» (редактирование, компиляция, загрузка, тестирование и отладка).[нужна цитата ] Это связано с тем, что внутрисхемный эмулятор, имитирующий хранилище инструкций, может быть очень быстро обновлен с хоста разработки, например, через USB. Использование последовательного порта UART и загрузчика для загрузки прошивки во Flash делает этот цикл отладки довольно медленным и, возможно, дорогим с точки зрения инструментов; установка прошивки во Flash (или в SRAM вместо Flash) через JTAG - промежуточное решение между этими крайностями.

Граничное сканирование

JTAG граничное сканирование Технология обеспечивает доступ ко многим логическим сигналам сложной интегральной схемы, в том числе к выводам устройства. Сигналы представлены в регистре граничного сканирования (BSR), доступном через TAP. Это позволяет проводить тестирование, а также контролировать состояние сигналов для тестирования и отладки. Следовательно, могут быть обнаружены как программные, так и аппаратные (производственные) сбои, а работающее устройство может контролироваться.

В сочетании со встроенным самотестированием (БИСТ ), цепь сканирования JTAG позволяет использовать встроенное решение с низкими накладными расходами для проверки ИС на наличие определенных статических неисправностей (короткое замыкание, обрыв и логические ошибки). Механизм цепи сканирования обычно не помогает диагностировать или тестировать временные, температурные или другие динамические эксплуатационные ошибки, которые могут возникнуть. Тестовые примеры часто предоставляются в стандартных форматах, таких как SVF, или его двоичный родственник XSVF, и используется в производственных тестах. Возможность проводить такие испытания на готовых платах является важной частью Дизайн для теста в сегодняшних продуктах увеличивается количество неисправностей, которые могут быть обнаружены до того, как продукты будут доставлены покупателям.

Электрические характеристики

Интерфейс JTAG - это специальный интерфейс, добавляемый к микросхеме. В зависимости от версии JTAG добавляются два, четыре или пять контактов. Четырех- и пятиконтактные интерфейсы спроектированы таким образом, что несколько микросхем на плате могут иметь свои линии JTAG. прикованный цепочкой вместе при соблюдении определенных условий.[6] Двухконтактный интерфейс разработан таким образом, что несколько микросхем могут быть подключены в один звездная топология. В любом случае тестовый зонд нужно только подключиться к одному «порту JTAG», чтобы иметь доступ ко всем микросхемам на печатная плата.

JTAG с последовательным подключением (IEEE 1149.1)

Пример цепочки JTAG. Сигнал сброса теста не отображается

Контакты разъема:

  1. TDI (Тестовые данные в)
  2. TDO (Тестовые данные отсутствуют)
  3. TCK (Тестовые часы)
  4. ТМС (Выбор тестового режима)
  5. TRST (Тестовый сброс) необязательно.

Вывод TRST - это дополнительный активный низкий сброс логики тестирования, обычно асинхронный, но иногда синхронный, в зависимости от микросхемы. Если вывод недоступен, логику тестирования можно сбросить, переключившись в состояние сброса синхронно, используя TCK и TMS. Обратите внимание, что сброс логики теста не обязательно означает сброс чего-либо еще. Как правило, существуют некоторые операции JTAG, специфичные для процессора, которые могут полностью или частично сбросить отлаживаемый чип.

Поскольку доступна только одна строка данных, протокол серийный. Вход часов находится на выводе TCK. Один бит данных передается из TDI и из TDO за каждый фронт тактовой частоты TCK. Могут быть загружены разные инструкции. Инструкции для типичных ИС могут считывать идентификатор микросхемы, входные контакты выборки, выходные контакты привода (или плавающие), управлять функциями микросхемы или обходить (направлять TDI в TDO для логического сокращения цепочек из нескольких микросхем).

Как и в случае любого синхронизированного сигнала, данные, представленные в TDI, должны быть действительными для некоторых конкретных микросхем. Настроить время до и Держать время после соответствующего (здесь восходящего) фронта тактового сигнала. Данные TDO действительны в течение некоторого времени, зависящего от чипа, после спада TCK.

Максимальная рабочая частота TCK варьируется в зависимости от всех микросхем в цепочке (должна использоваться самая низкая скорость), но обычно она составляет 10–100 МГц (100–10 нс на бит). Также частоты TCK зависят от компоновки платы, возможностей и состояния JTAG-адаптера. Один чип может иметь тактовую частоту JTAG 40 МГц, но только если он использует тактовую частоту 200 МГц для операций без JTAG; и, возможно, потребуется использовать гораздо более медленные часы, когда он находится в режиме низкого энергопотребления. Соответственно, некоторые адаптеры JTAG имеют адаптивная синхронизация используя сигнал RTCK (возврат TCK). Более высокие частоты TCK наиболее полезны, когда JTAG используется для передачи большого количества данных, например, при сохранении исполняемого файла программы в флэш-память.

Отслеживание изменений на шагах TMS через стандартизированный JTAG Государственный аппарат. Конечный автомат JTAG может выполнять сброс, обращаться к регистру инструкций или получать доступ к данным, выбранным регистром инструкций.

Платформы JTAG часто добавляют сигналы к горстке сигналов, определенных спецификацией IEEE 1149.1. Сигнал сброса системы (SRST) является довольно распространенным явлением, позволяя отладчикам сбрасывать всю систему, а не только ее части с поддержкой JTAG. Иногда используются сигналы событий для запуска активности хоста или устройства, отслеживаемого через JTAG; или, возможно, дополнительные линии управления.

Несмотря на то, что некоторые потребительские товары предоставляют явный разъем порта JTAG, соединения часто доступны на печатная плата как остаток от развития прототипирование и / или производство. Когда эти связи используются, они часто предоставляют наиболее эффективные средства для обратный инжиниринг.

Уменьшенное количество выводов JTAG (IEEE 1149.7)

Пример JTAG с уменьшенным количеством выводов

Уменьшенное количество контактов JTAG использует только два провода, провод часов и провод данных. Это определено как часть стандарта IEEE 1149.7.[7] Контакты разъема:

  1. TMSC (Тестовые серийные данные)
  2. TCKC (Тестовые часы)

Он называется cJTAG от компактного JTAG.

Двухпроводной интерфейс снизил давление на количество контактов, и устройства могут быть подключены в звездная топология.[8] Топология «звезда» позволяет отключать некоторые части системы, в то время как к другим можно получить доступ через JTAG; шлейфовое соединение требует, чтобы все интерфейсы JTAG были запитаны. Существуют и другие двухпроводные интерфейсы, например Отладка последовательного кабеля.

Модель коммуникации

В JTAG устройства выставляют один или несколько тестовые порты доступа (ТАП). На рисунке выше показаны три TAP, которые могут быть отдельными микросхемами или могут быть модулями внутри одной микросхемы. Гирляндная цепочка TAP называется сканировать цепочку, или (свободно) цель. Цепочки сканирования могут быть сколь угодно длинными, но на практике двадцать TAP - это необычно долго.[нужна цитата ]

Чтобы использовать JTAG, хост подключается к сигналам JTAG цели (TMS, TCK, TDI, TDO и т. Д.) Через какой-то Адаптер JTAG, который может потребоваться для решения таких проблем, как смещение уровня и гальваническая развязка. Адаптер подключается к хосту через интерфейс, например USB, PCI, Ethernet и т. Д.

Примитивы

Хост взаимодействует с TAP, манипулируя TMS и TDI вместе с TCK и считывая результаты через TDO (который является единственным стандартным вводом на стороне хоста). Выходные переходы TMS / TDI / TCK создают базовый примитив связи JTAG, на котором строятся протоколы более высокого уровня:

  • Переключение состояний ... Все TAP находятся в одном и том же состоянии, и это состояние изменяется при переходах TCK. Этот конечный автомат JTAG является частью спецификации JTAG и включает шестнадцать состояний. Существует шесть «стабильных состояний», в которых сохранение стабильности TMS предотвращает изменение состояния. Во всех остальных состояниях TCK всегда меняет это состояние. Кроме того, утверждение TRST приводит к принудительному переходу в одно из этих стабильных состояний (Test_Logic_Reset) немного более быстрым способом, чем альтернатива удержания TMS на высоком уровне и пятикратного переключения TCK.
  • Смещение ... Большинство частей конечного автомата JTAG поддерживают два стабильных состояния, используемых для передачи данных. Каждый TAP имеет регистр инструкций (IR) и регистр данных (ДР). Размер этих регистров варьируется между TAP, и эти регистры объединяются посредством TDI и TDO, чтобы сформировать большой регистр сдвига. (Размер DR является функцией значения в текущем IR этого TAP и, возможно, значения, указанного инструкцией SCAN_N.) В этом регистре сдвига определены три операции:
    • Захват временное значение
      • Вход в Shift_IR стабильное состояние переходит в состояние Capture_IR, загружая в сдвиговый регистр частично фиксированное значение (не текущую инструкцию)
      • Вход в Shift_DR стабильное состояние идет через состояние Capture_DR, загружая значение регистра данных, заданное текущим IR TAP.
    • Смещение это значение побитно в стабильном состоянии Shift_IR или Shift_DR; Переходы TCK сдвигают регистр сдвига на один бит от TDI к TDO, точно так же, как SPI передача данных в режиме 1 через гирляндную цепочку устройств (при этом TMS = 0 действует как сигнал выбора микросхемы, TDI как MOSI и т. д.).
    • Обновление IR или DR из смещенного временного значения при переходе через состояние Update_IR или Update_DR. Обратите внимание, что невозможно прочитать (захватить) регистр без его записи (обновления), и наоборот. Обычная идиома добавляет биты флагов, чтобы сказать, должно ли обновление иметь побочные эффекты или готово ли оборудование для выполнения таких побочных эффектов.
  • Бег ... Одно стабильное состояние называется Run_Test / Idle. Различие специфично для TAP. Синхронизация TCK в состоянии ожидания не имеет особых побочных эффектов, но синхронизация в состоянии Run_Test может изменить состояние системы. Например, некоторые ARM9 ядра поддерживают режим отладки, в котором TCK циклы в состоянии Run_Test управляют конвейером команд.

Итак, на базовом уровне использование JTAG включает чтение и запись инструкций и связанных с ними регистров данных; и иногда включает в себя выполнение ряда тестовых циклов. За этими регистрами находится оборудование, которое не определено JTAG и которое имеет свои собственные состояния, на которые влияют действия JTAG.

Большинство хостов JTAG используют кратчайший путь между двумя состояниями, возможно, ограниченный особенностями адаптера. (Например, один адаптер[который? ] обрабатывает только пути, длина которых кратна семи битам.) Некоторые уровни, построенные на основе JTAG, отслеживают переходы состояний и используют необычные пути для запуска операций более высокого уровня. Некоторые ядра ARM используют такие последовательности для входа и выхода из двухпроводной (не JTAG) SWD Режим. Последовательность сканирования нулевого бита (ZBS) используется в IEEE 1149.7.[7] для доступа к расширенным функциям, таким как переключение TAP в цепочки сканирования и из них, управление питанием и другой двухпроводной режим.

Инструкции JTAG IEEE Std 1149.1 (граничное сканирование)

Размеры регистров инструкций обычно небольшие, возможно, четыре или семь битов. За исключением BYPASS и EXTEST, все коды операций инструкций определяются разработчиком TAP, как и связанные с ними регистры данных; неопределенные коды инструкций использовать не следует. Две ключевые инструкции:

  • Инструкция BYPASS, код операции из всех единиц независимо от размера регистра инструкций TAP, должна поддерживаться всеми TAP. Инструкция выбирает однобитовый регистр данных (также называемый BYPASS). Эта инструкция позволяет обойти это устройство (ничего не делать), в то время как другие устройства на пути сканирования проверяются.[4]
  • Необязательная инструкция IDCODE с кодом операции, определяемым разработчиком. IDCODE связан с 32-битным регистром (IDCODE). Его данные используют стандартизированный формат, который включает код производителя (полученный из JEDEC Стандартный идентификационный код производителя стандарт, JEP-106), номер детали, присвоенный производителем, и код версии детали. IDCODE поддерживается широко, но не повсеместно.

При выходе из состояния RESET в регистр команд предварительно загружается BYPASS или IDCODE. Это позволяет хостам JTAG определять размер и, по крайней мере частично, содержимое цепочки сканирования, к которой они подключены. (Они могут войти в состояние RESET, а затем сканировать регистр данных, пока не прочитают записанные данные. Регистр BYPASS имеет только нулевой бит; в то время как регистр IDCODE - 32-битный и начинается с единицы. Таким образом, биты не записываются хост может быть легко сопоставлен с TAP.) Такая идентификация часто используется для проверки работоспособности ручной настройки, поскольку IDCODE часто не является конкретным. Например, он может идентифицировать микроконтроллер на базе ARM Cortex-M3, без указания производителя или модели микроконтроллера; или конкретную FPGA, но не то, как она была запрограммирована.

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

Стандарт IEEE 1149.1 (JTAG) описывает ряд инструкций для поддержки приложений пограничного сканирования. Некоторые из этих инструкций являются «обязательными», но TAP, используемые для отладки вместо тестирования граничного сканирования, иногда обеспечивают минимальную поддержку этих инструкций или не поддерживают их вообще. Эти "обязательные" инструкции работают с регистром пограничного сканирования (BSR), определенным в BSDL файл и включить:

  • EXTEST для внешнего тестирования, такого как использование контактов для проверки поведения на уровне платы
  • PRELOAD загрузка выходных значений вывода перед EXTEST (иногда в сочетании с SAMPLE)
  • ОБРАЗЕЦ считывания значений выводов в регистр граничного сканирования

Определяемые IEEE "необязательные" инструкции включают:

  • ЗАЖИМ вариант BYPASS, который управляет выходными контактами, используя предварительно загруженные значения
  • HIGHZ отключает выходы всех контактов
  • INTEST для внутреннего тестирования, например использование контактов для проверки поведения на кристалле
  • RUNBIST переводит чип в режим самотестирования.
  • USERCODE возвращает определенный пользователем код, например, чтобы определить, какой образ FPGA активен.

Устройства могут определять больше инструкций, и эти определения должны быть частью файла BSDL, предоставленного производителем. Часто они помечаются только как ЧАСТНЫЕ.

Регистр пограничного сканирования

Устройства связываются с миром через набор входных и выходных контактов. Сами по себе эти штифты обеспечивают ограниченный обзор работы устройства. Однако устройства, поддерживающие граничное сканирование содержат ячейку регистра сдвига для каждого сигнального вывода устройства. Эти регистры связаны выделенным путем вокруг границы устройства (отсюда и название). Путь создает возможность виртуального доступа, которая обходит обычные входы и выходы, обеспечивая прямое управление устройством и подробную видимость сигналов.[9]

Содержимое регистра граничного сканирования, включая возможности ввода / вывода сигналов, обычно описывается производителем с использованием специфичного для детали BSDL файл. Они используются с проектными «списками соединений» из систем CAD / EDA для разработки тестов, используемых при производстве плат. Коммерческие испытательные системы часто стоят несколько тысяч долларов за полную систему и включают в себя диагностические опции для выявления таких неисправностей, как обрыв цепи и короткое замыкание. Они также могут предложить средства просмотра схем или компоновки для графического изображения неисправности.

Чтобы включить граничное сканирование, поставщики ИС добавляют логику к каждому из своих устройств, включая ячейки сканирования для каждого из сигнальных контактов. Эти ячейки затем соединяются вместе, чтобы сформировать регистр сдвига с граничным сканированием (BSR), который подключен к контроллеру TAP. Эти проекты являются частью большинства библиотек Verilog или VHDL. Накладные расходы на эту дополнительную логику минимальны и обычно окупаются, чтобы обеспечить эффективное тестирование на уровне платы.

Пример: отладочный TAP ARM11

Пример помогает показать работу JTAG в реальных системах. Пример здесь - отладочный TAP ARM11 процессор, ARM1136[10] ядро. Сам процессор имеет расширенные возможности JTAG, аналогичные тем, что есть в других ядрах ЦП, и он интегрирован в чипы с еще более широкими возможностями, доступными через JTAG.

Это нетривиальный пример, который представляет значительную часть систем с поддержкой JTAG. Кроме того, он показывает, как построены механизмы управления с использованием примитивов чтения / записи регистров JTAG и как они сочетаются для облегчения тестирования и отладки сложных логических элементов; Процессоры распространены, но ПЛИС и ASIC включать другие сложные элементы, требующие отладки.

Лицензиаты этого ядра интегрируют его в чипы, обычно комбинируя его с другими TAP, а также с многочисленными периферийными устройствами и памятью. Один из этих других TAP выполняет тестирование граничного сканирования для всего чипа; он не поддерживается TAP отладки. Примеры таких чипов включают:

  • В OMAP2420, который включает TAP с граничным сканированием, TAP отладки ARM1136, TAP с буфером трассировки ETB11, C55x DSP, и TAP для ARM7 Механизм визуализации на основе TDMI с TAP с граничным сканированием (ICEpick-B), имеющим возможность вставлять TAP в цепочку сканирования JTAG и извлекать из нее.[11]
  • В i.MX31 аналогичный процессор, хотя его TAP с граничным сканированием "System JTAG",[12] который сильно отличается от ICEpick и включает в себя TAP для своего механизма DMA вместо DSP и механизма обработки изображений.

Оба эти процессора предназначены для использования в беспроводных телефонах, таких как сотовые телефоны, что является одной из причин, по которой они включают контроллеры TAP, которые изменяют цепочку сканирования JTAG: для отладки работы с низким энергопотреблением требуется доступ к микросхемам, когда они в основном выключены, и, следовательно, когда они не все ПВР находятся в рабочем состоянии. Эта модификация цепочки сканирования является предметом предстоящего IEEE 1149.7.[7] стандарт.

Услуги JTAG

Этот отладочный TAP предоставляет несколько стандартных инструкций, а некоторые специально разработаны для аппаратной поддержки. отладка, где программный инструмент («отладчик») использует JTAG для связи с отлаживаемой системой:

  • БАЙПАС и IDCODE, стандартные инструкции, как описано выше
  • EXTEST, ИНТЕСТ, стандартные инструкции, но работающие с ядром, а не с внешней цепочкой граничного сканирования. EXTEST номинально для записи данных в ядро, ИНТЕСТ номинально для чтения; но две цепочки сканирования являются исключением из этого правила.
  • SCAN_N Инструкция ARM для выбора нумерованной цепи сканирования, используемой с EXTEST или ИНТЕСТ. Всего существует шесть цепочек сканирования:
    • 0 - Регистр идентификатора устройства, 40 бит идентификационных данных только для чтения
    • 1 - Регистр состояния отладки и управления (DSCR), 32 бита, используемые для работы средств отладки
    • 4 - Регистр передачи инструкций (ITR), 33 бита (32 инструкции плюс один бит состояния), используемые для выполнения инструкций процессора в специальном «режиме отладки» (см. Ниже)
    • 5 - Канал связи отладки (DCC), 34 бита (одно длинное слово данных плюс два бита состояния), используемые для двунаправленной передачи данных в ядро. Это используется как в режиме отладки, так и, возможно, во время выполнения при разговоре с программным обеспечением, поддерживающим отладчик.
    • 6 - Встроенный модуль трассировки (ETM), 40 бит (7-битный адрес, одно 32-битное длинное слово данных и бит чтения / записи), используемые для управления работой пассивных инструкций и механизма трассировки данных. Это подает либо встроенный буфер трассировки (ETB) на кристалле, либо внешний модуль сбора данных трассировки высокой скорости. Трассировка поддерживает пассивную отладку (изучение истории выполнения) и профилирование для настройки производительности.
    • 7 - модуль отладки, 40 бит (7-битный адрес, одно 32-битное длинное слово данных и бит чтения / записи), используемый для доступа к аппаратным точкам останова, точкам наблюдения и многому другому. Их можно записывать во время работы процессора; ему не обязательно находиться в режиме отладки.
  • HALT и РЕСТАРТ, Специфичные для ARM11 инструкции по остановке и перезапуску ЦП. Остановка переводит ядро ​​в «режим отладки», где ITR может использоваться для выполнения инструкций, включая использование DCC для передачи данных между хостом отладки (JTAG) и процессором.
  • ITRSEL, Специальная для ARM11 инструкция по ускорению некоторых операций с ITR.

Эта модель похожа на модель, используемую в других ядрах ARM. Системы без ARM обычно имеют аналогичные возможности, возможно, реализованные с использованием Nexus протоколы поверх JTAG или других схем от производителя.

Старший ARM7 и ARM9 ядра включают EmbeddedICE модуль[13] который сочетает в себе большинство этих возможностей, но имеет неудобный механизм для выполнения инструкций: отладчик должен управлять конвейером инструкций ЦП, такт за часом, и напрямую обращаться к шинам данных для чтения и записи данных в ЦП. ARM11 использует ту же модель для поддержки трассировки (ETM, ETB), что и более старые ядра.

Новые ядра ARM Cortex очень похожи на эту модель отладки, но построены на Порт доступа отладки (DAP) вместо прямого доступа к ЦП. В этой архитектуре (названной Технология CoreSight), ядро ​​и модуль JTAG полностью независимы. Они также отделены от JTAG, поэтому их можно размещать по двухпроводной сети ARM. SWD интерфейс (см. ниже) вместо шестипроводного интерфейса JTAG. (ARM принимает четыре стандартных сигнала JTAG и добавляет дополнительный TRST, а также сигнал RTCK, используемый для адаптивной синхронизации.) CoreSight JTAG-DP асинхронен с тактовыми частотами ядра и не реализует RTCK.[14] Кроме того, в новых ядрах обновлена ​​поддержка трассировки.

Отладка в режиме остановки

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

Так, например, JTAG-хост может ОСТАНОВИТЬ ядро, войдя в режим отладки, а затем прочитать регистры ЦП с помощью ITR и DCC. После сохранения состояния процессора он может записывать в эти регистры любые необходимые значения, а затем выполнять произвольные алгоритмы на ЦП, обращаясь к памяти и периферийным устройствам, чтобы помочь охарактеризовать состояние системы. После того, как отладчик выполнит эти операции, состояние может быть восстановлено и выполнение будет продолжено с помощью инструкции RESTART.

В режим отладки также входит асинхронно модуль отладки, запускающий точку наблюдения или точку останова, или путем выдачи инструкции BKPT (точка останова) от отлаживаемого программного обеспечения. Когда он не используется для отслеживания инструкций, ETM также может инициировать вход в режим отладки; он поддерживает сложные триггеры, чувствительные к состоянию и истории, а также простые сравнения адресов, предоставляемые модулем отладки. Асинхронные переходы в режим отладки обнаруживаются путем опроса регистра DSCR. Вот как реализуется пошаговое выполнение: ОСТАНОВИТЬ ядро, установите временную точку останова в следующей инструкции или следующем высокоуровневом операторе, ПЕРЕЗАПУСТИТЕ, опросите DSCR, пока не обнаружите асинхронный вход в состояние отладки, удалите эту временную точку останова, повторите.

Отладка в режиме монитора

Современное программное обеспечение часто слишком сложно, чтобы хорошо работать с такой однопоточной моделью. Например, процессор, используемый для управления двигателем (возможно, приводящим в движение полотно пилы), может оказаться не в состоянии безопасно перейти в режим остановки; может потребоваться продолжить обработку прерываний для обеспечения физической безопасности людей и / или оборудования. Выполнение инструкции HALT с использованием JTAG может быть опасным.

Процессоры ARM поддерживают альтернативный режим отладки, называемый Режим монитора, чтобы работать с такими ситуациями. (Это отличается от Безопасный режим монитора реализовано как часть расширений безопасности на новых ядрах ARM; он управляет операциями отладки, а не переходами безопасности.) В этих случаях точки останова и точки наблюдения вызывают особый вид аппаратного исключения, передавая управление «монитору отладки», работающему как часть системного программного обеспечения. Этот монитор взаимодействует с отладчиком с помощью DCC и может, например, организовать пошаговое выполнение только одного процесса, в то время как другие процессы (и обработчики прерываний) продолжают работать.

Общие расширения

Производители микропроцессоров часто определяют свои собственные отладочные расширения для конкретных ядер. К таким поставщикам относятся Infineon, MIPS с EJTAG и многое другое. Если поставщик не принимает стандарт (например, те, что используются процессорами ARM или Nexus), ему необходимо определить собственное решение. Если они поддерживают граничное сканирование, они обычно строят отладку через JTAG.

Freescale имеет COP и OnCE (встроенная эмуляция). OnCE включает команду JTAG, которая переводит TAP в специальный режим, в котором IR содержит команды отладки OnCE.[15] для таких операций, как пошаговое выполнение, установка точек останова и доступ к регистрам или памяти. Он также определяет EOnCE (Enhanced On-Chip Emulation).[16] представлены как решение проблем в реальном времени.

РУКА имеет обширную архитектуру отладки ядра процессора (CoreSight), которая началась с EmbeddedICE (средство отладки, доступное на большинстве ядер ARM), а теперь включает множество дополнительных компонентов, таких как ETM (Embedded Trace Macrocell), с высокоскоростным портом трассировки, поддерживающим несколько -ядерная и многопоточная трассировка. Обратите внимание, что отслеживание не является инвазивным; системы не нужно останавливать работу, чтобы их можно было отследить. (Однако данные трассировки слишком объемны, чтобы использовать JTAG как нечто большее, чем канал управления трассировкой.)

Nexus определяет инфраструктуру отладки процессора, которая в значительной степени не зависит от производителя. Один из его аппаратных интерфейсов - JTAG. Он также определяет высокоскоростной интерфейс вспомогательного порта, используемый для трассировки и многого другого. Nexus используется с некоторыми новыми платформами, такими как Атмель Процессоры серий AVR32 и Freescale MPC5500.

Использует

  • За исключением некоторых систем самого низкого уровня, практически все встроенные системы платформы имеют порт JTAG для поддержки внутрисхемной отладки и программирования прошивки, а также для тестирования граничного сканирования:
    • ARM архитектура процессоры поставляются с поддержкой JTAG, иногда с поддержкой двухпроводного варианта «SWD» или высокоскоростного отслеживания трафика по шинам команд или данных.
    • Современные 8-битные и 16-битные микроконтроллер чипы, такие как Atmel AVR и TI MSP430 чипы, поддержка программирования и отладки JTAG. Однако самые маленькие микросхемы могут не иметь достаточного количества выводов (и, таким образом, обычно полагаются на собственные однопроводные программные интерфейсы); если количество выводов больше 32, вероятно, есть опция JTAG.
    • Почти все ПЛИС и CPLD используемые сегодня, можно программировать через порт JTAG. А Стандартный язык тестирования и программирования определяется стандартом JEDEC JESD-71 для JTAG-программирования PLD.
    • Много MIPS и PowerPC процессоры имеют поддержку JTAG
    • Все процессоры Intel Core, Xeon, Atom и Quark поддерживают режим проверки JTAG со специфическими для Intel расширениями JTAG, использующими так называемый 60-контактный расширенный порт отладки [XDP]. Кроме того, процессор Quark поддерживает более традиционные 10-контактные разъемы.
    • Потребительские товары, такие как сетевые устройства и спутниковое телевидение интегрированный ресивер / декодеры часто используют микропроцессоры, поддерживающие JTAG, обеспечивая альтернативный способ перезагрузки прошивка если существующие загрузчик был каким-то образом поврежден.
  • В PCI стандартный разъем шины содержит дополнительные сигналы JTAG на контактах 1-5;[17] PCI Express содержит сигналы JTAG на контактах 5-9.[18] Специальную карту JTAG можно использовать для перепрошивки поврежденного BIOS.
  • Граничное сканирование и приложения для программирования внутри системы (устройства) иногда программируются с использованием Последовательный векторный формат, текстовое представление операций JTAG с использованием простого синтаксиса. Другие форматы программирования включают 'JAM' и STAPL, а также недавно появившийся стандарт IEEE Std. 1532 определяет формат ISC (сокращение от In-System Configuration). Формат ISC используется вместе с расширенными моделями BSDL для программируемых логических устройств (например, FPGA и CPLD), которые включают дополнительные инструкции ISC_ в дополнение к базовым минимальным инструкциям IEEE 1149.1. Инструменты программирования FPGA от Xilinx, Altera, Lattice, Cypress, Actel и т. Д. Обычно могут экспортировать такие файлы.
  • Как уже упоминалось, многие платы включают разъемы JTAG или просто контактные площадки для поддержки производственных операций, где тестирование граничного сканирования помогает проверить качество платы (выявление плохих паяных соединений и т. Д.) И инициализировать флэш-память или ПЛИС.
  • JTAG также может поддерживать обновления на местах и ​​устранение неполадок.

Поддержка клиентов

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

Разъемы

А Netgear FVS336G брандмауэр с 14-контактным разъемом JTAG внизу слева.
Netgear DG632 ADSL модем с 8-контактным разъемом JTAG в позиции "5".

Официальных стандартов для физических разъемов JTAG-адаптера нет. Доски разработки обычно включают заголовок для поддержки предпочтительных инструментов разработки; в некоторых случаях они включают несколько таких заголовков, потому что они должны поддерживать несколько таких инструментов. Например, микроконтроллер, FPGA и процессор приложений ARM редко используют общие инструменты, поэтому плата разработки, использующая все эти компоненты, может иметь три или более заголовков. Производственные платы могут опускать заголовки или, когда пространство ограничено, могут предоставлять доступ к сигналу JTAG с использованием контрольных точек.

Некоторые общие распиновки[19] для 2,54 мм (0,100 дюйма) заголовки контактов находятся:

  • ARM 2 × 10 контактов (или иногда более старые 2 × 7), используемые почти во всех системах на базе ARM
  • MIPS EJTAG (2 × 7 контактов), используемый для MIPS основанные системы
  • 2 × 5-контактный Альтера Совместимый с ByteBlaster JTAG, расширенный многими поставщиками
  • 2 × 5-контактный AVR расширяет Altera JTAG с помощью SRST (и в некоторых случаях TRST и вывода событий)
  • 2 × 7-контактный Инструменты Техаса используется с DSP и продукты на базе ARM, такие как OMAP
  • 8-контактный (однорядный) общий PLD JTAG, совместимый со многими кабелями Lattice ispDOWNLOAD
  • МИПИ 10/20-коннекторы (1,27 мм 050 ") для JTAG, cJTAG и SWD

Эти разъемы, как правило, включают в себя не только четыре стандартизированных сигнала (TMS, TCK, TDI, TDO). Обычно подаются сигналы сброса, один или оба: TRST (сброс TAP) и SRST (сброс системы). Разъем обычно обеспечивает напряжение питания логики тестируемой платы, поэтому адаптеры JTAG используют соответствующие логические уровни. Напряжение платы также может служить входом отладчика "плата присутствует". Могут быть предоставлены другие входные или выходные сигналы событий, или ввод / вывод общего назначения (GPIO) для поддержки более сложных архитектур отладки.

В более дорогих конечных продуктах часто используются плотные разъемы (часто 38-контактные МИКТОР разъемы) для поддержки высокоскоростной отслеживание в сочетании с операциями JTAG. Недавняя тенденция заключается в том, что платы разработки интегрируют интерфейс USB с JTAG, где второй канал используется для последовательного порта. (Платы меньшего размера также могут получать питание через USB. Поскольку современные ПК, как правило, не имеют последовательных портов, такие встроенные отладочные каналы могут значительно уменьшить беспорядок для разработчиков.) Производственные платы часто полагаются на гвоздь подключения к контрольным точкам для тестирования и программирования.

Аппаратный адаптер

Оборудование адаптера сильно различается. Когда он не интегрирован в плату для разработки, он включает короткий кабель для подключения к разъему JTAG на целевой плате; подключение к отладочному узлу, например, по USB, PCI или Ethernet; и достаточно электроники для адаптации двух областей связи (а иногда и для обеспечения гальваническая развязка ). Может потребоваться отдельный блок питания. Есть оба «тупых» адаптера, где хост решает и выполняет все операции JTAG; и «умные», где часть этой работы выполняется внутри адаптера, часто управляемым микроконтроллером. «Умные» адаптеры устраняют задержки в канале связи для последовательностей операций, которые могут включать опрос на предмет изменений статуса между шагами, и могут соответственно обеспечивать более высокую пропускную способность.

По состоянию на 2018 год, переходники с USB ссылка от хоста - самый распространенный подход. Продукты более высокого качества часто поддерживают Ethernet, с тем преимуществом, что узел отладки может быть довольно удаленным. Адаптеры, поддерживающие высокоскоростные порты трассировки, обычно включают несколько мегабайт буфера трассировки и обеспечивают высокоскоростные каналы (USB или Ethernet) для передачи этих данных на хост.

Параллельный порт адаптеры просты и недороги, но они относительно медленные, потому что используют центральный процессор для изменения каждого бита ("немного стучать "). Их полезность снизилась, потому что в последние годы у большинства компьютеров нет параллельного порта. Поддержка драйверов также является проблемой, поскольку использование контактов адаптерами сильно различается. Поскольку параллельный порт основан на логическом уровне 5 В, большинство адаптеров отсутствовала поддержка преобразования напряжения для целевых напряжений 3,3 В или 1,8 В.

RS-232 Серийный порт адаптеры также существуют, и их полезность также снижается. Обычно они включают либо более медленную передачу битов, чем параллельный порт, либо микроконтроллер, транслирующий некоторый командный протокол в операции JTAG. Такие последовательные адаптеры также не быстры, но их командные протоколы, как правило, можно повторно использовать поверх более высокоскоростных каналов.

Для всех адаптеров JTAG поддержка программного обеспечения является основной задачей. Многие поставщики не публикуют протоколы, используемые их аппаратным обеспечением адаптера JTAG, ограничивая своих клиентов набором инструментов, поддерживаемым этими поставщиками. Это особая проблема для «умных» адаптеров, некоторые из которых содержат значительный объем знаний о том, как взаимодействовать с конкретными процессорами.

Разработка программного обеспечения

Большинство сред разработки для встроенного программного обеспечения включают поддержку JTAG. Существует три источника такого программного обеспечения:

  • Продавцы чипов может предоставить инструменты, обычно требующие поставляемого ими адаптера JTAG. Примеры включают поставщиков FPGA, таких как Xilinx и Альтера, Атмель для линейки продуктов AVR8 и AVR32, а также Инструменты Техаса для большинства своих DSP и микропродуктов. Такие инструменты, как правило, имеют широкие возможности и могут быть единственным реальным вариантом для узкоспециализированных микросхем, таких как FPGA и DSP. Программные инструменты более низкого уровня могут быть предоставлены бесплатно. Сами адаптеры JTAG платные, хотя иногда они идут в комплекте с платами для разработки.
  • Продавцы инструментов может предоставлять их, как правило, совместно с несколькими поставщиками микросхем для обеспечения поддержки кросс-платформенной разработки. РУКА -содержащие продукты имеют особенно богатый сторонний рынок, и некоторые из этих поставщиков расширились до платформ без ARM, таких как MIPS и PowerPC. Поставщики инструментов иногда создают продукты на основе бесплатного программного обеспечения, например GCC и GDB, с поддержкой графического интерфейса, часто использующий Затмение. Адаптеры JTAG иногда продаются вместе с пакетами поддержки.
  • Открытый исходный код инструменты существуют. Как отмечалось выше, GCC и GDB образуют ядро ​​хорошей инструментальной цепочки, и для их поддержки существуют среды графического интерфейса пользователя.

Все такое программное обеспечение обычно включает в себя базовую поддержку отладчика: остановку, остановку, пошаговое выполнение, точки останова, просмотр структуры данных и т. Д. Коммерческие инструменты, как правило, предоставляют такие инструменты, как очень точные симуляторы и анализ трассировки, которые в настоящее время недоступны в виде открытого исходного кода.

Похожие стандарты интерфейса

Отладка последовательного кабеля (SWD) - это альтернативный 2-контактный электрический интерфейс, использующий тот же протокол. Он использует существующее соединение GND. SWD использует стандартный двунаправленный проводной протокол ARM CPU, определенный в ARM Debug Interface v5.[20] Это позволяет отладчику стать другим AMBA мастер шины для доступа к системной памяти и периферийным регистрам или регистрам отладки. Скорость передачи данных до 4 МБ / с на 50 МГц. SWD также имеет встроенное обнаружение ошибок. На устройствах JTAG с возможностью SWD TMS и TCK используются как сигналы SWDIO и SWCLK, обеспечивая двухрежимных программистов.

Смотрите также

использованная литература

  1. ^ Нил Столлон (2011). Встроенная аппаратура. Springer.
  2. ^ Рэнди Джонсон, Стюард Кристи (Intel Corporation, 2009 г.), JTAG 101 - IEEE 1149.x и программная отладка
  3. ^ Копии IEEE 1149.1-1990 или его обновление 2001 г. можно купить в IEEE.
  4. ^ а б «IEEE 1149.1-2001».
  5. ^ Выберите правильный метод отладки FPGA В архиве 27 апреля 2010 г. Wayback Machine представлена ​​одна из моделей таких инструментов.
  6. ^ "Вопросы и ответы: при каких условиях я могу подключить JTAG шлейфом?". www.jtagtest.com.
  7. ^ а б c Texas Instruments является одним из сторонников этого стандарта и имеет Вики-страница IEEE 1149.7 В архиве 6 апреля 2014 г. Wayback Machine с дополнительной информацией.
  8. ^ «Основные преимущества IEEE 1149.7».
  9. ^ Ошана, Роб (29 октября 2002 г.). «Введение в JTAG». Проектирование встроенных систем. Получено 5 апреля 2007.
  10. ^ ARM1136JF-S и ARM1136J-S Справочное техническое руководство ревизия r1p5, ARM DDI 0211K. В главе 14 представлена ​​отладка TAP. Другие ядра ARM11 представляют ту же модель через свои отладочные TAP.
  11. ^ Документация для OMAP2420 не является общедоступной. Однако Инструменты Техаса документ Руководство пользователя DBGJTAG обсуждение диагностического инструмента JTAG представляет этот пример цепи сканирования OMAP2420 (и другие).
  12. ^ См. «Справочное руководство по процессору мультимедийных приложений i.MX35 (MCIMX35)» в Freescale интернет сайт. В главе 44 представлен «Защищенный контроллер JTAG» (SJC).
  13. ^ ARM9EJ-S Техническое справочное руководство ревизия r1p2. В Приложении B «Углубленная отладка» представлен модуль EmbeddedICE-RT, представленный в популярном ядре ARM926ejs.
  14. ^ «Техническое справочное руководство по компонентам CoreSight: 2.3.2. Детали реализации». infocenter.arm.com.
  15. ^ AN1817 / D, «MMC20xx M • Последовательности связи и управления портом CORE OnCE»; Freescale Semiconductor, Inc.; 2004. Не все процессоры поддерживают один и тот же модуль OnCE.
  16. ^ AN2073 «Различия между портами EOnCE и OnCE»; Freescale Semiconductor, Inc.; 2005 г.
  17. ^ "Техническое описание локальной шины PCI, 4.10 JTAG / выводы пограничного сканирования". Архивировано из оригинал 7 ноября 2006 г.. Получено 13 июля 2007.
  18. ^ «Распиновка последовательной шины PCI Express 16x и вывод сигналов PCIe». www.interfacebus.com.
  19. ^ Распиновка JTAG перечисляет несколько макетов заголовков только для JTAG, которые широко поддерживаются инструментами.
  20. ^ «Информационный центр АРМ». infocenter.arm.com. Получено 10 августа 2017.

внешние ссылки