什么是SWD和JTAG的標(biāo)準(zhǔn)?
什么是標(biāo)準(zhǔn)?簡(jiǎn)單來說,標(biāo)準(zhǔn)是一組規(guī)則和協(xié)議,特定行業(yè)中的每個(gè)參與者都同意遵循并執(zhí)行。在SWD和JTAG之類的協(xié)議出現(xiàn)之前,調(diào)試器及其協(xié)議一片混亂,每個(gè)MCU制造商都提出了自己的專有方法,將代碼加載到他們的MCU上。制造商每次發(fā)布MCU時(shí),嵌入式軟件工程師都需要了解其專有協(xié)議,以將代碼加載到微控制器中。
而且,調(diào)試適配器很昂貴,因?yàn)橹圃焐虒?shí)際上并沒有競(jìng)爭(zhēng)者可以使調(diào)試適配器與他們的協(xié)議相匹配,因?yàn)閰f(xié)議是專有的。它們昂貴的另一個(gè)原因是由于體積不足,因?yàn)樗鼈冎荒軐⒄{(diào)試適配器出售給使用它們制造的MCU的公司(工程師)。
不同協(xié)議還會(huì)導(dǎo)致開發(fā)成本增加,比如:你在設(shè)計(jì)的板上有來自4個(gè)不同制造商的4種芯片,并且希望對(duì)其進(jìn)行一些自動(dòng)化測(cè)試以提高生產(chǎn)過程的效率。但是,由于所有電路板都有自己的協(xié)議,因此您需要制作一個(gè)能適應(yīng)復(fù)雜性的超級(jí)復(fù)雜的生產(chǎn)代碼,并且需要在電路板上的測(cè)試點(diǎn)安裝4個(gè)不同的調(diào)試器,從而增加了成本,生產(chǎn)時(shí)間和編程時(shí)間。
3.制定協(xié)議各種下載調(diào)試不同會(huì)導(dǎo)致幾個(gè)問題:投入更多的學(xué)習(xí)時(shí)間下載調(diào)試的成本生成測(cè)試效率低下,為了解決這一問題,各大MCU制造和生產(chǎn)商的工程師們就針對(duì)調(diào)試制定了一些規(guī)范協(xié)議。該小組于1980年后期開始討論,并于1990年正式發(fā)布了解釋IEEE標(biāo)準(zhǔn)的文檔。(IEEE代表電氣與電子工程師協(xié)會(huì),是一個(gè)國(guó)際組織,其中發(fā)布了所有標(biāo)準(zhǔn),如WiFi,藍(lán)牙等)。他們提出的協(xié)議在1990年被記錄在IEEE 1149.1中。后來對(duì)該文檔進(jìn)行了修訂和完善,在撰寫本文時(shí),最新標(biāo)準(zhǔn)是IEEE 1149.7。JTAG基本上帶有5個(gè)引腳:TDI: Test Data In。串行輸入引腳TDO: Test Data Out,串行輸出引腳TCK:Test Clock,時(shí)鐘引腳TMS: Test Mode Select,模式選擇(控制信號(hào))引腳TRST: Test Reset,復(fù)位引腳
在電子領(lǐng)域,芯片調(diào)試是一個(gè)至關(guān)重要的環(huán)節(jié)。為了更有效地進(jìn)行芯片調(diào)試,我們有必要深入了解不同的調(diào)試協(xié)議。本文將詳細(xì)解析從JTAG到SWD的轉(zhuǎn)變,幫助讀者全面理解這兩種協(xié)議的工作原理及其在芯片調(diào)試中的應(yīng)用。
JTAG(Joint Test Action Group,聯(lián)合測(cè)試行動(dòng)小組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,與IEEE 1149.1標(biāo)準(zhǔn)兼容,專為芯片內(nèi)部測(cè)試而設(shè)計(jì)。如今,多數(shù)高端器件仍支持這一標(biāo)準(zhǔn),雖然JTAG接口在現(xiàn)代設(shè)備上較少見,但ARM、DSP和FPGA等高端器件依然廣泛支持。標(biāo)準(zhǔn)的JTAG接口包含四條線:TMS、TCK、TDI和TDO,分別用于模式選擇、時(shí)鐘信號(hào)、數(shù)據(jù)輸入和數(shù)據(jù)輸出。具體來說,這些引腳的定義如下:
TMS(測(cè)試模式選擇):用于設(shè)定JTAG接口的特定測(cè)試模式。
TCK(測(cè)試時(shí)鐘輸入):提供時(shí)鐘信號(hào)。
TDI(測(cè)試數(shù)據(jù)輸入):數(shù)據(jù)通過此引腳輸入JTAG接口。
TDO(測(cè)試數(shù)據(jù)輸出):數(shù)據(jù)通過此引腳從JTAG接口輸出。
值得注意的是,由于早期PC機(jī)普遍配備并口,JTAG協(xié)議在定義時(shí)便與之相連。然而,隨著技術(shù)的發(fā)展,現(xiàn)在的計(jì)算機(jī)尤其是筆記本電腦很少配備并口,取而代之的是USB接口的廣泛應(yīng)用。因此,JTAG協(xié)議在市場(chǎng)上的應(yīng)用已逐漸減少。
串行調(diào)試(Serial Wire Debug,簡(jiǎn)稱SWD)是一種與JTAG不同的調(diào)試模式,其使用的調(diào)試協(xié)議亦有所差異。最直觀的差異體現(xiàn)在調(diào)試接口上:相較于JTAG的20個(gè)引腳,SWD僅需4個(gè)(或5個(gè))引腳,結(jié)構(gòu)更為簡(jiǎn)潔。SWD因其引腳少、結(jié)構(gòu)簡(jiǎn)單,在數(shù)據(jù)量大時(shí)更穩(wěn)定,適用于有限GPIO資源的場(chǎng)合,建議優(yōu)先使用。雖然SWD的使用范圍目前尚不及JTAG廣泛,主流調(diào)試器也是在后期才增設(shè)了SWD調(diào)試模式。
談及SWD與傳統(tǒng)調(diào)試方式的區(qū)別,其優(yōu)勢(shì)在高速模式下更為明顯。在處理大數(shù)據(jù)量時(shí),JTAG下載程序可能會(huì)失敗,而SWD則能顯著降低此情況的發(fā)生概率。此外,若仿真器支持,用戶可以在基本使用JTAG仿真模式的情況下直接切換至SWD模式,因此推薦大家優(yōu)先考慮使用SWD模式。
遠(yuǎn)程調(diào)試接口(Remote Debug Interface,簡(jiǎn)稱RDI)是ARM公司為ARM芯片仿真而提出的標(biāo)準(zhǔn)調(diào)試接口。過去,由于各IDE廠商使用的調(diào)試接口各異,硬件調(diào)試往往局限于特定平臺(tái)。然而,隨著RDI為ARM芯片提供的統(tǒng)一調(diào)試接口,使跨平臺(tái)硬件調(diào)試成為可能,多家IDE廠商逐漸采用標(biāo)準(zhǔn)RDI作為調(diào)試接口,跨平臺(tái)的硬件調(diào)試已成為現(xiàn)實(shí)。例如,EasyJTAG便支持這一標(biāo)準(zhǔn),從而能在任何遵循標(biāo)準(zhǔn)RDI接口的IDE調(diào)試環(huán)境中發(fā)揮作用,如ARM公司的ADS1.2及IAR公司的EWARM 3.30等。
ULINK,由ARM/KEIL公司精心打造的仿真器,現(xiàn)已升級(jí)為ULINK2和ULINK Pro兩個(gè)版本,供用戶選擇。該仿真器與Keil軟件緊密結(jié)合,提供強(qiáng)大的仿真功能,支持多種調(diào)試技術(shù),但僅限于Keil平臺(tái)。它新增了串行調(diào)試(SWD)支持、返回時(shí)鐘支持以及實(shí)時(shí)代理等實(shí)用特性。
開發(fā)工程師在RealView MDK的調(diào)試器與ULINK2的協(xié)同作用下,能輕松地在目標(biāo)硬件上進(jìn)行片上調(diào)試,包括使用on-chip JTAG、SWD和OCDS技術(shù),以及Flash編程。
ST-LINK仿真器是專為意法半導(dǎo)體STM8和STM32系列芯片設(shè)計(jì)的。它支持SWIM標(biāo)準(zhǔn)接口和JTAG/SWD標(biāo)準(zhǔn)接口,具備多種功能:
編程功能:能夠燒寫FLASH ROM、EEPROM、AFR等,為芯片提供靈活的編程能力。
仿真功能:支持全速運(yùn)行、單步調(diào)試、斷點(diǎn)調(diào)試等多種調(diào)試方法,同時(shí)提供IO狀態(tài)和變量數(shù)據(jù)的查看,助力開發(fā)者深入理解芯片運(yùn)行狀態(tài)。
仿真性能:通過USB2.0接口進(jìn)行仿真調(diào)試,單步和斷點(diǎn)調(diào)試反應(yīng)迅速,提升開發(fā)效率。
編程性能:同樣采用USB2.0接口,支持SWIM/JTAG/SWD下載方式,下載速度迅捷,節(jié)省開發(fā)時(shí)間。
專為STM系列芯片設(shè)計(jì),支持多種接口和功能,提升了編程和調(diào)試的效率。
串行調(diào)試(Serial Wire Debug),應(yīng)該可以算是一種和JTAG不同的調(diào)試模式,使用的調(diào)試協(xié)議也應(yīng)該不一樣,所以最直接的體現(xiàn)在調(diào)試接口上,與JTAG的20個(gè)引腳相比,SWD只需要4個(gè)(或者5個(gè))引腳,結(jié)構(gòu)簡(jiǎn)單,但是使用范圍沒有JTAG廣泛,主流調(diào)試器上也是后來才加的SWD調(diào)試模式。
SWD模式比JTAG在高速模式下面更加可靠。在大數(shù)據(jù)量的情況下面JTAG下載程序會(huì)失敗,但是SWD發(fā)生的幾率會(huì)小很多?;臼褂?a href="/tags/JTAG" target="_blank">JTAG仿真模式的情況下是可以直接使用SWD模式的,只要你的仿真器支持,所以推薦大家使用這個(gè)模式。