Отладка JTAG против SWD

41

Пролистав эту статью , мне стало интересно, каковы преимущества отладки SWD по сравнению с отладкой JTAG?

Я понимаю, что SWD использует меньше проводов / контактов, занимает меньше места и т. Д. Но как это сказывается на производительности, возможностях и стоимости аппаратного программатора / отладчика? Может ли код по-прежнему прерываться, останавливаться и проходить через IDE, например, в Eclipse?

Можно ли запрограммировать чип ARM с помощью интерфейса SWD, как я полагаю, это можно сделать в JTAG?

josef.van.niekerk
источник
Чипы на базе ARM с более новыми ядрами (например, Cortex) можно программировать и отлаживать с помощью SWD.
B Пит
@BPete: я обнаружил, что с SWD трудно отлаживать чипы на основе ST, которые используют спящий режим; На наших нынешних платах нет контактов для JTAG, но мне было интересно, может ли JTAG быть лучше в этом отношении?
суперкат
2
Это (SWD) выглядит немного как интерфейс Spy Bi-Wire, который TI надевает на подмножество своих процессоров MSP430. Это 2-проводной JTAG-аналог (плюс питание и земля) с SBWTCLK и SBWTDIO, мультиплексированными на двух выводах без GPIO (TEST и RST / NMI) на примерном устройстве. Поддерживается EZ430 devkit. И он (SBW) поддерживает степпинг и точки останова! Я не знаю, имеют ли собственные ARM TI такой же интерфейс, но было бы интересно, если бы между ними было достаточно общего, чтобы делиться инструментами программирования / отладки.
Брайан Драммонд
Ваша ссылка на статью мертва, но, возможно, это была статья? arm.com/files/pdf/Serial_Wire_Debug.pdf
Габриэль Стейплс

Ответы:

12

SWD должен иметь возможность программировать набор микросхем ARM, а также отлаживать и добавлять точки останова. Еще одна хорошая вещь в SWD - вы можете использовать средство просмотра последовательных проводов для своих операторов printf для отладки. Я использовал его только с компилятором Keil.

user468662
источник
Посмотрите на эту ссылку на просмотрщик последовательных проводов. keil.com/download/files/swv_on_cortex-m3.pdf
user468662
37

электрически

  • Количество выводов
    • JTAG требует 4 сигнальных линии
    • SWD требует только 2 сигнальные линии
    • Двухпроводной интерфейс JTAG, указанный в IEEE 1149.7, уменьшает количество выводов, но, по-видимому, не доступен для многих микросхем. Это также уменьшает пропускную способность.
  • Топология
    • JTAG использует конфигурацию последовательного соединения для своих линий данных между чипами. Скорость JTAG, таким образом, ограничена самой медленной микросхемой в цепочке. Тем не менее, линии сброса и очистки отображаются (не связаны), что обеспечивает возможность взаимодействия через SWDJ-DP (см. Обсуждение ниже).
    • Двухпроводной JTAG допускает топологию типа «звезда», но он используется не часто.
    • SWD учитывает звездные топологии

Функционально

  • SWD - это специальный протокол ARM, разработанный специально для микроотладки.
  • JTAG (Joint Test Action Group) была разработана в основном для тестирования чипов и плат. Он используется для граничного сканирования , проверки ошибок в чипах / платах в производстве. Отладка и прошивка микросхем была эволюцией в применении с течением времени.
  • JTAG используется для нескольких архитектур микроконтроллеров / процессоров, кроме ARM.

Обсуждение

JTAG более широко поддерживается, начиная с 2017 года, микро-программистами, программистами и производственными линиями не-ARM. Программисты для JTAG можно недорого купить в виде прорывов FT232H [*] и других подобных устройств программирования. Тем не менее, SWD имеет явное преимущество в скорости и других областях отладки чипов ARM.

Из-за разделения целевого характера JTAG в тестировании и SWD в отладке, ARM предоставляет SWJ-DP (последовательный порт отладки wire / jtag) через свою технологию CoreSight, которая отображает выводы SWD на тактовые импульсы JTAG и линии сброса. Таким образом, SWJ-DP позволяет использовать оба протокола в одном и том же физическом соединении, хотя необязательно в одно и то же время или с теми же программистами, что и JTAG и SWD, должны быть мультиплексированы во времени.

Полезные ссылки

с обратным рассеянием
источник
1
Еще 2 полезные ссылки: 1) developer.arm.com/products/architecture/cpu-architecture/… , 2) arm.com/files/pdf/Serial_Wire_Debug.pdf
Габриэль Стейплс
7

Возможно, я немного опоздаю с ОП, но, возможно, это будет полезно для некоторых людей с таким же вопросом. Итак, начнем (личный опыт): можно программировать и отлаживать (извлекать память / регистрировать карты, разбивать, запускать из определенной точки и т. Д.) С помощью SWD. Использование Eclipse здесь с GDB через J-Link EDU, который стоит ~ 50 евро. Есть некоторые ошибки (сбрасывание цели с помощью отладчика, иногда не удается подключиться или получить карты), но это относительно дешево и удобно, как только вы познакомитесь с его причудами

stiebrs
источник
7

Старый вопрос, но ни один из ответов не касается сравнения производительности. Хотя набор функций между SWD и JTAG (при использовании CoreSight DAP) почти одинаков, последовательности SWD примерно на 10% короче, чем эквивалентные последовательности JTAG.

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

Шон Хулихейн
источник