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