JTAG

редактировать

JTAG (названный в честь Joint Test Action Group, которая его кодифицировала) является отраслью стандарт для проверки конструкции и тестирования печатных плат после изготовления.

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

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

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

Содержание
  • 1 История
    • 1.1 Отладка
    • 1.2 Сохранение прошивки
    • 1.3 Проверка границы
  • 2 Электрические характеристики
    • 2.1 Гирляндное соединение JTAG (IEEE 1149.1)
    • 2.2 Уменьшение количества выводов JTAG (IEEE 1149.7)
  • 3 Модель связи
    • 3.1 Примитивы
    • 3.2 JTAG Инструкции IEEE Std 1149.1 (граничное сканирование)
    • 3.3 Регистр пограничного сканирования
  • 4 Пример: ARM11 debug TAP
    • 4.1 JTAG-средства
    • 4.2 Отладка в режиме остановки
    • 4.3 Отладка в режиме мониторинга
  • 5 Общие расширения
  • 6 Использование
  • 7 Поддержка клиентов
    • 7.1 Разъемы
    • 7.2 Аппаратное обеспечение адаптера
    • 7.3 Разработка программного обеспечения
  • 8 Подобные стандарты интерфейсов
  • 9 См. Также
  • 10 Ссылки
  • 11 Внешние ссылки
История

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

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

Отладка

Хотя ранние приложения JTAG были нацелены на тестирование на уровне платы, здесь стандарт JTAG был разработан для помощи в тестировании устройств, плат и систем, диагностике и локализации сбоев.. Сегодня JTAG используется в качестве основного средства доступа к субблокам интегральных схем, что делает его важным механизмом для отладки встроенных систем, у которых может не быть других канал связи с возможностью отладки. В большинстве систем отладка на основе JTAG доступна с самой первой инструкции после сброса ЦП, что позволяет ей помочь в разработке программного обеспечения для ранней загрузки, которое запускается до того, как что-либо будет настроено. Внутрисхемный эмулятор (или, точнее, «адаптер 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 для разработки инструментов отладки. Те же методы JTAG, которые используются для отладки программного обеспечения, работающего внутри CPU, могут помочь отладить другие блоки цифрового дизайна внутри FPGA. Например, могут быть предоставлены специальные инструкции JTAG, позволяющие читать регистры, построенные из произвольных наборов сигналов внутри FPGA, обеспечивая видимость поведения, невидимого для операций сканирования границ. Точно так же запись таких регистров может обеспечить управляемость, недоступную другим способом.

Хранение микропрограмм

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

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

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

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

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

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

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

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

гирляндной цепи JTAG (IEEE 1149.1)

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

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

  1. TDI (вход тестовых данных)
  2. TDO (выход тестовых данных)
  3. TCK (тестовые часы)
  4. TMS (выбор тестового режима)
  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 (Return TCK). Более высокие частоты TCK наиболее полезны, когда JTAG используется для передачи большого количества данных, например, при сохранении исполняемого файла программы во флэш-память .

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

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

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

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

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

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

  1. TMSC (Test Serial Data)
  2. TCKC (Test Clock)

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

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

Модель связи

В JTAG устройства предоставляют один или несколько тестовых портов доступа (TAP). На рисунке выше показаны три 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) и регистр данных (DR). Размер этих регистров варьируется в зависимости от 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, точно так же, как передача данных в режиме 1 SPI через последовательную цепочку устройств (с 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 для доступа к расширенным функциям, таким как переключение TAP в цепочки сканирования и из них, управление питанием и другой двухпроводной режим.

Команды JTAG IEEE Std 1149.1 (граничное сканирование)

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

  • Инструкция BYPASS, код операции из всех, независимо от размера регистра инструкций TAP, должна поддерживаться всеми TAP. Инструкция выбирает однобитовый регистр данных (также называемый BYPASS). Эта инструкция позволяет обойти это устройство (ничего не делать), в то время как другие устройства на пути сканирования проверяются.
  • Дополнительная инструкция IDCODE с кодом операции, определяемым разработчиком. IDCODE связан с 32-битным регистром (IDCODE). Его данные используют стандартизованный формат, который включает код производителя (полученный из стандарта JEDEC Standard Manufacturer's Identification Code, 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)
  • SAMPLE считывание значений выводов в регистр граничного сканирования

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

  • CLAMP вариант BYPASS, который управляет выходными выводами с использованием значений PRELOADed
  • HIGHZ, деактивирует выходы всех контактов
  • INTEST для внутреннего тестирования, такого как использование контактов для проверки поведения на кристалле
  • RUNBIST переводит микросхему в режим самотестирования
  • USERCODE возвращает определенный пользователем код, например, чтобы определить, какой образ FPGA активен

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

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

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

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

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

Пример: ARM11 debug TAP

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

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

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

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

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

Средства JTAG

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

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

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

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

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

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

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

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

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

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

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

Процессоры ARM поддерживают альтернативный режим отладки, называемый режимом монитора, для работы в таких ситуациях. (Это отличается от режима безопасного монитора, реализованного как часть расширений безопасности на новых ядрах ARM; он управляет операциями отладки, а не переходами безопасности.) В этих случаях точки останова и точки наблюдения запускают особый вид аппаратного исключения, передавая управление на " монитор отладки », работающий в составе системного ПО. This monitor communicates with the debugger using the DCC, and could arrange for exampl e для пошагового выполнения только одного процесса, в то время как другие процессы (и обработчики прерываний) продолжают работать.

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

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

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

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

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

Использует
  • За исключением некоторых систем самого низкого уровня, практически все встроенные системы платформы имеют порт JTAG для поддержки внутрисхемной отладки и программирования прошивки, а также для граничного сканирования тестирование:
    • архитектура ARM процессоры поставляются с поддержкой JTAG, иногда с поддержкой двухпроводного варианта «SWD» или высокоскоростного отслеживания трафика на шинах инструкций или данных.
    • Современные 8-битные и 16 -bit микроконтроллер чипы, такие как Atmel AVR и TI MSP430, поддерживают программирование и отладку JTAG. Однако у самых маленьких микросхем может не хватить свободных выводов (и, следовательно, они склонны полагаться на собственные однопроводные программные интерфейсы); если количество выводов больше 32, вероятно, имеется опция JTAG.
    • Почти все FPGA и 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; PCI Express содержит сигналы JTAG на контактах 5-9. Специальная карта 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 для отладки и обновления прошивки.

Разъемы

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

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

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

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

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

В конечных продуктах более высокого уровня часто используются плотные разъемы (38-контактные разъемы MICTOR ) для поддержки высокоскоростной трассировки в сочетании с операциями 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. Примеры включают поставщиков ПЛИС, таких как Xilinx и Altera, Atmel для своих продуктовых линеек AVR8 и AVR32, и Texas Instruments для большей части. своих DSP и микропродукция. Такие инструменты, как правило, имеют широкие возможности и могут быть единственным реальным инструментом для узкоспециализированных микросхем, таких как FPGA и DSP. Программные инструменты более низкого уровня могут быть предоставлены бесплатно. Сами адаптеры JTAG не бесплатны, хотя иногда они идут в комплекте с платами для разработки.
  • Поставщики инструментов поставляют их, как правило, через поставщиков услуг микросхем для обеспечения поддержки кроссплатформенной разработки. Продукты на базе ARM имеют особенно богатый рынок сторонних производителей, и ряд этих поставщиков расширились до платформ без поддержки ARM, таких как MIPS и PowerPC. Поставщики инструментов предлагают продукты на основе бесплатного программного обеспечения, такие как GCC и GDB, с поддержкой графического интерфейса, часто используя Eclipse. Адаптеры JTAG иногда продаются вместе с пакетами поддержки.
  • Существуют инструменты с открытым исходным кодом. Как отмечалось выше, GCC и GDB образуют ядро ​​хорошей инструментальной цепочки и для их поддержки существуют среды графического интерфейса пользователя.

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

Стандарты контактных интерфейсов

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

См. Также
  • значок Портал электроники
Ссылки
Внешние ссылки

Последняя правка сделана 2021-05-24 10:21:39
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте