Полная версия этой страницы:
SWD vs JTAG
semen_992
Aug 3 2010, 12:21
Кто использовал JTAG и SWD под STM32F10x поделитесь мнением
Если у вас отладочная плата и дебагер поддерживает и то и то. То в общем пофиг!
Но у SWD слегка побольше возможностей - если ими правильно пользоваться.
Например - по SWD можно законнектится к чипу когда он в ресете и будут доступны некоторые регистры, можно точку останова сразу влепить... Но тут все зависит от реализации отладчика...
И в режиме SWD ногу TDO можно использовать как SWO (трассировку и отладочная печать).
А если делать свою плату то можно минимизировать отладочный разъем - RESET, SWDIO, SWCLK
Заметная разница между SWD и JTAG будет при большом объеме данных и больших частотах. SWD может работать на гораздо больше частоте нежели JTAG.
sonycman
Aug 3 2010, 21:07
Цитата(KRS @ Aug 4 2010, 00:55)

Заметная разница между SWD и JTAG будет при большом объеме данных и больших частотах. SWD может работать на гораздо больше частоте нежели JTAG.
То есть, SWD будет быстрее, чем JTAG? При заливке во флеш и при отладке?
Слышал вроде, что наоборот...
Цитата(sonycman @ Aug 4 2010, 01:07)

То есть, SWD будет быстрее, чем JTAG? При заливке во флеш и при отладке?
Слышал вроде, что наоборот...
не, на STM32 разница не должна быть заметна.
Хотя все зависит от отладчика. SWD протокол позволяет многие вещи делать быстрее, например ошибки потом обрабатывать... Вопрос в том как отладичк сделан. Я просто прикручивал к OpenOCD FT232R в синхро бит банг моде и поигрался с реализацией SWD. C точки зрения железа и софта он гораздо удобнее.
semen_992
Aug 5 2010, 05:25
Цитата(KRS @ Aug 3 2010, 23:55)

Если у вас отладочная плата и дебагер поддерживает и то и то. То в общем пофиг!
Но у SWD слегка побольше возможностей - если ими правильно пользоваться.
Например - по SWD можно законнектится к чипу когда он в ресете и будут доступны некоторые регистры, можно точку останова сразу влепить... Но тут все зависит от реализации отладчика...
И в режиме SWD ногу TDO можно использовать как SWO (трассировку и отладочная печать).
А если делать свою плату то можно минимизировать отладочный разъем - RESET, SWDIO, SWCLK
Заметная разница между SWD и JTAG будет при большом объеме данных и больших частотах. SWD может работать на гораздо больше частоте нежели JTAG.
А если не минимизировать?
Цитата(semen_992 @ Aug 5 2010, 09:25)

А если не минимизировать?

то можно будет и тот и тот протокол использовать.
SWO удобно использовать (IAR).
Все printf(...) идут через SWO на экран.
4 провода + земля.
batisto4ka
Jan 22 2013, 14:11
подскажите, поалуйста, схему распайки шлейфа-переходника от st link jtag к swd. соединила след. образом:
jtag swd
1.vcc 1.vcc
5.tdi 8.tdi
7.tms 2. tms_swdio
9.tclk 4.tck_swclk
13.tdo 6.tdo_swo
15.reset 10.reset
Это моя распайка шлейфа. при таком соединении не работает. При попытке записи программы из кейла или при попытке соединения через ст линк утилиту пишет нет соединения. в шлейфе что-то нужно делать с землями, соединять их или можно оставить не используемыми? где ошибка? что лишнее/чего не хватает?
SSerge
Jan 22 2013, 16:14
Абсолютный минимум для SWD - это два сигнала SWCLK(pin9) и SWDIO(pin7), ну и, разумеется, земля, хотя бы один провод, чем больше земель тем лучше.
Итого получается три провода. Для отладочной платы STM32_VL_DISCOVERY, используемой как программатор, этого достаточно.
Конкретно для ST-LINK нужен ещё один провод VAPP (pin 1), он-же Target Vcc - напряжение питания отлаживаемого процессора.
Это питание ST-LINK-у нужно для выходных буферов и он его наличие проверяет.
Если пользуете ST-LINK Utility, то в ней нужно выбрать Target->Settings и установить там что используется SWD а не JTAG.
Я использовал SWD с STM32_VL_DISCOVERY и с JLINK, плоский шлейф длиной ~25см, 4 жилы. Три из них накалываются на контакты 7,8,9, четвёртая на контакт 1.
_Pasha
Jan 22 2013, 20:12
Подскажите, отчего stlink из stm32fvldiscovery может не хотеть шить stm32f4? Думалось, там проблем нету...
KnightIgor
Jan 22 2013, 21:26
Цитата(semen_992 @ Aug 3 2010, 13:21)

Кто использовал JTAG и SWD под STM32F10x поделитесь мнением
Все зависит от того, где процессор стоит. Если в гордом одиночестве, то SWD - проводов мало, разницы в скорости с JTAG нет (запись во флэш является тормозом). Если на плате в связке с STM32 еще парочка FPGA или даже еще один проц с JTAG, то лучше все нанизать на одну цепочку JTAG (в этом-то и есть его суть!), вывести на единственный разъем для всего и - вперед! Кстати, никто не напрягает использовать 20-ти ножечный монстр для разъема JTAG, т.к. нужно всего-то 5 сигналов:TDI, TDO, TCK, TMS и земля; TRST можно подтянуть внутри резистором на +VCC, поставив конденсатор 0.1uF на землю для сброса при подаче питания. "И - вперед, давай, давай..." © Лолита.
batisto4ka
Jan 23 2013, 07:20
На моей плате под swd 10 пиновый разъем со след сигналами:
1.Vcc +3 V
2.tms_swdio
3. gnd
4.tck_swclk
5.gnd
6.tdo_swo
7.gnd
8.tdi
9.gnd
10.rst
Я соединяю след образом
JTAG SWD
7 TMS_SWDIO 2
8 GND 3
9 TCK_SWCLK 4
1 VCC 1
Пишет no st link detected, и keil, и st link utlity
batisto4ka
Jan 24 2013, 14:19
подключила следующим образом:
20 jtag к 3 swd (земля)
9 jtag к 4 swd (swclk)
7 jtag к 2 swd (swdio)
Пробовала подключать еще и питание 1 к 1,тоже работает, но и без питания работает.
Подлючала через st-link и через keil. Вроде все было нормально, а потом начала отлаживать программу и тут какой-то глюк. После чего вылезло can't halt the core. И эта беда ничем не леччится, ни отключением питания ничем. И через keil пробую прошить и через st-link. Что бы это значило и как оно лечится?
SSerge
Jan 24 2013, 16:20
Цитата(batisto4ka @ Jan 24 2013, 21:19)

После чего вылезло can't halt the core. И эта беда ничем не леччится, ни отключением питания ничем. И через keil пробую прошить и через st-link. Что бы это значило и как оно лечится?
А что с ногой ресета у контроллера?
Если используете внешний супервизор с пуш-пульным выходом то так и будет.
Ресет у STM32 устроен так (см. референс мануал), что его нужно или открытым коллектором дёргать или через резистор (~1кОм примерно).
koyodza
Jan 24 2013, 17:56
Цитата(SSerge @ Jan 24 2013, 18:20)

А что с ногой ресета у контроллера?
Если используете внешний супервизор с пуш-пульным выходом то так и будет.
Ресет у STM32 устроен так (см. референс мануал), что его нужно или открытым коллектором дёргать или через резистор (~1кОм примерно).
Не совсем понятно, зачем здесь внешний супервизор. Внутренний работает нормально. Производитель рекомендует только ставить небольшой (0,1мкФ примерно) конденсатор с ноги сброса на землю, но не для начального сброса, а чтобы нога не ловила иголок. Этот конденсатор никому не мешает, ни отладчику, ни собственно сбросу. Резисторы не нужны, внешний супервизор обычно тоже
romas2010
Jan 24 2013, 18:23
Цитата(semen_992 @ Aug 3 2010, 16:21)

Кто использовал JTAG и SWD под STM32F10x поделитесь мнением
Мне кажеться не важно,что лучше.Важен сам факт того,что фраза "отладчик-это твоя собственная голова" с этими вещами как бы не актуальна))
Ребят,вопрос может быть не в тему,но все же задам.Как сделать так,чтоб при входе в отладчик Keil микроконтроллер находился в сбросе?То есть что происходит-я подключаю uLink к плате,подаю питание,сразу же начинает исполняться программа.Далее вхожу в отладку,и курсор становится на main(потому что стоит галочка run to main) ну и далее пошагово и пр.Так вот мне надо,чтоб программа,зашитая ранее,НЕ запускалась
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.