czwartek, 21 maja 2020

JTAG-owe ABC

JTAG 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.
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 tryb 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



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



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


  • TDI  (Test Data In)         – Wejście danych,
  • TDO (Test Data Out)      – Wyjście danych,
  • TCK (Test Clock)            – Wejście sygnału zegarowego,
  • TMS (Test Mode Select) – Wybór trybu pracy,
  • 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:




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


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:


UWAGA!!! text powstał w 2015 roku obecnie polecam zakup ST-Link v3 SET lub którąś wersję mini ST-Link v3 

Dodatkowo 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.



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 ...

W 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:



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:



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


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






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




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



Lista części :


  • Kawałek laminatu 
  • 1x IDC20 Męski
  • 1x IDC6 Męski
  • 1x 4pin CRIMP ;może być goldpin
  • 2x SMD 805 0R0
  • 1x SMD 805 301
  • 1x LED 3mm


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ą :



Upragniony widok ....

Brak komentarzy:

Prześlij komentarz