基于Cortex-M內(nèi)核的單片機(jī),目前主流的下載接口就是JTAG和SWD。
SWD 和 JTAG引腳區(qū)別:
JTAG:
TDI:Test Data In。 串行輸入引腳
TDO:Test Data Out,串行輸出引腳
TCK:Test Clock,時(shí)鐘引腳
TMS:Test Mode Select,模式選擇(控制信號(hào))引腳
TRST:Test Reset,復(fù)位引腳
社署:
SWDIO:Serial Wire Data Input Output,串行數(shù)據(jù)輸入輸出引腳
SWCLK:Serial Wire Clock,串行線時(shí)鐘引腳
其中SWD只需要兩根線(SWCLK和 SWDIO),在PCB布局有限、引腳資源緊張的情況下,SWD算是一種不錯(cuò)的選擇。
SWD簡(jiǎn)介
SWD:Serial Wire Debug,代表串行線調(diào)試,是ARM設(shè)計(jì)的協(xié)議,用于對(duì)其微控制器進(jìn)行編程和調(diào)試。
市面上支持SWD調(diào)試接口的下載器很多,比如:ST-Link、 J-Link、 e-Link、 GD-Link等市面上絕大部分用于Cortex-M內(nèi)核處理器的下載器都支持。
對(duì)于SWDIO,是雙向(輸入輸出)數(shù)據(jù)引腳,必須在電路板上對(duì)線路進(jìn)行上拉(ARM 建議采用 100 K)。
每次在協(xié)議中更改 SWDIO 的方向時(shí),都會(huì)插入轉(zhuǎn)換時(shí)間,此時(shí)線路即不受主機(jī)驅(qū)動(dòng)也不受目標(biāo)驅(qū)動(dòng)。 默認(rèn)情況下,此轉(zhuǎn)換時(shí)間為一位時(shí)間,但可以通過配置 SWCLK 頻率來調(diào)整。
調(diào)試接口
常見的Cortex-M內(nèi)核處理器都集成了SWD和JTAG 調(diào)試端口,在 SWJ-DP 中, SW-DP 的 2 個(gè) JTAG 引腳與 JTAG-DP 的 5 個(gè) JTAG 引腳中的部分引腳復(fù)用。
JTAG與SWD的切換機(jī)制:
默認(rèn)調(diào)試接口是 JTAG 接口,如果調(diào)試工具想要切換到 SW-DP,它必須在 TMS/TCK(分別映射到 SWDIO 和 SWCLK)上提供專用的 JTAG 序列,用于禁止 JTAG-DP 并使能 SW-DP。 這樣便可僅使用 SWCLK和 SWDIO 引腳來激活SWDP。
該序列為:
輸出超過 50 個(gè) TCK 周期的 TMS (SWDIO) = 1 信號(hào)
輸出 16 個(gè) TMS (SWDIO) 信號(hào) 0111100111100111 (MSB)
輸出超過 50 個(gè) TCK 周期的 TMS (SWDIO) = 1 信號(hào)
SW 協(xié)議序列
每個(gè)序列包括三個(gè)階段:
主機(jī)發(fā)送的數(shù)據(jù)包請(qǐng)求( 8 位)
目標(biāo)發(fā)送的確認(rèn)響應(yīng)( 3 位)
主機(jī)或目標(biāo)發(fā)送的數(shù)據(jù)傳輸階段( 33 位)
數(shù)據(jù)包請(qǐng)求( 8 位):
ACK 響應(yīng)( 3 位):
DATA 傳輸( 33 位)
這種類似于寄存器的一些Bit位操作,底層的一些原理與普通的通信協(xié)議也有類似之處。。
SW-DP 狀態(tài)
SW-DP 的狀態(tài)機(jī)有一個(gè)用于標(biāo)識(shí) SW-DP 的內(nèi)部 ID 代碼,其中主要包含的狀態(tài):復(fù)位、空閑狀態(tài)、 ID 代碼等。
在上電復(fù)位后、 DP 從 JTAG 切換到 SWD 后或者線路處于高電平超過 50 個(gè)周期后,SW-DP 狀態(tài)機(jī)處于復(fù)位狀態(tài)。
如果在復(fù)位狀態(tài)后線路處于低電平至少兩個(gè)周期, SW-DP 狀態(tài)機(jī)處于空閑狀態(tài)。
復(fù)位狀態(tài)后,該狀態(tài)機(jī)必須首先進(jìn)入空閑狀態(tài),然后對(duì) DP-SW ID CODE 寄存器執(zhí)行讀訪問。 否則,目標(biāo)將在另一個(gè)事務(wù)上發(fā)出 FAULT 確認(rèn)響應(yīng)。
SW-DP 狀態(tài)機(jī)的更多詳細(xì)信息,可以參看Cortex-M相關(guān)的一些手冊(cè)。
SW-DP 寄存器
SWD類似普通外設(shè),也是有一種寄存器,開發(fā)者進(jìn)行的編程(讀寫)操作,其實(shí)就是操作對(duì)應(yīng)的寄存器。
SWD主要的底層就介紹到這里,更多詳情,請(qǐng)參看Cortex-M內(nèi)核手冊(cè)。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44989瀏覽量
650350 -
通信協(xié)議
+關(guān)注
關(guān)注
28文章
1034瀏覽量
41160 -
引腳
+關(guān)注
關(guān)注
16文章
1723瀏覽量
52872 -
下載器
+關(guān)注
關(guān)注
1文章
63瀏覽量
13139 -
SWD
+關(guān)注
關(guān)注
1文章
57瀏覽量
12246
原文標(biāo)題:SWD下載器通信協(xié)議底層原理
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32中的通信協(xié)議是什么
Modbus通信協(xié)議的相關(guān)資料下載
如何實(shí)現(xiàn)基礎(chǔ)通信協(xié)議的設(shè)計(jì)?
串口通信協(xié)議的相關(guān)資料分享
Robin通信協(xié)議的程序和工程文件免費(fèi)下載

SWD通信協(xié)議的底層技術(shù)
簡(jiǎn)述SWD下載器通信協(xié)議底層原理

評(píng)論