![JTAG調(diào)試原理.ppt_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/7/2e6e15fd-991a-4e48-9e10-bd5f3c810524/2e6e15fd-991a-4e48-9e10-bd5f3c8105241.gif)
![JTAG調(diào)試原理.ppt_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/7/2e6e15fd-991a-4e48-9e10-bd5f3c810524/2e6e15fd-991a-4e48-9e10-bd5f3c8105242.gif)
![JTAG調(diào)試原理.ppt_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/7/2e6e15fd-991a-4e48-9e10-bd5f3c810524/2e6e15fd-991a-4e48-9e10-bd5f3c8105243.gif)
![JTAG調(diào)試原理.ppt_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/7/2e6e15fd-991a-4e48-9e10-bd5f3c810524/2e6e15fd-991a-4e48-9e10-bd5f3c8105244.gif)
![JTAG調(diào)試原理.ppt_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/7/2e6e15fd-991a-4e48-9e10-bd5f3c810524/2e6e15fd-991a-4e48-9e10-bd5f3c8105245.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JTAG調(diào)試原理,目錄,一、JTAG基本知識 1.1、什么是JTAG 1.2 、 JTAG的作用 1.3、 JTAG調(diào)試結(jié)構(gòu) 二、 JTAG的工作原理 2.1、兩個重要概念:邊界掃描和TAP 2.2、JTAG的狀態(tài)機(jī) 2.3、 ARM7TDMI內(nèi)核結(jié)構(gòu) 2.4、 JTAG掃描鏈結(jié)構(gòu)及工作過程 2.5、 EmbeddedICE-RT Logic的結(jié)構(gòu) 2.6、 EmbeddedICE的斷點(diǎn)/觀察點(diǎn)設(shè)置 三、 JTAG常用指令,一、JTAG基本知識,1.1、 什么是JTAG JTAG是Joint Test Action Group(聯(lián)合測試行動組)的縮寫,是IEEE1149.1標(biāo)準(zhǔn)。 1.2 、
2、JTAG的作用 使得IC芯片固定在PCB版上,只通過邊界掃描便可以被測試。 1.3、 JTAG調(diào)試結(jié)構(gòu),(1)、DEBUG主控制器: 運(yùn)行有ARM公司或是第三方提供的調(diào)試軟件的PC機(jī)。如:ARM公司提供的ADS、LINUX下的arm-elf-gdb等。通過這些調(diào)試軟件,可以發(fā)送高級調(diào)試命令,如:設(shè)置/取消斷點(diǎn),讀寫MEMORY,單步跟蹤,全速運(yùn)行等。,(2)、協(xié)議轉(zhuǎn)換器(Protocol converter) 負(fù)責(zé)將Debug主控端發(fā)出的高級ARM調(diào)試命令轉(zhuǎn)換為底層的ARM JTAG調(diào)試命令。 Debug主控端和協(xié)議轉(zhuǎn)換器間的介質(zhì)可以有很多種,如:Earthnet、USB,串口,并口等。 De
3、bug主控端和協(xié)議轉(zhuǎn)換器間的通信協(xié)議可以是ARM公司的ANGEL標(biāo)準(zhǔn),也可以是第三方自定義的標(biāo)準(zhǔn)。典型的協(xié)議轉(zhuǎn)換器有:ARM公司的Multi-ICE,H-JTAG,JLink等。,H-JTAG運(yùn)行界面,J-Link的運(yùn)行界面,(3)、調(diào)試目標(biāo)機(jī) 系統(tǒng)的調(diào)試對象。典型的ARM7TDMI內(nèi)核的調(diào)試結(jié)構(gòu):,二、JTAG的工作原理,2.1、兩個重要概念:邊界掃描和TAP (1)邊界掃描(Boundary-Scan): 基本思想:在靠近芯片輸入/輸出管腳上增加一個移位寄存器單元(邊界掃描寄存器)。 正常狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正常的運(yùn)行不會受到任何的影響。,調(diào)試狀態(tài)下,邊界掃描寄存
4、器將芯片和外的輸入輸出隔離開,通過這些邊界掃描寄存器可以實現(xiàn)對芯片輸入輸出信號的控制。具體控制過程如下: 、輸入管腳:通過與之相連的邊界掃描寄存器把信號(數(shù)據(jù))加載到該管腳中去。 、輸出管腳:通過與之相連的邊界掃描 寄存器“捕獲”該管腳上的輸出信號。,注意: 芯片輸入輸出管腳上的邊界掃描寄存器單元可以相互連接起來,在芯片周圍形成一個邊界掃描鏈。該鏈可以實現(xiàn)串行的輸入輸出,通過相應(yīng)的時鐘信號和控制信號,可方便的觀察和控制在調(diào)試狀態(tài)下的芯片。,(2)、TAP(Test Access Port) TAP是一個通用的端口,利用它可以訪問芯片提供的所有DR和IR。對整個TAP的控制是通過TAP Cont
5、roller來完成的。 TAP包括5個信號接口: TCK(Test Clock Input) JTAG時鐘信號位。標(biāo)準(zhǔn)強(qiáng)制要求 TMS(Test Mode Select) 測試模式選擇,通過該信號控制JTAG狀態(tài)機(jī)的狀態(tài)。TMS在TCK的上升沿有效。標(biāo)準(zhǔn)強(qiáng)制要求,TDI(Test Data Input) 數(shù)據(jù)輸入口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過TDI口一位一位串行輸入的(TCK驅(qū)動)。標(biāo)準(zhǔn)里強(qiáng)制要求 TDO(Test Data Output) 數(shù)據(jù)輸出口。所有要從特定的寄存器中輸出的數(shù)據(jù)都是通過TDO口串行的一位一位輸出的(TCK驅(qū)動)。標(biāo)準(zhǔn)里強(qiáng)制要求 TRST(Test Reset
6、Input) JTAG復(fù)位信號。標(biāo)準(zhǔn)里是可選的,2.2、JTAG的狀態(tài)機(jī),TAP共有16個狀態(tài)機(jī),如下圖所示: 每一個狀態(tài)都有其相應(yīng)的功能。箭頭表示了所有可能的狀態(tài)轉(zhuǎn)換流程。狀態(tài)的轉(zhuǎn)換是由TMS控制的。,2.3、ARM7TDMI內(nèi)核結(jié)構(gòu),ARM7TDMI處理器結(jié)構(gòu)框圖:,ARM7TDMI處理器包括三大部分: ARM CPU Main Processor Logic 包括了對調(diào)試的硬件支持 Embedded ICE-RT Logic 包括一組寄存器和比較器,用來產(chǎn)生調(diào)試異常,設(shè)置斷點(diǎn)和觀察點(diǎn)。 TAP Controller 通過JTAG接口來控制和操作掃描鏈,ARM7TDMI還提供了3個附加的信
7、號: DBGRQ : 調(diào)試請求,通過把DBGREQ置 “1”,可以迫使ARM7TDMI進(jìn)入調(diào)試狀態(tài) DBGACK :調(diào)試確認(rèn),通過DBGACK,可以判斷當(dāng)前ARM7TDMI是否在調(diào)試狀態(tài) BREAKPT :斷點(diǎn)信號,這個信號是輸入到ARM7TDMI處理器內(nèi)核的,2.4、JTAG掃描鏈結(jié)構(gòu)及工作過程,ARM7TDMI的框圖提供了3條掃描鏈: Scan Chain 0 113個掃描單元,包括ARM所有的I/O,地址/數(shù)據(jù)總線和輸入/輸出控制信號。此鏈很復(fù)雜,不易控制,但包含信息豐富,可通過它得到ARM7TDMI內(nèi)核的所有信息。 Scan Chain 1 33個掃描單元,包括數(shù)據(jù)總線和一個斷點(diǎn)控制信
8、號。,Scan Chain 2 38個掃描單元,通過控制EmbeddedICE宏單元,實現(xiàn)對ARM進(jìn)行指令的斷點(diǎn)、觀察點(diǎn)的控制。 其實還有個Scan Chain 3,ARM7TDMI可以訪問外部的邊界掃描鏈。只不過很少用,在此不做介紹。想了解可以看ARM7TDMI手冊。,一個典型的JTAG鏈:,JTAG掃描鏈的工作過程,2.5、EmbeddedICE-RT Logic的結(jié)構(gòu),通過對EmbeddedICE控制,以及通過對EmbeddedICE中寄存器的讀取,可以獲得ARM內(nèi)核的狀態(tài),為程序設(shè)置斷點(diǎn)觀察點(diǎn)以及讀取Debug通信通道(DCC)。 這里的斷點(diǎn)用來標(biāo)識某個地址上的一條指令,而觀察點(diǎn)用來觀
9、察某個地址上的數(shù)據(jù)變化,所以這二者是有區(qū)別的。DCC用來完成主調(diào)試器和目標(biāo)機(jī)間的信息發(fā)送。,EmbeddedICE的結(jié)構(gòu)如下:,EmbeddedICE的長度是38位,包括: 32位數(shù)據(jù) 5位地址,訪問EmbeddedICE中的寄存器 1個讀寫控制位 EmbeddedICE的寄存器主要包括Debug狀態(tài)和控制寄存器,Debug通信寄存器和斷點(diǎn)設(shè)置相關(guān)的寄存器,如下圖所示:,EmbeddedICE的寄存器,EmbeddedICE寄存器格式及含義,Debug Control Register 格式: DBGACK:用來控制DBGACK信號的值 DBGRQ:是調(diào)試請求信號,通過將該信號置“1”,可以強(qiáng)
10、制ARM7TDMI暫停當(dāng)前的指令,進(jìn)入調(diào)試狀態(tài) INTDIS:用來控制中斷 SBZ/RAZ:任何時候都必須被置“0”,Monitor Mode Enable:用來控制是否進(jìn)入Monitor模式 EmbeddedICE-RT Disable:用來控制整個EmbeddedICE-RT,是啟用還是禁用 Debug Status Register 格式: DBGACK:用來標(biāo)識當(dāng)前系統(tǒng)是否處于調(diào)試狀態(tài)。1,表示進(jìn)入;0,表示未進(jìn)入。,DBGRQ:用來標(biāo)識DBGRQ信號的當(dāng)前狀態(tài) IFEN:用來標(biāo)識系統(tǒng)的中斷控制狀態(tài):啟用 還是禁用 cgenL:用來判斷當(dāng)前對調(diào)試器在調(diào)試狀態(tài)下對內(nèi)存的訪問是否完成 TB
11、IT:該位用來判斷ARM7TDMI是從ARM 狀態(tài)還是THUMB狀態(tài)進(jìn)入到調(diào)試狀態(tài)的,Abort Status Register 格式:,該寄存器的長度為1,來判斷一個異常的產(chǎn)生的原因:斷點(diǎn)觸發(fā)?觀察點(diǎn)觸發(fā)?還是一個真的異常?,實例1:用Scan Chain 2 設(shè)置Debug Control Register,1)、 選擇掃描鏈2,將其連接到TDI,TDO 之間。具體過程如下: 通過TAP將SCAN_N指令寫入到指令寄存器當(dāng)中去, TAP狀態(tài)轉(zhuǎn)換如下:RUN-TEST/IDLESELECT-DR-SCAN SELECT-IR-SCAN CAPTURE-IR SHIFT-IR EXIT1-IR
12、 UPDATE-IR RUN-TEST/IDLE,在SHIFT-IR狀態(tài)下,將SCAN_N通過TDI寫到指令寄存器中去;接下來,訪問被SCAN_N指令連接到TDI,和TDO之間的掃描鏈選擇寄存器,通過將2寫入到掃描鏈選擇寄存器當(dāng)中去,以將掃描鏈2連接到TDI和TDO之間。將2寫入掃描鏈選擇寄存器的狀態(tài)轉(zhuǎn)換如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在SHIFT-DR狀態(tài)下,將數(shù)值2通過TDI寫到掃描鏈選擇寄存器當(dāng)中去。 2)、將Scan Chain 2置為內(nèi)測試模式
13、用INTEST 指令實現(xiàn)該操作,指令寫入與SCAN_N指令的過程類似,3)、寫Debug Control Register 假設(shè)要將Debug Control Register的6位全部置“1”,按照掃描鏈2的格式,需要寫入到掃描鏈2第序列應(yīng)該為: 1,00000,0000,0000,0000,0000,0000,0000,0011,1111 1表示寫操作,00000標(biāo)識的是Debug Control Register的地址,中間32位是要寫入到Debug Control Register的數(shù)據(jù)。因Debug Control Register長度為6,所以只有低6位的數(shù)據(jù)序列111111有效。
14、,將上面長度為38位的序列寫入到掃描鏈2中,TAP狀態(tài)轉(zhuǎn)換過程如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在SHIFT-DR狀態(tài)下,通過38個TCK時鐘驅(qū)動,就可以將上面的序列串行輸入到掃描練2當(dāng)中去。在回到RUN-TEST/IDLE狀態(tài)后,Debug Control Register的值就會被改寫為111111。,EmbeddedICE有兩個WtchPoint單元。下面介紹一下WatchPoint寄存器的使用: EmbeddedICE的一個主要作用是可以在ARM程序
15、中設(shè)置軟件或硬件斷點(diǎn)。在EmbeddedICE中,集成了一個比較器,負(fù)責(zé)把ARM處理器取指的地址A31:0,數(shù)據(jù) D31:0以及一些控制信號與EmbeddedICE中WatchPoint寄存器中設(shè)置的數(shù)值相比較(具體說應(yīng)該是進(jìn)行與或運(yùn)算),比較結(jié)果用來確定輸出一個ARM斷點(diǎn)(BreakPoint)信號。具體運(yùn)算關(guān)系如下公式所描述:,2.6、EmbeddedICE的斷點(diǎn)/觀察點(diǎn)設(shè)置,Av31:0,Cv4:0 XOR A31:0,C4:0 OR Am31:0,Cm4:0 = 0 xFFFFFFFF 當(dāng)上述表達(dá)式值為真時,斷點(diǎn)/觀察點(diǎn)信號有效,ARM內(nèi)核進(jìn)入Debug模式。 ARM中斷點(diǎn)和觀察點(diǎn)的設(shè)
16、置 首先介紹一下與之設(shè)置密切相關(guān)的WP Control Value/Mask Register。 WP Control Value/Mask Register格式:,WP Control Value/Mask Register格式含義:,ENABLE: 如果該位置0的話,意味著斷點(diǎn)觸發(fā)條件永遠(yuǎn)不成立,也就是把全部斷點(diǎn)都給disable掉了 RANGE: 暫時不會用 CHAIN: 暫時不會用 EXTERN: 外部到EmbeddedICE-RT的輸入,通過該輸入,可以使得斷點(diǎn)的觸發(fā)依賴于一定的外部條件 nTRANS: 用來判斷是在用戶態(tài)下還是非用戶態(tài)下,用戶態(tài)下:nTRANS = 0,否則nTRA
17、NS = 1,nOPC: 檢測當(dāng)前的周期是取指令還是進(jìn)行數(shù)據(jù)訪問。nOPC=0,表示當(dāng)前周期進(jìn)行取指。 nOPC=1,表示當(dāng)前周期進(jìn)行普通數(shù)據(jù)的訪問。(該位用的較多) MAS1:0: 和ARM7TDMI的MAS1:0信號進(jìn)行比較,以探測當(dāng)前總線的寬度是8位、16位還是32位 nRW: nRW = 0, 當(dāng)前的是讀周期,nRW = 1,當(dāng)前的是寫周期,斷點(diǎn)設(shè)置的兩種方式: 1)、硬件斷點(diǎn): 通過設(shè)置EmbeddedICE中的WP和地址相關(guān)的寄存器來實現(xiàn)的。通過該方式設(shè)置的斷點(diǎn)數(shù)受到WP數(shù)目的限制。因ARM7TAMI中僅有兩組WP,故最多可以設(shè)置兩個斷點(diǎn)。但是,硬件斷點(diǎn)可在任何地方設(shè)置不受存儲類型
18、限制。,2)、軟件斷點(diǎn) 通過設(shè)置EmbeddedICE中的WP和數(shù)據(jù)相關(guān)的寄存器來實現(xiàn)的。分為兩步: (1)、將data value和data mask設(shè)為ARM的未定義指令,通常是一個特殊的32位數(shù)字,如:0 xCDCDCDCD (2)、在需要設(shè)置斷點(diǎn)的地方將其內(nèi)容替換,為(1)中的特殊數(shù)字。這樣,一但程序運(yùn)行到該位置,嘗試從該位置取指令或者數(shù)據(jù)的時候,因為取得的數(shù)據(jù)值和WP Data Value寄存器的值相同,ARM7TDMI會暫停當(dāng)前的運(yùn)行,自動進(jìn)入調(diào)試狀態(tài)。 由上所述,軟件斷點(diǎn)數(shù)目不受ARM內(nèi)核中WP數(shù)目的限制。但是,軟件斷點(diǎn)是通過替換系統(tǒng)斷點(diǎn)地址的指令實現(xiàn)的,所以,軟件斷點(diǎn)只能在可寫
19、的存儲器空間中設(shè)置,如:RAM。而不能在FLASH,ROM中設(shè)置。,總之,有兩個WP的ARM7TDMI內(nèi)核中,斷點(diǎn)設(shè)置有如下情況: 2個硬件斷點(diǎn),沒有軟件斷點(diǎn)。 1個硬件斷點(diǎn),任意個軟件斷點(diǎn)。 沒有硬件斷點(diǎn),任意個軟件斷點(diǎn)。 觀察點(diǎn)設(shè)置: 將WP Address Value寄存器的值設(shè)置為需要觀察的地址,WP Address Mask寄存器的值設(shè)置為0 x00000000。將WP Data Mask寄存器的值設(shè)置為0 xFFFFFFFF。同時nPOC = 1。另外,,WP Data Value/Mask Register也用來設(shè)置觀察點(diǎn),用以觀察某個地址的數(shù)據(jù)變化。每當(dāng)系統(tǒng)訪問(讀/寫)完被觀察地址的數(shù)據(jù)的時候,ARM7TDMI就會進(jìn)入調(diào)試狀態(tài),這樣,我們就可以馬上檢查該地址上的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)事故隱患報告制度和舉報獎勵制度范文(五篇)
- 2025高一物理預(yù)習(xí)講第7講.牛頓運(yùn)動定律基礎(chǔ)含答案
- 2025年陜西省職教高考《語文》核心考點(diǎn)必刷必練試題庫(含答案)
- 土方開挖運(yùn)輸合同
- 幼兒園圓形教學(xué)活動策劃方案五篇
- 代理藥品銷售合同范本
- 公司口罩采購合同范本
- 標(biāo)識的采購合同
- 咨詢策劃合同范本
- 電氣設(shè)備安裝合同
- 《梅大高速茶陽路段“5·1”塌方災(zāi)害調(diào)查評估報告》專題警示學(xué)習(xí)
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 《大健康解讀》課件
- 2025年度交通運(yùn)輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學(xué)設(shè)計2022課標(biāo)
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 醫(yī)務(wù)科運(yùn)用PDCA循環(huán)提高門診醫(yī)生準(zhǔn)時出診率PDCA成果匯報
- 模具生產(chǎn)車間員工績效考核表模板
評論
0/150
提交評論