久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > JTAG和(he)SWD的(de)調(diao)試技(ji)術(shu)及應用

JTAG和SWD的調試技術及應用(yong) 時間:2024-12-17      來源:華清(qing)遠(yuan)見(jian)

引言

在一些常見(jian)的(de)(de)嵌入式(shi)系統(tong)的(de)(de)開發當中,硬件的(de)(de)調(diao)試接口(kou)(kou)是(shi)極其(qi)重(zhong)要的(de)(de),但是(shi)一些傳統(tong)的(de)(de)調(diao)試方法往(wang)往(wang)存在一些可能(neng)致命的(de)(de)問(wen)題。比如串口(kou)(kou)調(diao)試雖然簡單容(rong)易(yi)使用,但是(shi)實時(shi)性(xing)較差,不夠精確(que)。單步執行的(de)(de)話,雖然精確(que)度(du)高,但是(shi)又存在操作復雜的(de)(de)問(wen)題。傳統(tong)的(de)(de)調(diao)試方法往(wang)往(wang)受到速(su)度(du)、準(zhun)確(que)性(xing)和調(diao)試精度(du)的(de)(de)限(xian)制(zhi)。

為了解決這些問題,JTAG(聯合測(ce)試(shi)行動組,Joint Test Action Group)和SWD(Serial Wire Debug)作(zuo)為兩種(zhong)主要的(de)調(diao)試(shi)協議,廣(guang)泛應用(yong)于嵌入式開(kai)發中。它們提供了高效的(de)硬件調(diao)試(shi)手段,不僅能(neng)夠(gou)實現單步執(zhi)行、斷點設置、變量監控(kong)等常規調(diao)試(shi)功(gong)能(neng),還能(neng)夠(gou)深入底層(ceng)硬件,進行更復雜的(de)系統級(ji)調(diao)試(shi)。

JTAG 和 SWD

JTAG(聯合測試行動組)

大多說人可能聽過JTAG,并且用(yong)它給MCU或者(zhe)FPGA燒(shao)錄過程(cheng)序,或者(zhe)對(dui)開發板進行過調(diao)試,JTAG 最初是(shi)為(wei)了解(jie)決硬件板級測試問題而提出的(de)(de)(de)(de),它是(shi)一(yi)種標準化的(de)(de)(de)(de)調(diao)試接口(kou),那什么是(shi)標準化的(de)(de)(de)(de)調(diao)試接口(kou)呢?比如說在PCB板上存(cun)在三種廠(chang)家的(de)(de)(de)(de)芯片(pian),那如果想對(dui)三個(ge)芯片(pian)都(dou)進行測試的(de)(de)(de)(de)話(hua)就需要一(yi)個(ge)適應所有芯片(pian)的(de)(de)(de)(de)代(dai)碼(ma),會非常的(de)(de)(de)(de)龐(pang)大且單(dan)一(yi)性較強,所以才有了像JTAG這些標準化的(de)(de)(de)(de)調(diao)試接口(kou)。

JTAG 協議基(ji)于一個(ge)串行通信接口,由四個(ge)主要的信號線(xian)(上(shang)圖(tu)中的實線(xian)部分)和一個(ge)復位(wei)引腳(jiao)組成(虛線(xian)部分)主要通過(guo)四個(ge)信號引腳(jiao)進行數(shu)據傳輸:

·  TDI(Test Data In):測試數據輸入,用于接收數據到目標設備。

·  TDO(Test Data Out):測(ce)試數據(ju)輸出,用(yong)于輸出從目標設備(bei)獲取的數據(ju)。

·  TMS(Test Mode Select):測試(shi)模式選擇(ze)(ze),通過該信(xin)號來(lai)選擇(ze)(ze)不(bu)同的(de)工(gong)作(zuo)模式。

·  TCK(Test Clock):測試時鐘,提供時鐘信號以驅動數(shu)據傳輸。

通過(guo)這四個信號,JTAG 能夠控制和訪問目標設備的各個寄存器(qi)、內存以及執行(xing)控制流程。

我(wo)們(men)(men)在使(shi)用JTAG進(jin)行(xing)調(diao)(diao)試時,一(yi)(yi)般不會在我(wo)們(men)(men)寫好的代碼當(dang)中去調(diao)(diao)用JTAG的接口,而是通過JTAG調(diao)(diao)試器(qi)來與硬(ying)件進(jin)行(xing)交互。一(yi)(yi)般會與我(wo)們(men)(men)的開發環境進(jin)行(xing)配合,比如我(wo)們(men)(men)常(chang)見的GDB調(diao)(diao)試工具(ju)。下面我(wo)舉(ju)了一(yi)(yi)個簡單的例子來使(shi)用JTAG進(jin)行(xing)調(diao)(diao)試。

下(xia)面(mian)(mian)我將對(dui)上(shang)面(mian)(mian)的C語言程序(xu)使用GDB和JTAG進行調試

1. 編譯(yi)程序(xu),為了(le)使用(yong) GDB 和 JTAG 進(jin)行調試(shi),我們需要編譯(yi)程序(xu)并生成調試(shi)信息。使用(yong) -g 參數編譯(yi)程序(xu),這樣 GDB 才能讀取(qu)符號信息

2. 假設已經(jing)連接了一(yi)個 JTAG 調試(shi)器(qi)(如 ST-Link 或 J-Link),可以使(shi)用 OpenOCD 啟(qi)動(dong)調試(shi)服務器(qi)。這個服務器(qi)會通過 JTAG 接口(kou)與目標硬件通信(xin)。在(zai) OpenOCD 啟(qi)動(dong)命令行中指定調試(shi)器(qi)接口(kou)和目標設備

執(zhi)行結束后會(hui)啟動(dong)OpenOCD,對GDB調試命令(ling)進(jin)行監聽。

3. 啟動GDB并且加載好編譯的文件

4. 連(lian)接GDB到(dao)OpenOCD在 GDB 中,連(lian)接到(dao)運(yun)行 OpenOCD 的調試服務器(qi)

GDB 會連接到(dao) OpenOCD,后(hou)者通過 JTAG 連接到(dao)目標設(she)備。

1. 設置斷點并且調試

l 設(she)置斷點(dian):可(ke)以設(she)置斷點(dian)在 main 函數或任何其他地方(例如,剛(gang)剛(gang)插入的 __asm("bkpt #0"))。

l break main:會在main函(han)數的開頭設置一個(ge)斷點

l 運行程序:使用 continue 命令運行程序,GDB 會在斷點處暫(zan)停。

l 單步執行(xing):當(dang)程(cheng)序在斷點處暫(zan)停時,可以單步執行(xing)代(dai)碼(ma):(step 進(jin)入函數 next 執行(xing)下一行(xing),不進(jin)入函數)

l 查(cha)看(kan)寄(ji)存(cun)器:可以查(cha)看(kan) CPU 寄(ji)存(cun)器的內(nei)容,例如(ru)查(cha)看(kan)程序計數器 PC(info registers)

l 查(cha)看(kan)變量(liang)值(zhi)(zhi):還可以查(cha)看(kan)某個變量(liang)的值(zhi)(zhi),例(li)如查(cha)看(kan) i(print i)

l 退(tui)出 GDB:調試結(jie)束后,你可(ke)以退(tui)出 GDB。

2. 調試器和JTAG的交互

l 當(dang)程(cheng)序運行到(dao) __asm("bkpt #0") 斷點時,JTAG 調試器會暫停程(cheng)序的執(zhi)行,GDB 會接管(guan)控制。

l 你(ni)可以通(tong)過(guo) GDB 調試命令來執行(xing)單步調試、查看寄存器和內存內容(rong)、設置更多斷點等。

l TAG 在這個過程(cheng)中負責與(yu)硬件進行交互,GDB 通過 JTAG 通道控(kong)制程(cheng)序執(zhi)行。

以上就是JATG的基(ji)本使(shi)用方法。那(nei)下(xia)(xia)面我們再來說(shuo)一下(xia)(xia)SWD

SWD(Serial Wire Debug)調試技術

SWD是(shi)我們在學習STM32過程中最常(chang)見的(de)(de)(de)燒(shao)錄接口(kou)SWD是(shi)由ARM公司為(wei)其處理器(特別是(shi)Cortex系(xi)列)開(kai)發的(de)(de)(de)一種串行(xing)調(diao)試接口(kou)。它(ta)的(de)(de)(de)設計目的(de)(de)(de)是(shi)為(wei)了在有限(xian)的(de)(de)(de)引腳資源(yuan)下(xia)提供高效、低(di)功耗(hao)的(de)(de)(de)調(diao)試解決方案(an),尤其適用于嵌入式應用和資源(yuan)受限(xian)的(de)(de)(de)系(xi)統。

SWD是一個2線(xian)(或4線(xian))接(jie)口(kou),相比(bi)JTAG節省了(le)許多(duo)硬件資(zi)源,典型的接(jie)口(kou)信號有:

l SWDIO(Serial Wire Debug Input/Output):串行數據輸(shu)入(ru)/輸(shu)出

l SWCLK(Serial Wire Clock):時鐘(zhong)信號(hao)

l NRST(可(ke)選,復位信(xin)號):目標設備(bei)的復位信(xin)號

SWD提供了(le)與(yu)JTAG類似(si)的(de)調試功(gong)能,但(dan)采用(yong)串行方式進行數據傳(chuan)輸,相(xiang)對(dui)占(zhan)用(yong)更少的(de)引(yin)腳(jiao)。

如果想(xiang)進(jin)行(xing)SWD的(de)實際調試,只需要(yao)將(jiang)上(shang)面示例中的(de)JTAG更換成(cheng)SWD即可(ke)

JTAG和SWD在系統調試中的應用

以上(shang)示例就(jiu)是JTAG和(he)SWD的簡單(dan)使用(yong),那在實際(ji)的應用(yong)開發當(dang)中,這(zhe)兩種調試(shi)方法(fa)我們應該如何去選擇呢?這(zhe)就(jiu)需要了解一下(xia)兩種技術的優缺點

首先,JTAG技術具有廣泛的硬件支持,很多(duo)嵌入(ru)(ru)式的芯(xin)片和(he)處理器(qi)(qi)都提供了JTAG接(jie)口(kou)(kou),JATG接(jie)口(kou)(kou)通常(chang)提供了豐富的調試(shi)功能,包括讀取和(he)寫入(ru)(ru)寄(ji)存(cun)器(qi)(qi)、訪問內存(cun)、硬件斷點等。因為(wei)JTAG提供了更(geng)多(duo)的控制(zhi)和(he)功能,所以更(geng)適用于(yu)比較(jiao)復雜的嵌入(ru)(ru)式操作系統。但(dan)是由于(yu)它的并行性和(he)較(jiao)多(duo)的控制(zhi)線,硬件實現會(hui)更(geng)加復雜。

SWD的(de)硬件設(she)計更為簡化(hua),只(zhi)需要少(shao)量的(de)引腳,所以在資(zi)源受限的(de)系統中更加容易執(zhi)行,但是提供的(de)功(gong)能(neng)不如(ru)JTAG豐(feng)富(fu)。

那JTAG vs. SWD:如(ru)何選擇(ze)?

在選擇JTAG還是SWD時,應考慮以下因素:

1、硬件支持

首先,檢查(cha)目標芯片是(shi)否支持所(suo)需的調試(shi)接口。如(ru)果芯片只支持其中一種接口,選擇(ze)已支持的接口是(shi)明智(zhi)的。

2、性能需求

如果你(ni)需要(yao)更高的(de)(de)通(tong)信速度和較(jiao)低的(de)(de)功(gong)(gong)耗(hao),那么SWD可能是更好的(de)(de)選擇。但如果你(ni)需要(yao)豐富(fu)的(de)(de)調(diao)試(shi)功(gong)(gong)能,可能需要(yao)使用JTAG。

3、系(xi)統復雜性

對于較復(fu)雜的系(xi)統,特別是(shi)涉及多個處(chu)理器核(he)心或FPGA的系(xi)統,JTAG通常更(geng)適用,因為(wei)它提供(gong)了更(geng)多的控制(zhi)和(he)功能。

4、成本考慮

考慮硬件成本(ben)和(he)復雜性。SWD通常更簡單,因此在資源有(you)限的(de)系統中可能更經濟實惠。

5、開發工具

確保(bao)你(ni)的開(kai)發(fa)工(gong)具和(he)調試器(qi)支持你(ni)選(xuan)擇(ze)的接口。大(da)多數現(xian)代調試工(gong)具都同時支持JTAG和(he)SWD。

結論

JTAG和(he)SWD都(dou)是重要(yao)(yao)的嵌入(ru)式(shi)系統(tong)調(diao)試接口,各自具有(you)優(you)勢(shi)和(he)劣(lie)勢(shi)。選擇(ze)哪種接口取決(jue)于(yu)項目(mu)需求(qiu)、硬(ying)件支持和(he)性能(neng)要(yao)(yao)求(qiu)。對于(yu)復(fu)雜(za)的系統(tong),可(ke)能(neng)需要(yao)(yao)使用JTAG以(yi)獲(huo)得更(geng)多的控制和(he)功能(neng),而對于(yu)資源有(you)限的系統(tong),SWD可(ke)能(neng)更(geng)適(shi)合。綜合考慮這些(xie)因素,可(ke)以(yi)幫(bang)助你做出明智的選擇(ze),以(yi)便更(geng)有(you)效地進行嵌入(ru)式(shi)系統(tong)開(kai)發和(he)調(diao)試。

上一篇:如何在硬件級別實現安全特性以保護嵌入式系統

下一篇:LSTM和GRU在時間序列預測中的應用

戳我查看嵌入式每月就業風云榜

點(dian)我了解華清遠見高校學(xue)霸學(xue)習秘籍

猜你(ni)關(guan)心企業(ye)是如何評價華清學員的

干貨分享
相關新(xin)聞
前臺專線(xian):010-82525158 企業(ye)培訓洽談專線:010-82525379 院校合作(zuo)洽談(tan)專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部