JTAG-owe abc… SWD

JTAG-owe abc… SWD
Razem głosów: 47 co stanowi: 81.7% całości.

Geeetech_JLINKZJBJTAG jest nieodłącznym elementem programowania embeded … w sumie wszyscy są w stanie wymienić choć kilka popularnych JTAG-ów :) i większość wie że  JTAG (Joint Test Action Group) jest miedzy innymi  stosowany do uruchamiania i programowania układów mikroprocesorowych. To ta jedna z wielu cech którą chcę się zając w tym artykule.

Jednym z najważniejszych założeń, które w wszystkich interesują w JTAG jest możliwość programowania układu w urządzeniu, bez konieczności odłączania czyli ISP. Oczywiście żeby można było wykorzystywać go do tego jakże ważnego celu, układy scalone muszą posiadać wewnątrz odpowiednią warstwę sprzętową dla interfejsu JTAG.

Jednym z bardziej powszechnych wśród amatorów ARM są programatory/debugery:

  • ST-Link   —  pracujący z mikrokontrolerami  STM32, posiada on dla rdzeni ARM dwa tryby pracy JTAG  i  SWD
  • J-Link      —  zdecydowanie najlepszy na rynku JTAG dla ARM i wielu innych jak 8051 czy PIC32

Tu skupimy się na tym drugim czyli na J-Linku  zawierającym 20 pinowe złącze JTAG

j-link-ultra-81600

Pinout dla tego złącza jest następujący :

J-Link_2mm_Adapter_Pinout

To w zasadzie podstawowe funkcje dla JTAG-a gdzie sygnały standardu oznaczają :

  1. TDI     (Test Data In)         – Wejście danych,
  2. TDO   (Test Data Out)      – Wyjście danych,
  3. TCK   (Test Clock)            – Wejście sygnału zegarowego,
  4. TMS   (Test Mode Select) – Wybór trybu pracy,
  5. TRST (Test Reset)            – Zerowanie.

W zasadzie całość jest oczywista i w zasadzie nas nie interesuje w zestawach gdzie mamy dostęp do 20 pinowego złącza, ale …. no właśnie ale …

Standardów złącz mamy kilka dla JTAG gdzie zwykle najczęściej występuje 20pin lub prezentowane niżej:

J-Link_TI-14pin_Adapter_pinout

j-link_needle_adapter_pinout

To te popularniejsze złącza, oczywiście nic straconego gdyż na większość okazji można nabyć adaptery :

modjtag

które zawierają szereg złącz JTAG na każdą okazję :)  ale to nie jest też aż tak dla nas w tej chwili istotne,  bardziej nas zainteresuje tryb pracy naszego JTAG-a  w  SWD  czyli Serial Wire Debuger, Tryb ten jest stosowany głównie przez firmę STM  przy mikrokontrolerach STM32 jest to wygodne rozwiązanie gdyż zamiast 10 , 14 czy 20 pinów złącza wystarczają w zasadzie tylko 3 :) Jak widzicie  10 pinowe złącze posiada SWD oznaczone na pinach, ale też jest duże a umieszczenie 3ch pinów to nie kłopot :)

O ile w przypadku ST-Linka sprawa jest prosta bo SWD jest dostępne na adapterze w zestawie:

IMG_0796

 

a dostępne tanie ST-Linki z płytkami Nucelo czy Discovery pracują tylko w SWD, O tyle w przypadku J-Linka wielu się zastanawia jak podłączyć STMA … Zadanie jest w sumie banalne i w sumie wystarczy nam kilka przewodów.

conjtag

Jak widać wyżej :)

  • pin 7 –> SWDIO
  • pin 9 –> SWDCLK

to są podstawowe sygnały dla SWD oczywiście potrzebne jest nam jeszcze GND łącznie 3 przewody , ale …

 


 

imgresW przypadku J-Linka używamy 4 przewodów dla SWD. Konieczne jest doprowadzenie VCC z układu programowanego do Pinu 1 na złączu w/w  (VCC) gdyż J-Link musi widzieć napięcie zasilania inaczej nie wykrywa układu.  PIN 1 w złączu jest wejściem i nie służy do zasilania układów to PIN  VTref   (Voltage Target Ref..)


 

Tak więc nasze podłączenie dla STM32  wygląda następująco:

Przechwytywanie

można sobie jak widać poradzić 4rema przewodami :

  • (czerwony)  — Pin 1 VCC
  • (żółty) — Pin 7 SWDIO
  • (zielony) — Pin 9  SWDCLK
  • (niebieski) — Pin 10 GND (dowolny od 4 do 20)

Co na 20 pinowym złączu wygląda np tak:

Przechwytywanie

 

Ale nie zawsze jest to wygodne dlatego warto sobie zrobić kabelek lub adapter, Wielu w tym ja często używam złącza 6pin :

J-Link-6-Pin-Adapter-Pinout

Gdzie wyprowadzam wszystkie sygnały SWD z SWO j/w lub pomijam  i piny 3 i 6 zostawiam NC.  Oczywiście dużo lepszym rozwiązaniem jest zrobienie sobie tasiemki zgodnie z wyprowadzeniami SWD na Discovery/Nucleo  co nie jest kłopotliwe i można zrobić na kawałku płytki uniwersalnej, możliwości mamy naprawdę wiele :)

2014-07-02T11-14-00.579Z-JTAG-SMD-SMD-PogoPin-Adapter-Sch.png.2560x2560_q85

2014-06-25T04-54-30.307Z-JTAG-SMD-SMD-PogoPin-Adapter.png.855x570_q85_pad_rcrop

Jeden z używanych prze zemnie  adapterów zapinanych na taśmę 20Pin bardzo wygodny:

swd_adapter

 


 

Ten zaś został przewidziany na taśmę i oferuje 2 złącza SWD , oraz zamieściłem dodatkowo LED VTref który pokazuje nam że układ docelowy jest zasilany, a tym, samym napięcie VTref pojawia się na J-Linku dzięki czemu ładnie wszystko śmiga :) przy okazji jest niewielki i wygodny :)

SunSWD_Con

Lista części :

Wzór PCB 

Niemniej jaki sposób wybierzecie czy też sobie kupicie adapter czy zrobicie sami , już wiecie jak to podłączyć do 20 pinowego złącza JTAG – układy pracujące na SWD :) I wasze j-Linki pokarzą :

Przechwytywanie

 

 

Miłego debugowania w SWD  J-Linkiem…