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