JTAG
JTAG (названный в честь Объединенной группы по тестированию, которая его кодифицировала) является отраслевым стандартом для проверки конструкции и тестирования печатных плат после производства.
JTAG реализует стандарты для встроенных приборов в области автоматизации электронного проектирования (EDA) в качестве дополнительного инструмента цифрового моделирования . [1] Он определяет использование выделенного порта отладки, реализующего интерфейс последовательной связи для доступа с низкими издержками, без необходимости прямого внешнего доступа к системному адресу и шинам данных. Интерфейс подключается к встроенному порту доступа к тестированию (TAP), который реализует протокол с отслеживанием состояния для доступа к набору тестовых регистров, которые представляют логические уровни чипа и возможности устройства различных частей.
Объединенная группа по тестированию была создана в 1985 году для разработки метода проверки конструкции и тестирования печатных плат после производства. В 1990 году Институт инженеров по электротехнике и электронике систематизировал результаты этих усилий в стандарте IEEE 1149.1-1990, озаглавленном «Стандартный порт тестового доступа и архитектура граничного сканирования» .
Многие производители полупроводниковых микросхем расширили стандарты JTAG специализированными вариантами, обеспечивающими функции, специфичные для конкретного поставщика. [2]
История
[ редактировать ]В 1980-х годах многослойные печатные платы и интегральные схемы (ИС) с использованием шариковых решеток и аналогичные технологии монтажа стали стандартными, а между ИС стали устанавливаться соединения, которые были недоступны для датчиков. Большинство производственных и эксплуатационных дефектов печатных плат возникали из-за плохих паяных соединений на платах, дефектов соединений плат или соединений и проводов от площадок ИС к рамкам выводов выводов. Объединенная группа по тестированию (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 имеет важное применение и за пределами таких производственных приложений. 2013 год [5] пересмотр стандарта IEEE Std. В версии 1149.1 представлен обширный набор дополнительных функций, связанные расширения BSDL и новый язык процедурного описания (PDL), основанный на Tcl .
Отладка
[ редактировать ]Хотя ранние приложения JTAG были нацелены на тестирование на уровне платы, здесь стандарт JTAG был разработан для оказания помощи в тестировании, диагностике и выявлении неисправностей устройств, плат и систем. Сегодня JTAG используется в качестве основного средства доступа к подблокам интегральных схем , что делает его важным механизмом для отладки встроенных систем , которые могут не иметь другого канала связи с возможностью отладки. [ нужна ссылка ] В большинстве систем отладка на основе JTAG доступна с самой первой инструкции после перезагрузки ЦП, что позволяет ей помочь в разработке программного обеспечения ранней загрузки , которое запускается до того, как что-либо будет настроено. ( Внутрисхемный эмулятор или, точнее, «адаптер JTAG») использует JTAG в качестве транспортного механизма для доступа к встроенным модулям отладки внутри целевого ЦП . Эти модули позволяют разработчикам программного обеспечения отлаживать программное обеспечение встроенной системы непосредственно на уровне машинных инструкций, когда это необходимо, или (что чаще всего) с точки зрения исходного кода языка высокого уровня.
Поддержка отладки системного программного обеспечения является для многих разработчиков программного обеспечения основной причиной интереса к JTAG. Многие полупроводниковые архитектуры, такие как PowerPC, MIPS, ARM и x86, построили всю инфраструктуру отладки программного обеспечения, трассировки инструкций и данных на базе базового протокола JTAG. Однако зачастую отдельные поставщики микросхем реализуют лишь часть этих расширений. Некоторыми примерами являются ARM CoreSight и Nexus, а также реализации Intel BTS (хранилище трассировки ветвей), LBR (запись последней ветки) и IPT (трассировка процессора Intel). Существует множество других подобных расширений, специфичных для производителей микросхем, которые не могут быть документированы, кроме как в соответствии с соглашением о неразглашении . Принятие стандарта JTAG помогло отодвинуть среды отладки, ориентированные на JTAG, от ранних разработок, ориентированных на процессоры. Процессоры обычно можно остановить, выполнить пошагово или позволить им работать свободно. Можно установить точки останова кода как для кода в ОЗУ (часто с использованием специальной машинной инструкции, например INT3 ), так и в ПЗУ/флэш-памяти. Часто доступны точки останова данных, а также массовая загрузка данных в ОЗУ. Большинство проектов имеют «отладку в режиме остановки», но некоторые позволяют отладчикам получать доступ к регистрам и шинам данных без необходимости останавливать отлаживаемое ядро. Некоторые цепочки инструментов могут использовать модули ARM Embedded Trace Macrocell (ETM) или эквивалентные реализации в других архитектурах для запуска активности отладчика (или отслеживания) сложных аппаратных событий, таких как логический анализатор , запрограммированный игнорировать первые семь обращений к регистру из одной конкретной подпрограммы.
Иногда разработчики FPGA также используют JTAG для разработки инструментов отладки. [6] Те же методы JTAG, которые используются для отладки программного обеспечения, работающего внутри ЦП, могут помочь в отладке других блоков цифрового проектирования внутри FPGA. Например, могут быть предоставлены специальные инструкции JTAG, позволяющие читать регистры, созданные из произвольных наборов сигналов внутри FPGA, обеспечивая видимость поведения, невидимого для операций пограничного сканирования. Аналогичным образом, запись таких регистров может обеспечить управляемость, которая в противном случае недоступна.
Хранение прошивки
[ редактировать ]JTAG позволяет аппаратному обеспечению программатора устройств передавать данные во внутреннюю энергонезависимую память устройства (например, CPLD ). Некоторые программисты устройств служат двойной цели: программированию и отладке устройства. В случае FPGA устройства энергозависимой памяти также можно программировать через порт JTAG, обычно во время разработки. Кроме того, через порт JTAG можно получить доступ к возможностям внутреннего мониторинга (температуры, напряжения и тока).
Программисты JTAG также используются для записи программного обеспечения и данных во флэш-память . Обычно это делается с использованием того же доступа к шине данных, который использует ЦП, и иногда обрабатывается ЦП. В других случаях сами микросхемы памяти имеют интерфейсы JTAG. Некоторые современные архитектуры отладки обеспечивают доступ к внутренней и внешней шине без необходимости останавливать и брать на себя управление ЦП. В худшем случае обычно можно управлять сигналами внешней шины с помощью функции периферийного сканирования.
На практике при разработке встроенной системы эмуляция хранилища инструкций — это самый быстрый способ реализовать «цикл отладки» (редактирование, компиляция, загрузка, тестирование и отладка). [ нужна ссылка ] Это связано с тем, что внутрисхемный эмулятор, имитирующий хранилище инструкций, можно очень быстро обновить с хоста разработки, скажем, через USB. Использование последовательного порта UART и загрузчика для загрузки прошивки во Flash делает этот цикл отладки довольно медленным и, возможно, дорогим с точки зрения инструментов; установка прошивки во Flash (или SRAM вместо Flash) через JTAG является промежуточным решением между этими крайностями.
Тестирование пограничного сканирования
[ редактировать ]JTAG Технология периферийного сканирования обеспечивает доступ ко многим логическим сигналам сложной интегральной схемы, включая выводы устройства. Сигналы представлены в регистре граничного сканирования (BSR), доступном через TAP. Это позволяет проводить тестирование, а также контролировать состояния сигналов для тестирования и отладки. Таким образом, можно обнаружить как программные, так и аппаратные (производственные) неисправности и контролировать работающее устройство.
В сочетании со встроенным самотестированием ( BIST ) цепочка сканирования JTAG позволяет использовать встроенное решение с низкими издержками для проверки микросхемы на наличие определенных статических неисправностей (коротких замыканий, обрывов и логических ошибок). Механизм цепочки сканирования обычно не помогает диагностировать или проверять время, температуру или другие динамические эксплуатационные ошибки, которые могут возникнуть. Тестовые примеры часто предоставляются в стандартизированных форматах, таких как SVF или его двоичный брат XSVF, и используются в производственных тестах. Возможность выполнять такое тестирование на готовых платах является важной частью проектирования для тестирования современных продуктов, увеличивая количество неисправностей, которые можно обнаружить до того, как продукты будут отправлены клиентам.
Электрические характеристики
[ редактировать ]Интерфейс JTAG — это специальный интерфейс, добавленный в чип. В зависимости от версии JTAG добавляются два, четыре или пять контактов. Четырех- и пятиконтактные интерфейсы спроектированы таким образом, что линии JTAG нескольких микросхем на плате могут быть последовательно соединены вместе, если соблюдаются определенные условия. [7] Двухконтактный интерфейс спроектирован таким образом, что несколько микросхем могут быть подключены по топологии «звезда» . В любом случае тестовому пробнику достаточно подключиться только к одному «порту JTAG», чтобы иметь доступ ко всем микросхемам на печатной плате .
Шлейфовый JTAG (IEEE 1149.1)
[ редактировать ]Контакты разъема:
- TDI (вход тестовых данных)
- TDO (Вывод тестовых данных)
- TCK (тестовые часы)
- TMS (выбор тестового режима)
- 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 использует только два провода: провод синхронизации и провод данных. Это определено как часть стандарта IEEE 1149.7. [8] Контакты разъема:
- TMSC (тестовые серийные данные)
- TCK (тестовые часы)
Он называется cJTAG для компактного JTAG.
Двухпроводной интерфейс снижает нагрузку на количество контактов, и устройства можно подключать по топологии «звезда» . [9] Топология «звезда» позволяет отключать питание некоторых частей системы, в то время как к другим можно получить доступ через 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, точно так же, как передача данных в режиме 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. [8] для доступа к расширенным функциям, таким как переключение 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 для внешнего тестирования, например использования контактов для проверки поведения на уровне платы.
- ПРЕДВАРИТЕЛЬНАЯ ЗАГРУЗКА выходных значений выводов загрузки перед EXTEST (иногда в сочетании с SAMPLE)
- ПРИМЕР чтения значений выводов в регистр граничного сканирования
«Необязательные» инструкции, определенные IEEE, включают:
- CLAMP вариант BYPASS, который управляет выходными контактами, используя значения PRELOADed.
- HIGHZ деактивирует выходы всех контактов.
- INTEST для внутреннего тестирования, например, использования контактов для проверки поведения внутри кристалла.
- RUNBIST переводит чип в режим самотестирования
- USERCODE возвращает определяемый пользователем код, например, для определения того, какой образ FPGA активен.
Устройства могут определять дополнительные инструкции, и эти определения должны быть частью файла BSDL, предоставленного производителем. Они часто помечаются только как ЧАСТНЫЕ.
Регистр граничного сканирования
[ редактировать ]Устройства общаются с миром через набор входных и выходных контактов. Сами по себе эти контакты обеспечивают ограниченную видимость работы устройства. Однако устройства, поддерживающие пограничное сканирование , содержат ячейку сдвигового регистра для каждого сигнального вывода устройства. Эти регистры соединены по выделенному пути вокруг границы устройства (отсюда и название). Путь создает возможность виртуального доступа, которая обходит обычные входы и выходы, обеспечивая прямой контроль над устройством и детальную видимость сигналов. [10]
Содержимое регистра граничного сканирования, включая возможности ввода-вывода сигналов, обычно описывается производителем с использованием файла BSDL для конкретной детали . Они используются вместе с проектными «списками соединений» из систем CAD/EDA для разработки тестов, используемых при производстве плат. Коммерческие тестовые системы часто стоят несколько тысяч долларов за полную систему и включают в себя функции диагностики для выявления неисправностей, таких как обрывы цепей и короткие замыкания. Они также могут предлагать программы просмотра схем или макетов для графического изображения неисправности.
Чтобы обеспечить сканирование границ, производители микросхем добавляют логику в каждое из своих устройств, включая ячейки сканирования для каждого из сигнальных контактов. Затем эти ячейки соединяются вместе, образуя сдвиговый регистр граничного сканирования (BSR), который подключается к контроллеру TAP. Эти проекты являются частью большинства библиотек Verilog или VHDL. Накладные расходы на эту дополнительную логику минимальны и, как правило, оправдывают затраты, обеспечивая эффективное тестирование на уровне платы.
Пример: отладочный TAP ARM11
[ редактировать ]Пример помогает показать работу JTAG в реальных системах. Примером здесь является отладочный TAP процессора ARM11 , ARM1136. [11] основной. Сам процессор имеет расширенные возможности JTAG, аналогичные тем, которые имеются в других ядрах ЦП, и он интегрирован в чипы с еще более широкими возможностями, доступ к которым осуществляется через JTAG.
Это нетривиальный пример, который характерен для значительной части систем с поддержкой JTAG. Кроме того, показано, как механизмы управления строятся с использованием примитивов чтения/записи регистров JTAG и как они объединяются для облегчения тестирования и отладки сложных логических элементов; ЦП широко распространены, но FPGA и ASIC включают в себя и другие сложные элементы, которые необходимо отлаживать.
Лицензиаты этого ядра интегрируют его в чипы, обычно комбинируя с другими TAP, а также с многочисленными периферийными устройствами и памятью. Один из этих других TAP выполняет тестирование граничного сканирования для всего чипа; он не поддерживается отладочным TAP. Примеры таких чипов включают в себя:
- OMAP2420 C55x , который включает в себя TAP с граничным сканированием, TAP отладки ARM1136, TAP с буфером трассировки ETB11, DSP и TAP для механизма обработки изображений на базе ARM7 TDMI, причем TAP с граничным сканированием («ICEpick-B») имеет возможность вставлять TAP в цепочку сканирования JTAG и из нее. [12]
- Процессор i.MX31 , который аналогичен, но имеет TAP с пограничным сканированием «System JTAG», [13] который сильно отличается от ICEpick и включает TAP для своего механизма DMA вместо механизма DSP и обработки изображений.
Оба этих процессора предназначены для использования в беспроводных телефонах, таких как сотовые телефоны, что является одной из причин, по которым они включают контроллеры TAP, которые изменяют цепочку сканирования JTAG: отладка работы с низким энергопотреблением требует доступа к чипам, когда они в значительной степени выключены, и, следовательно, когда все ПВР находятся в рабочем состоянии. Эта модификация цепочки сканирования является одним из предметов предстоящего стандарта IEEE 1149.7. [8] стандарт.
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-битное слово данных и бит чтения/записи), используемый для управления работой пассивного механизма трассировки команд и данных. Он подает либо встроенный в микросхему буфер трассировки (ETB), либо внешний высокоскоростной модуль сбора данных трассировки. Трассировка поддерживает пассивную отладку (проверку истории выполнения) и профилирование для настройки производительности.7
- модуль отладки, 40 бит (7-битный адрес, одно 32-битное слово данных и бит чтения/записи), используемый для доступа к аппаратным точкам останова, точкам наблюдения и т. д. Их можно записать во время работы процессора; ему не обязательно находиться в режиме отладки.
HALT
иRESTART
, инструкции, специфичные для ARM11, для остановки и перезапуска ЦП. Его остановка переводит ядро в «режим отладки», где ITR можно использовать для выполнения инструкций, включая использование DCC для передачи данных между хостом отладки (JTAG) и процессором.ITRSEL
, специфичная для ARM11 инструкция для ускорения некоторых операций с ITR.
Эта модель напоминает модель, используемую в других ядрах ARM. Системы, отличные от ARM, обычно имеют аналогичные возможности, возможно, реализованные с использованием протоколов Nexus поверх JTAG или других схем, специфичных для конкретного поставщика.
Старые ядра ARM7 и ARM9 включают EmbeddedICE. модуль [14] который сочетает в себе большинство этих возможностей, но имеет неудобный механизм выполнения инструкций: отладчик должен управлять конвейером инструкций ЦП, такт за тактом, и напрямую обращаться к шинам данных для чтения и записи данных в ЦП. ARM11 использует ту же модель поддержки трассировки (ETM, ETB), что и старые ядра.
Новые ядра ARM Cortex очень похожи на эту модель отладки, но основаны на порте доступа к отладке (DAP) вместо прямого доступа к ЦП. В этой архитектуре (названной CoreSight Technology ) ядро и модуль JTAG полностью независимы. Они также отделены от JTAG, поэтому их можно размещать через двухпроводной интерфейс SWD ARM (см. ниже), а не только через шестипроводный интерфейс JTAG. (ARM принимает четыре стандартных сигнала JTAG и добавляет дополнительный TRST, а также сигнал RTCK, используемый для адаптивной синхронизации.) CoreSight JTAG-DP асинхронен с тактовой частотой ядра и не реализует RTCK. [15] Кроме того, в новых ядрах обновлена поддержка трассировки.
Отладка в режиме остановки
[ редактировать ]Одним из основных способов отладки программного обеспечения является представление однопоточной модели, в которой отладчик периодически останавливает выполнение программы и проверяет ее состояние, отображаемое содержимым регистров и памяти (включая регистры периферийного контроллера). Когда приближаются интересные программные события, человек может захотеть использовать пошаговые инструкции (или строки исходного кода), чтобы посмотреть, как происходит конкретное неправильное поведение.
Так, например, хост JTAG может ОСТАНОВИТЬ ядро, войти в режим отладки, а затем прочитать регистры ЦП, используя ITR и DCC. После сохранения состояния процессора он может записывать в эти регистры любые необходимые ему значения, а затем выполнять произвольные алгоритмы на ЦП, обращаясь к памяти и периферийным устройствам, чтобы помочь охарактеризовать состояние системы. После того как отладчик выполнит эти операции, состояние можно восстановить и продолжить выполнение с помощью инструкции RESTART.
Режим отладки также включается асинхронно модулем отладки, запускающим точку наблюдения или точку останова, или путем выдачи инструкции BKPT (точка останова) из отлаживаемого программного обеспечения. Когда ETM не используется для отслеживания инструкций, он также может инициировать вход в режим отладки; он поддерживает сложные триггеры, чувствительные к состоянию и истории, а также простое сравнение адресов, предоставляемое модулем отладки. Асинхронные переходы в режим отладки обнаруживаются путем опроса регистра DSCR. Вот как реализуется одношаговый режим: ОСТАНОВИТЕ ядро, установите временную точку останова на следующей инструкции или следующем операторе высокого уровня, RESTART, опрашивайте DSCR, пока не обнаружите асинхронный вход в состояние отладки, удалите эту временную точку останова, повторите.
Отладка режима монитора
[ редактировать ]Современное программное обеспечение зачастую слишком сложно, чтобы хорошо работать с такой однопоточной моделью. Например, процессор, используемый для управления двигателем (возможно, приводящим в движение пильное полотно), может быть не в состоянии безопасно перейти в режим остановки; возможно, ему потребуется продолжить обработку прерываний, чтобы обеспечить физическую безопасность людей и/или оборудования. Выдача инструкции HALT с использованием JTAG может быть опасной.
Процессоры ARM поддерживают альтернативный режим отладки, называемый Monitor Mode , для работы в таких ситуациях. (Это отличается от режима Secure Monitor, реализованного как часть расширений безопасности на новых ядрах ARM; он управляет операциями отладки, а не переходами безопасности.) В этих случаях точки останова и точки наблюдения вызывают особый вид аппаратного исключения, передавая управление « debug Monitor», работающий как часть системного программного обеспечения. Этот монитор взаимодействует с отладчиком с помощью DCC и может организовать, например, пошаговое выполнение только одного процесса, в то время как другие процессы (и обработчики прерываний) продолжают работать.
Общие расширения
[ редактировать ]Поставщики микропроцессоров часто определяют свои собственные расширения отладки для конкретного ядра. К таким поставщикам относятся Infineon , MIPS с EJTAG и другие. Если поставщик не принимает стандарт (например, используемый процессорами ARM или Nexus), ему необходимо определить собственное решение. Если они поддерживают пограничное сканирование, они обычно создают отладку через JTAG.
Freescale имеет COP и OnCE (встроенная эмуляция). OnCE включает команду JTAG, которая переводит TAP в специальный режим, в котором IR содержит команды отладки OnCE. [16] для таких операций, как пошаговое выполнение, точка останова и доступ к регистрам или памяти. Он также определяет EOnCE (улучшенная эмуляция на кристалле). [17] представлены как решение проблем реального времени.
ARM имеет обширную архитектуру отладки ядра процессора (CoreSight), которая началась с EmbeddedICE (средство отладки, доступное на большинстве ядер ARM), а теперь включает множество дополнительных компонентов, таких как ETM (Embedded Trace Macrocell) с высокоскоростным портом трассировки, поддерживающим многоядерная и многопоточная трассировка. Обратите внимание, что отслеживание неинвазивно; системам не нужно прекращать работу, чтобы их можно было отследить. (Однако данные трассировки слишком объемны, чтобы использовать JTAG как нечто большее, чем просто канал управления трассировкой.)
Nexus определяет инфраструктуру отладки процессора, которая в значительной степени не зависит от поставщика. Один из его аппаратных интерфейсов — JTAG. Он также определяет высокоскоростной интерфейс вспомогательного порта, используемый для отслеживания и многого другого. Nexus используется с некоторыми новыми платформами, такими как процессоры серии Atmel AVR32 и Freescale MPC5500.
Использование
[ редактировать ]- За исключением некоторых систем самого низкого уровня, практически все платформы встраиваемых систем имеют порт JTAG для поддержки внутрисхемной отладки и программирования встроенного ПО, а также для тестирования пограничного сканирования:
- Процессоры с архитектурой ARM имеют поддержку JTAG, иногда поддерживая двухпроводной вариант «SWD» или высокоскоростное отслеживание трафика на шинах инструкций или данных.
- Современные 8-битные и 16-битные микроконтроллеры , такие как чипы Atmel AVR и TI MSP430 , поддерживают программирование и отладку JTAG. Однако самые маленькие микросхемы могут не иметь достаточного количества свободных контактов (и поэтому склонны полагаться на собственные однопроводные интерфейсы программирования); если количество контактов превышает 32, возможно, есть вариант JTAG.
- Почти все используемые сегодня FPGA и CPLD можно программировать через порт JTAG. Стандартный язык тестирования и программирования определен стандартом JEDEC JESD-71 для JTAG-программирования PLD.
- Многие процессоры MIPS и PowerPC поддерживают JTAG.
- Процессоры Intel Core, Xeon, Atom и Quark поддерживают режим пробного тестирования JTAG со специальными расширениями JTAG от Intel, использующими так называемый 60-контактный расширенный порт отладки [XDP]. Кроме того, процессор Quark поддерживает более традиционные 10-контактные разъемы.
- Потребительские продукты, такие как сетевые устройства и спутникового телевидения, встроенные приемники/декодеры часто используют микропроцессоры, поддерживающие JTAG, предоставляя альтернативные средства для перезагрузки прошивки, если существующий загрузчик был каким-либо образом поврежден.
- Стандарт разъема шины PCI содержит дополнительные сигналы JTAG на контактах 1–5; [18] PCI Express содержит сигналы JTAG на контактах 5–9. [19] Специальную карту JTAG можно использовать для перепрошивки поврежденного BIOS .
- Приложения для тестирования граничного сканирования и внутрисистемного программирования (устройства) иногда программируются с использованием последовательного векторного формата — текстового представления операций JTAG с использованием простого синтаксиса. Другие форматы программирования включают JAM и STAPL, а в последнее время — IEEE Std. 1532 определил формат «ISC» (сокращение от «Внутрисистемная конфигурация»). Формат ISC используется в сочетании с расширенными моделями BSDL для программируемых логических устройств (т. е. FPGA и CPLD), которые включают дополнительные инструкции ISC_<operation> в дополнение к базовым минимальным инструкциям IEEE 1149.1. Инструменты программирования FPGA от Xilinx , Altera, Lattice, Cypress, Actel и т. д. обычно способны экспортировать такие файлы.
- Как уже упоминалось, многие платы включают разъемы JTAG или просто площадки для поддержки производственных операций, где тестирование краевого сканирования помогает проверить качество платы (выявление плохих паяных соединений и т. д.) и инициализировать флэш-память или FPGA.
- JTAG также может поддерживать обновления на местах и устранение неполадок.
Поддержка клиентов
[ редактировать ]Доступ к интерфейсу JTAG цели осуществляется с помощью некоторого приложения с поддержкой JTAG и некоторого адаптера JTAG. Существует широкий спектр такого оборудования, оптимизированного для таких целей, как производственное тестирование, отладка высокоскоростных систем, разработка недорогих микроконтроллеров и т. д. Точно так же программное обеспечение, используемое для управления таким оборудованием, может быть весьма разнообразным. Разработчики программного обеспечения в основном используют JTAG для отладки и обновления прошивки.
Разъемы
[ редактировать ]Официальных стандартов для физических разъемов адаптера JTAG не существует. Платы разработки обычно включают заголовок для поддержки предпочтительных инструментов разработки; в некоторых случаях они включают несколько таких заголовков, поскольку им необходимо поддерживать несколько таких инструментов. Например, микроконтроллер, FPGA и процессор приложений ARM редко используют общие инструменты, поэтому плата разработки, использующая все эти компоненты, может иметь три или более разъемов. На производственных платах разъемы могут отсутствовать, а при ограниченном пространстве они могут обеспечивать доступ к сигналу JTAG с использованием тестовых точек.
Некоторые распространенные распиновки [20] 2,54 мм (0,100 дюйма) для штыревых разъемов :
- Контакт ARM 2×10 (или иногда более старый 2×7), используемый почти всеми системами на базе ARM.
- MIPS EJTAG (2×7 контактов), используемый для MIPS систем на базе
- 2 × 5- контактный JTAG, совместимый с Altera ByteBlaster, расширенный многими поставщиками
- 2 × 5-контактный AVR расширяет Altera JTAG с помощью SRST (а в некоторых случаях TRST и вывода событий)
- 2 × 7-контактный разъем Texas Instruments, используемый с DSP и продуктами на базе ARM, такими как OMAP
- 8-контактный (один ряд) универсальный PLD JTAG, совместимый со многими кабелями Lattice isp. ЗАГРУЗИТЬ
- Разъемы 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 год [update], адаптеры с USB- соединением с хостом являются наиболее распространенным подходом. Продукты более высокого класса часто поддерживают Ethernet , с тем преимуществом, что хост отладки может быть достаточно удаленным. Адаптеры, поддерживающие высокоскоростные порты трассировки, обычно включают в себя несколько мегабайт буфера трассировки и обеспечивают высокоскоростные каналы (USB или Ethernet) для передачи данных на хост.
Адаптеры параллельного порта просты и недороги, но они относительно медленны, поскольку используют центральный процессор для изменения каждого бита (« битовый удар »). Их полезность снизилась, поскольку большинство компьютеров в последние годы не имеют параллельного порта. Поддержка драйверов также является проблемой, поскольку использование контактов адаптерами сильно различается. Поскольку параллельный порт основан на логическом уровне 5 В, у большинства адаптеров не было поддержки преобразования напряжения для целевых напряжений 3,3 В или 1,8 В.
RS-232 Также существуют адаптеры последовательного порта , полезность которых также снижается. Обычно они включают либо более медленную передачу битов, чем параллельный порт, либо микроконтроллер, преобразующий какой-либо командный протокол в операции JTAG. Такие последовательные адаптеры также не являются быстрыми, но их протоколы команд обычно можно повторно использовать поверх более высокоскоростных каналов.
Для всех адаптеров JTAG поддержка программного обеспечения является основной задачей. Многие поставщики не публикуют протоколы, используемые их адаптерами JTAG, ограничивая своих клиентов цепочками инструментов, поддерживаемыми этими поставщиками. Это особая проблема для «умных» адаптеров, некоторые из которых содержат значительный объем знаний о том, как взаимодействовать с конкретными процессорами.
Разработка программного обеспечения
[ редактировать ]Большинство сред разработки встроенного программного обеспечения включают поддержку JTAG. Вообще говоря, есть три источника такого программного обеспечения:
- Поставщики микросхем могут предоставить инструменты, обычно для этого требуется поставляемый ими адаптер JTAG. Примеры включают таких поставщиков FPGA, как 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, определенный в интерфейсе отладки ARM v5. [21] Это позволяет отладчику стать еще одним мастером шины AMBA для доступа к системной памяти и периферийным или отладочным регистрам. Скорость передачи данных — до 4 МБ/с на частоте 50 МГц . SWD также имеет встроенную систему обнаружения ошибок. На устройствах JTAG с возможностью SWD TMS и TCK используются как сигналы SWDIO и SWCLK, что обеспечивает работу двухрежимных программаторов.
См. также
[ редактировать ]- Автоматизированный оптический контроль
- Автоматизированный рентгеновский контроль
- Внутрисхемное тестирование
- Приемочное тестирование
Ссылки
[ редактировать ]- ^ Нил Столлон (2011). Внутрикристальная аппаратура . Спрингер.
- ^ Рэнди Джонсон, Стюард Кристи (Intel Corporation, 2009), JTAG 101 — IEEE 1149.x и отладка программного обеспечения
- ^ Копии IEEE 1149.1-1990 или его более поздние обновления (2001 и 2013 гг. соответственно) можно приобрести в IEEE.
- ^ Перейти обратно: а б «ИИЭР 1149.1-2001» . Архивировано из оригинала 15 апреля 2013 года.
- ^ «ИИЭР 1149.1-2013» .
- ^ Выберите правильный метод отладки FPGA. Архивировано 27 апреля 2010 г. на сайте Wayback Machine, где представлена одна из моделей таких инструментов.
- ^ «Часто задаваемые вопросы: при каких условиях я могу подключить JTAG последовательно?» . www.jtagtest.com .
- ^ Перейти обратно: а б с Компания Texas Instruments является одним из сторонников этого стандарта и имеет вики-страницу IEEE 1149.7. Архивировано 6 апреля 2014 г. на Wayback Machine с дополнительной информацией.
- ^ «Основные преимущества IEEE 1149.7» . Архивировано из оригинала 12 февраля 2019 года.
- ^ Ошана, Роб (29 октября 2002 г.). «Введение в JTAG» . Проектирование встраиваемых систем . Проверено 5 апреля 2007 г.
- ^ Техническое справочное руководство ARM1136JF-S и ARM1136J-S, версия r1p5, ARM DDI 0211K. В главе 14 представлен Debug TAP. Другие ядра ARM11 представляют ту же модель через свои отладочные TAP.
- ^ Документация по OMAP2420 не является общедоступной. Однако Texas Instruments в документе «Руководство пользователя по DBGJTAG» , в котором обсуждается диагностический инструмент JTAG, представлен этот пример цепочки сканирования OMAP2420 (и другие).
- ^ См. «Справочное руководство по процессору мультимедийных приложений i.MX35 (MCIMX35)» на веб-сайте Freescale . В главе 44 представлен «Безопасный JTAG-контроллер» (SJC).
- ^ Техническое справочное руководство ARM9EJ-S, версия r1p2. Приложение B «Подробная отладка» представляет модуль EmbeddedICE-RT в популярном ядре ARM926ejs.
- ^ «Техническое справочное руководство по компонентам CoreSight: 2.3.2. Подробности реализации» . infocenter.arm.com .
- ^ AN1817/D, «MMC20xx M•CORE OnCE Port Communication and Control Sequences»; Фрискейл Полупроводник, Инк.; 2004. Не все процессоры поддерживают один и тот же модуль OnCE.
- ^ AN2073 «Различия между портами EOnCE и OnCE»; Фрискейл Полупроводник, Инк.; 2005.
- ^ «Техническое резюме локальной шины PCI, 4.10 Контакты JTAG/пограничного сканирования» . Архивировано из оригинала 7 ноября 2006 года . Проверено 13 июля 2007 г.
- ^ «Названия выводов последовательной шины PCI Express 16x и выводов PCIe» . www.interfacebus.com .
- ^ В разделе «Выводы JTAG» перечислены несколько макетов заголовков только для JTAG, которые имеют широкую поддержку инструментов.
- ^ «Информационный центр АРМ» . infocenter.arm.com . Проверено 10 августа 2017 г.
Внешние ссылки
[ редактировать ]- Стандарт IEEE для портов тестового доступа с уменьшенным количеством контактов и расширенной функциональностью и архитектуры граничного сканирования . Официальный стандарт IEEE 1149.7.
- JTAG 101 — IEEE 1149.x и отладка программного обеспечения Технический документ Intel об использовании JTAG при отладке системного программного обеспечения в широком диапазоне архитектур.
- IEEE Std 1149.1 (JTAG) Учебное пособие по тестируемости Содержит подробную техническую презентацию JTAG с главами, посвященными проектированию для тестирования.
- Учебное пособие по граничному сканированию / IEEE 1149, включая подробную информацию о вариантах стандарта IEEE, BSDL, DFT и других темах.
- Учебное пособие по JTAG Полезные учебные пособия и информация по технологии JTAG.
- Что такое JTAG? Полезная информация о JTAG, сроках, архитектуре и многом другом.
- Приложения JTAG JTAG для разработки продуктов, жизненного цикла, тестирования, необходимых инструментов и других тем.