Serial Wire Debug (SWD), kako uporabljati.

programski jeziki in programiranje

Moderator: tilz0R

Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a xfce » 19 Apr 2018, 09:00

Pozdravljeni,

imam nekaj vprašanj glede SWD programiranja MCU. Polno povezan SWD ima torej VDD, VSS, RESET, SWCLK, SWDIO in SWO.

Slika

Koda: Izberi vse
RESET
SWCLK    Input    Clock signal to target CPU. It is recommended that this pin is pulled to a defined state of the target board. Shared with TMS on targets which support JTAG and SWD.
SWDIO    I/O    Bi-directional data pin. This pin should be pulled up on the target. Shared with TMS on targets which support JTAG and SWD.
SWO    Output (optional)    Serial wire output, allowing the CPU to output custom data like printf output, asynchronous to SWCLK and other debug pins. Usually shared with the TDO pin on devices which support JTAG and SWD. Not available on all devices which support SWD.


SWO pin je čisto specifičen in ga načeloma ne uporabljamo?
Če razumem prav lahko povežem na programator samo SWCLK, SWDIO (seveda poleg VDD in VSS) in lahko programiram in delam debug v polni funkcionalnosti. Kaj pridobim če povežem tudi reset pin?
Ali potrebujejo pini SWCLK, SWDIO zunanji pullup?
Reset pin lahko uporabim kot GPIO, če kasneje v kodi spremnim njegovo funkcionalnost?
Če izdelek serijsko programiram, lahko pin SWCLK, SWDIO uporabim tudi za GPIO in obdržim samo RESET pin, če ga hočem kdaj preprogramirati? Tukaj zgubim možnost za debug?
Je dovolj samo reset pin, če v kodi kasneje spremenim pin SWCLK, SWDIO v GPIO, ali moram dati po resetu kakšen delay?
Načeloma, če grem v ekstrem, bi se lahko zaklenil ven in uporabil vse pine (RESET, SWCLK, SWDIO) za GPIO?
xfce
 
Prispevkov: 521
Pridružen: 14 Feb 2015, 12:38
Kraj: Poljane nad Škofjo loko
Zahvalil se je: 65 krat
Prejel zahvalo: 130 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 26

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a zanka » 19 Apr 2018, 09:22

Meni deluje programiranje, če povežem SWCLK, SWDIO in NRST tako kot sem to počel na AVR. Torej brez kakršnih koli uporov na strani naprave, kaj ima uporabljen ST-Link kot programator pa lahko pogledaš v njegovo shemo.

Ali je pri tem RST potreben povezave, nisem prepričan.
Uporabniški avatar
zanka
 
Prispevkov: 1566
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 83 krat
Prejel zahvalo: 138 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 26

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a s54mtb » 19 Apr 2018, 09:31

SWD je le shift register, ki omogoča (ob prepoznavi utreznega vzorca) dostop do AHB. Lahko da do tam ne prideš, če je CPU npr. v sleep, bootloaderju, ... takrat moraš SWD uporabljat tako, da je reset vsaj ob priklopu aktiven (connect "under reset") - dokler ne sprejme komande halt. Za "prazen" mikrokontroler pa ne rabiš drugega kot data in clk.
s54mtb
 
Prispevkov: 7566
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 975 krat
Prejel zahvalo: 2408 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 23

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a xfce » 19 Apr 2018, 10:39

s54mtb je napisal/-a:SWD je le shift register, ki omogoča (ob prepoznavi utreznega vzorca) dostop do AHB. Lahko da do tam ne prideš, če je CPU npr. v sleep, bootloaderju, ... takrat moraš SWD uporabljat tako, da je reset vsaj ob priklopu aktiven (connect "under reset") - dokler ne sprejme komande halt. Za "prazen" mikrokontroler pa ne rabiš drugega kot data in clk.


Super, hvala. Torej, ker imam sleep mode, je obvezen reset.

Ti, zanima me še kako je v tej situaciji, kadar SWDIO in SWDCLK uporabljaš v SW za drug namen. Torej, jasno mi je, da ne moreš delati debugiranja, ampak, če programator stisne (in ima povezan) reset pin, lahko dostopa do SWD (če ni prevelikega bremena na pinih) in normalno sprogramira?
xfce
 
Prispevkov: 521
Pridružen: 14 Feb 2015, 12:38
Kraj: Poljane nad Škofjo loko
Zahvalil se je: 65 krat
Prejel zahvalo: 130 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 26

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a s54mtb » 19 Apr 2018, 13:04

Ja, saj SWD pini imajo po resetu funkcijo swd. V npr. GPIO jih spremeni tvoja koda. Če se ne izvede (reset in debug-halt pred jmp na main()) ostanejo v SWD konfiguraciji.
s54mtb
 
Prispevkov: 7566
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 975 krat
Prejel zahvalo: 2408 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 23

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a zanka » 19 Apr 2018, 13:22

Ampak, če koda v debug načinu naleti na rekonfiguracijo SWD pinov v GPIO, potem pomoje debug ne deluje več.
Uporabniški avatar
zanka
 
Prispevkov: 1566
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 83 krat
Prejel zahvalo: 138 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 26

Re: Serial Wire Debug (SWD), kako uporabljati.

OdgovorNapisal/-a s54mtb » 19 Apr 2018, 13:41

To pa zagotovo. Ne moreš imeti isti pin za dve funkciji hkrati. Dodati moraš pogojno prevajanje (npr. #define DEBUG_BREZ_GPIO) in potem v tistem delu, kjer imaš konfig za GPIO preskočiš ta del kode....
s54mtb
 
Prispevkov: 7566
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 975 krat
Prejel zahvalo: 2408 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 23


Vrni se na Software

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 0 gostov