Elektroda.pl
Elektroda.pl
X
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32 COrtex-M3] - jakie piny do złącza SWD

08 Mar 2011 11:55 10167 14
  • Poziom 9  
    Witam
    Mam pytanie - jakie piny trzeba wyprowadzic na płytce aby móc zaprogramowac/uruchamiac urządzenie z STM32F105 przez złącze SWD ? Chodzi mi o jak najwieksze zminimalizowanie ilosci wyprowadzen (płytka docelowa urządzenia) - stadardowe złącze 10pinowe z JTAG zajmuje za duzo miejsca i zbyt duzo pinow. W/g dokumentacji do SWD sa dwie linie SWCLK i SWDIO, dodatkowo zasilanie i masa, a co z NRST - czy jest potrzebne ? A TRST ?
  • Computer Controls
  • Poziom 18  
    W dokumentacji masz rozpiskę pinów i ich opis, jest także opisane w tabelce, które piny to SWDIO oraz SWDCLK (str 28). Reset, tak jak w przypadku JTAG nie jest chyba konieczny, ale może ci się przydać, nawet do ręcznego resetowania procesora lub po zaprogramowaniu, więc warto ta linię sobie zostawić.
  • Poziom 35  
    SWDIO - TMS
    SWCLK - CLK

    SWO - TDO (tracing, nie jest konieczny)
    TRST - niepodłączony/nieużywany
  • Poziom 9  
    Dzieki za szybka odpowiedz. Przeglądałem wczesniej dokumentacje, jak najbardziej, tez tak podłączyłem na płytce, ale miałem z nią problemy i zaczałem szukac w sieci rozwiazania.
    pozdrawiam

    PS. na forum Ride-7 (a wiec producenta debuggera z ktorego korzystam) dostałem odpowiedz ze i NRST i TRST sa potrzebne - TRST sluzy do resetowania w CPU jednostki JTAG/SW, a NRST do odwieszania procka.
  • Computer Controls
  • Poziom 35  
    "odwieszania" procka?
    NRST to jest najwzyklejszy RESET całego układu jak w każdym innym mikrokontrolerze.
    TRST jest resetem JTAGa. Nie musi on byc podłączony, bo SW ma zamiast pinu, rozkaz, i w efekcie wykonuje się ten sam reset JTAG.
  • Poziom 10  
    Potrzeba tylko SCLK TMS i masę.
    Zasilanie nie jest konieczne (o ile programator ma własne:P).
  • Poziom 11  
    nsvinc napisał:
    SWDIO - TMS
    SWCLK - CLK

    SWO - TDO (tracing, nie jest konieczny)
    TRST - niepodłączony/nieużywany


    Witam
    właśnie projektuje płytkę z prockiem STM32 i zastanawiam sie nad sygnałem SWO.
    W dokumentacji jest napisane, że ten pin jest tylko do "async trace".
    Nie wiem jeszcze co to jest więc zastanawiam się czy debugowanie będzie działało bez tego sygnału?
  • Poziom 38  
    Będzie, wystarczą 3 piny - data clock i gnd do zrównania potencjałów.
  • Poziom 19  
    Dołączę się do wątku.
    Wykonałem nie dawno adapter z kwarcem i koniecznymi kondensatorami dla STM32F407VG z wyjściem gooldpinowym. By go przetestować wykonałem płytkę z samym złączem JTAG.
    Do programowania używam klona Ulinka2 i Keila. Mikrokontroler programuje się bez problemu przez złącze JTAG.
    Wyprowadzenia które użyłem:
    - TDI,
    - TCK,
    - TMS,
    - TRST,
    - nRST.

    Chciałem sprawdzić transmisję przez SWD przy wykorzystaniu Ulinka2.
    Zostawiłem tylko linie:
    - TMS/SWDIO,
    - TCK/SWCLK.

    No i niestety nie mogłem się połączyć z układem. Jednak gdy dodałem linię nRST układ zaczął bez problemu się programować oraz debugować.
    Z informacji z tego wątku oraz z dokumentacji wynika że wystarczą dwie linie, bez nRST jednak u mnie układ bez tej inni nie chce się ani programować ani debugować.

    Z ciekawości sprawdziłem jeszcze jak będzie wyglądało programowanie przez ST-linka. Przy jego wykorzystaniu linia nRST jest nie potrzebna, układ bez problemu się debuguje (załadowanie programu przez LOAD nie działa ale to chyba normalne).

    Czy ktoś wie, co może być przyczyną, że bez linii nRST nie mogę zaprogramować/debugować mikrokontrolera z Ulinka2. Być może tak już jest przy wykorzystaniu Ulinka2 i SWD?
    Z góry dziękuję za odpowiedź.

    Edit:
    Chyba że zgodnie z tym opisem:
    http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm
    Jest to SWJ które wykorzystuje linie:
    - TMS/SWDIO,
    - TCK/SWCLK,
    -TDO/SWO,
    - nRST.
  • Poziom 30  
    W ST-Linku jakoś zapomnieli o linii resetu i to się może fantastycznie zemścić Kiedyś potrzebowałem wykorzystać wszystkie linie procesora i programowo wyłączyłem JTAG'a (zanim pomyślałem :-))- bez obsługi linii resetu to już musiałem przestawiać BOOTx bo mi szkoda było procesora. Ulink sobie z taką sytuacją radzi bez specjalnego problemu. Do SWD wykorzystuję 2 linie JTAG'a i masę (oraz "dla higieny" na złącze wyprowadzam też 3.3V i nRST). Do tej pory wszystkie wynalazki JTAG (klony i nie-klony) nie miały problemów z działaniem.
    W ST-Linku pod Keil'em funkcja ładowania kodu do FLASH nie działa (wyłącznie poprzez debug). Natomiast jest całkiem niezłe, niezależne narzędzie od ST do "flashowania" i nie tylko (które oczywiście działa tylko z ST-LINK). I to narzędzie działa zawsze natomiast Keil i te jego drivery do ST-Linik'a mogą protestować w najmniej oczekiwanych przypadkach.
  • Poziom 27  
    Dodam swoje 3 grosze. ST-LINK czasami zawodzi właśnie z powodu braku obsługi nRST w trybie SWD. Niedawno spędziłem trochę czasu nad "zablokowanym" STMem, którego nie mogłem ruszyć za pomocą ST-LINKa. Do procesora wgrany został program, który w jakiś sposób blokował możliowosć komunikacji przez SWD. ST-LINK zwracał komunikat "can't halt core". Pomogło ręczne zresetowanie procesora (nózką nRST) w momencie rozpoczęcia programowania przez ST-LINKa.
    Natomias R-LINK nie miał żadnego problemu z dostępem do procesora.
  • Poziom 19  
    Do tej pory korzystałem z pełnego JTAGa a chcę zacząć używać SWD z wiadomej przyczyny - mniej wyprowadzeń.
    No dobra jeśli to normalne zachowanie, że Ulink2 nie będzie działał bez linii nRST, to zalecacie połączenie następujących linii:

    - Vdd,
    - GND,
    - TMS/SWDIO,
    - TCK/SWCLK,
    - nRST.

    Rozumiem, ze linia TDO/SWO jak już wcześniej napisano nie jest potrzebna w żadnym przypadku także dla Ulinka2 pracującego pod SWD?
  • Poziom 10  
    Ja mam pytanie odnośnie dziwnego zachowania SWD.
    Mianowicie. W domu posiadam 4 różne płytki STM32.
    Kamami Buttefly - F107
    oraz zaprojektowane i wykonane przeze mnie:
    F405 oraz dwie różne płytki z F103RE

    Butterfly ma wyprowadzony cały JTAG. Do moich płytek wyprowadziłem jedynie SWD - tak jak przedstawiliście to koledzy w tym wątku.

    Programuję przez wbudowany ST-Link na płytkach F4 Discovery - oczywiście zdejmuję zworki.

    I teraz uwaga. Przez SWD che się programować jedynie F4 oraz Butterfly. Płytki F103 nie odpowiadają. SWD F4 różni się od JTAGA butterfly'a tym, że nie posiada rezystorów pull-up i pull-down przy TCK i TMS. Pozostałe dwie płytki F103 różnią się od siebie dokładnie tym samym (rezystorami).

    Wydaje mi się, że sprawdziłem wszystkie połączenia hardware'u. Używam Atollica. Może cośz Atolliciem jest nie w porządku.
    Proszę o jakiekolwiek wskazówki.
  • Poziom 11  
    Do programowania przez SWD wystarczą 2 piny SWDIO i SWCLK.
    Jak wygląda podłączeniu i mnie:
    - zasilanie procka 3.3V,
    - SWDIO i SWCLK wyprowadzone bez żadnego podciągania

    STM F1 programowałem i debugowałem ST-LINKiem z płykti DISCOVERY F4 i wszystko chodziło prawidłowo.

    Należy pamiętać jeszcze o podłączeniu VCC i GND procka do programatora. (Zari44 może tu jest Twój problem)
  • Poziom 14  
    Witam,
    Odświeże temat. Co do programowania to daje sie zastosować dwie linie Swd swdio i swclk, ale czy po zaprogramowaniu da sie zresetować układ bez resetu poprzez komendę? Czy trzeba podpiąć pin nrst?
    Pozdr PtR