![跟我學(xué)JTAG協(xié)議破解_第1頁](http://file4.renrendoc.com/view/aef4593634330590e8c848e222ee177f/aef4593634330590e8c848e222ee177f1.gif)
![跟我學(xué)JTAG協(xié)議破解_第2頁](http://file4.renrendoc.com/view/aef4593634330590e8c848e222ee177f/aef4593634330590e8c848e222ee177f2.gif)
![跟我學(xué)JTAG協(xié)議破解_第3頁](http://file4.renrendoc.com/view/aef4593634330590e8c848e222ee177f/aef4593634330590e8c848e222ee177f3.gif)
![跟我學(xué)JTAG協(xié)議破解_第4頁](http://file4.renrendoc.com/view/aef4593634330590e8c848e222ee177f/aef4593634330590e8c848e222ee177f4.gif)
![跟我學(xué)JTAG協(xié)議破解_第5頁](http://file4.renrendoc.com/view/aef4593634330590e8c848e222ee177f/aef4593634330590e8c848e222ee177f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——跟我學(xué)JTAG協(xié)議破解[JTAG]跟我學(xué)JTAG協(xié)議破解——第一彈初識(shí)JTAGTAP狀態(tài)機(jī)
2023年9月18日5:28
[準(zhǔn)備知識(shí)]
A、基本的狀態(tài)機(jī)知識(shí)
B、基本的C語言能力,包括位操作、常用宏定義、數(shù)組、指針等常見內(nèi)容C、會(huì)使用一種單片機(jī)
D、熟悉SPI協(xié)議的物理原理E、對(duì)JTAG的好奇和興趣
[序言]
JTAG協(xié)議是目前應(yīng)用最廣泛的下載和仿真協(xié)議,對(duì)協(xié)議的最初締造者來說,這可能有點(diǎn)無心插柳柳成蔭
的感覺——最初的JTAG協(xié)議只是用來輔助專門的硬件質(zhì)檢部門對(duì)印刷電路進(jìn)行檢測的。這些老賬現(xiàn)不再提了
我們現(xiàn)在看到的各種JTAG下載和仿真協(xié)議都是各生產(chǎn)廠商在原有JTAG協(xié)議的思想上進(jìn)行擴(kuò)展的,并不具有通
用性,甚至連最基本的電路檢測部分功能也被加以改造——譬如,一個(gè)JTAG指令可能在大部分的版本中是4
位長度的,而對(duì)于AVR32來說,一個(gè)JTAG指令卻是5位。總之,現(xiàn)在大行其道的JTAG協(xié)議,不變的部分就只有
其核心TAP狀態(tài)機(jī)了。ARM有ARM的JTAG,AVR有AVR的JTAG,51有51的JTAG……
在這樣一個(gè)缺乏統(tǒng)一標(biāo)準(zhǔn)的“街頭〞JTAG時(shí)代,假使你想學(xué)好JTAG下載仿真協(xié)議的破解,就必需從TAP狀態(tài)機(jī)開始。
[原理解析]
在你被繁雜的時(shí)序圖弄得眼花繚亂之前,你應(yīng)當(dāng)首先記住以下的斷言:
A、JTAG協(xié)議的本質(zhì)與SPI協(xié)議并沒有什么不同,它等于一個(gè)繁雜的SS狀態(tài)機(jī)+變長的MOSI和MISO數(shù)據(jù)移位
操作。不過所謂的變長,都是事先約定好的。
B、JTAG協(xié)議是一個(gè)同步通訊協(xié)議,它是全雙工的。它的通訊原則是“以物易物〞——即你假使想得到某
些東西,你必需先給與一致長度的內(nèi)容;你假使只是想發(fā)送一些數(shù)據(jù),也會(huì)自動(dòng)獲取一致長度的內(nèi)容,
至于交換的內(nèi)容是否有意義,這是另外一回事了。
C、JTAG協(xié)議無論多么繁雜,實(shí)際上只有4根線起作用(有時(shí)候還有兩根雞肋的nSRST和TRST),他們分別
是TMS、TCK、TDI和TDO,他們分別對(duì)應(yīng)SPI協(xié)議里面的SS、SCK、MOSI和MISO。在本質(zhì)上,他們并沒有
什么不同。即便是ARM的JTAG那么多的引腳,實(shí)際上起作用JTAG的也就這4根線而已。
D、JTAG的數(shù)據(jù)操作都是基于移位寄放器的。
E、假使JTAG協(xié)議在某個(gè)下載仿真協(xié)議中只是用來發(fā)送控制信息和少量的數(shù)據(jù),而大量的數(shù)據(jù)傳輸是通過
額外的其它引腳進(jìn)行的,即便這個(gè)協(xié)議被稱為JTAG仿真其本質(zhì)也早已超過JTAG了,嚴(yán)格來說,不應(yīng)當(dāng)
稱之為JTAG。由于JTAG協(xié)議中就只有4根線(有時(shí)候也算上nSRST和TRST)而已。典型的如NEXUS協(xié)議。
說了這么多,我們終究可以開始正式的講解了。
一、從SPI到JTAG
假使熟悉SPI,你會(huì)發(fā)現(xiàn)SPI是如此的簡單、和諧——一根用于二進(jìn)制位同步的時(shí)鐘線SCK,一根用于
主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)線MOSI(MasterOutSlaveIn),一根用于從機(jī)發(fā)送到主機(jī)的數(shù)據(jù)線MISO(Master
InSlaveOut),外加一根用于復(fù)位SPI從機(jī)控制器以達(dá)到通訊同步的控制信號(hào)SS(不妨理解為Slave
Synchronization)。假使樂意,你很簡單就通過消減MOSI和MISO的方法獲得精簡的單向通訊。
前面我們提到,JTAG的數(shù)據(jù)操作都是基于移位寄放器的,這一點(diǎn)和SPI是一致的。JTAG協(xié)議的核心在
于能夠有效地傳輸指令和數(shù)據(jù),并且傳輸指令和數(shù)據(jù)的過程是能夠明確的加以區(qū)別對(duì)待而不會(huì)造成歧義的。
如何實(shí)現(xiàn)這一功能呢?JTAG協(xié)議只是將原本用來復(fù)位從機(jī)的SS信號(hào)擴(kuò)展為一個(gè)狀態(tài)機(jī)。而該狀態(tài)機(jī)每一個(gè)
狀態(tài)都有兩個(gè)狀態(tài)觸發(fā)——在TCK(也就是SCK)的上升沿,TMS(也就是SS)的電平?jīng)Q定了跳轉(zhuǎn)的分支。
下圖就是一個(gè)典型的TAP狀態(tài)機(jī),值得慶幸的是,該狀態(tài)機(jī)所有JTAG協(xié)議中都會(huì)遵守的部分。
假使這是你第一次研究TAP狀態(tài)機(jī),首先你不必去追究TAP畢竟是哪些英文單詞的縮寫,由于TestAccess
Port已經(jīng)是過去很久的事情了,現(xiàn)在的JTAG狀態(tài)機(jī)雖然功能沒變,但早就從事其它“高科技〞行業(yè)了。
其次眼看著附圖,你會(huì)發(fā)現(xiàn),其實(shí)整個(gè)狀態(tài)機(jī)不過分為三個(gè)部分:信道選擇部分、數(shù)據(jù)信道和指令信道。
所謂的信道選擇,就是圖中最頂上由四個(gè)狀態(tài)組成的矩形,分別對(duì)應(yīng)著四個(gè)狀態(tài):1、JTAGTAP狀態(tài)機(jī)復(fù)位狀態(tài)
顧名思義,就是進(jìn)入該狀態(tài),將導(dǎo)致整個(gè)硬件TAP控制器復(fù)位,所有的寄放器都將被初始化。在
TCK的上升沿,TMS為低電平日,進(jìn)入下一個(gè)狀態(tài);否則保持不變。2、JTAGTAP的Run-Test/Idle狀態(tài)
其實(shí)就是“開工〞和“休息〞的選擇分支點(diǎn)。在TCK的上升沿,TMS的高電平將導(dǎo)致狀態(tài)切換,進(jìn)
入數(shù)據(jù)信道的通訊狀態(tài);否則保持不變。3、JTAGTAP的Select-DRScan狀態(tài)
SelectDRScan翻譯成中文就是“選擇數(shù)據(jù)移位寄放器進(jìn)行移位操作〞,簡單說來,就是當(dāng)我們
在該狀態(tài)下,TCK的上升沿讀取到了TMS的低電平將直接進(jìn)入數(shù)據(jù)信道的操作子狀態(tài)機(jī);在TCK的上升
沿讀取到了TMS的高電平,將切換到指令信道的通訊狀態(tài)。4、JTAGTAP的Select-IRScan狀態(tài)
Select-IRScan翻譯成中文就是“選擇指令寄放器進(jìn)行移位操作〞,簡單來說,就是當(dāng)我們?cè)谠摖?/p>
態(tài)下,TCK的上升沿讀取到了TMS的低電平將直接進(jìn)入指令信道的操作狀態(tài)機(jī);在TCK的上升沿讀取到了
TMS的高電平,將重新回到JTAG的復(fù)位狀態(tài)。
數(shù)據(jù)信道和指令信道對(duì)應(yīng)著兩個(gè)子狀態(tài)機(jī),從本質(zhì)上數(shù)據(jù)和指令并沒有任何不同,只是習(xí)慣上,指令
的長度固定為4個(gè)二進(jìn)制位(AVR32的JTAG是5個(gè)),而數(shù)據(jù)則隨著不同的指令選擇了不同長度的指令
寄放器,這個(gè)就需要具體查閱相關(guān)的協(xié)議說明白,譬如JTAGIDCODE的長度固定為32位,而AVR32的復(fù)
位指令卻有5位(好多狀況下別指望是8的倍數(shù))。根據(jù)閱讀前面“選擇部分4個(gè)狀態(tài)機(jī)〞的經(jīng)驗(yàn),大家
應(yīng)當(dāng)對(duì)照著圖片自己嘗試去理解剩下的兩個(gè)信道。下面,我只就常見的幾個(gè)狀態(tài)進(jìn)行解釋(以數(shù)據(jù)信
道為例,指令信道可以參考其內(nèi)容)。
1、CaptureDR狀態(tài)
前文說過,JTAG協(xié)議是基于移位寄放器的,其通訊具有“以物易物〞的特性,在我們進(jìn)入真正的數(shù)
據(jù)傳輸之前,需要告知JTAG“準(zhǔn)備通訊了哦?你有沒有東西要給我哈?〞,于是CaptureDR就是一個(gè)
給JTAG機(jī)遇將需要傳達(dá)給我們的數(shù)據(jù)放入指定的移位寄放器中的狀態(tài)。2、ShiftDR狀態(tài)
這個(gè)狀態(tài)就是通過TDI和TDO進(jìn)行數(shù)據(jù)傳輸?shù)臓顟B(tài)。需要說明的是,即便進(jìn)入了該狀態(tài),TMS上的電平
在TCK的上升沿也是會(huì)被讀取的,從圖中看到,一旦在TMS上讀取到高電平,系統(tǒng)就會(huì)跳出ShiftDR狀態(tài)
假使此時(shí)數(shù)據(jù)沒有傳輸完成,造成的后果是不確定的。請(qǐng)大家注意,我所說的是不確定,而不是“很嚴(yán)
重〞:同樣是由于移位寄放的傳輸特性,有時(shí)候并不要求一定要將所有的數(shù)據(jù)都完整的進(jìn)行傳輸,譬如
在AVR32中,針對(duì)SAB的數(shù)據(jù)操作,往往只需要進(jìn)行最關(guān)鍵的部分,詳細(xì)地內(nèi)容可以參照相關(guān)的數(shù)據(jù)手冊(cè);
但有的時(shí)候,數(shù)據(jù)的不完整傳輸則會(huì)導(dǎo)致很嚴(yán)重的后果,這取決于具體的JTAG通訊協(xié)議。所以,為了保
險(xiǎn)起見,一旦進(jìn)入ShiftDR狀態(tài),在發(fā)送最終一個(gè)數(shù)據(jù)之前,請(qǐng)保持TMS為低電平,當(dāng)要發(fā)送最終一個(gè)數(shù)
據(jù)時(shí),應(yīng)當(dāng)將TMS設(shè)置為高電平,這樣,當(dāng)TCK跳變?yōu)樯仙貢r(shí),系統(tǒng)既完成了最終一個(gè)數(shù)據(jù)的傳輸,也
成功的退出了ShiftDR狀態(tài)。3、Exit1DR狀態(tài)
該狀態(tài)提供了我們一個(gè)在方才輸入的數(shù)據(jù)生效前,重新修改的機(jī)遇。一般狀況下,我們直接保持TMS
的高電平,并在TCK的上升沿驅(qū)動(dòng)TAP狀態(tài)機(jī),直接進(jìn)入U(xiǎn)pdate-DR狀態(tài)。4、Update-DR狀態(tài)
顧名思義,就是使我們輸入的數(shù)據(jù)生效——一般JTAG內(nèi)部的動(dòng)作就是觸發(fā)一個(gè)鎖存信號(hào),將移位寄放
器中的內(nèi)容并行的讀取到對(duì)應(yīng)的寄放器中。Update-DR有兩個(gè)出口,一個(gè)是,TMS的低電平對(duì)應(yīng)Run-test/
Idle,還有一個(gè)是TMS的高電平對(duì)應(yīng)的Select-DRScan。這兩個(gè)操作看似區(qū)別不大,但是意義非凡。前者
往往會(huì)導(dǎo)致JTAG內(nèi)部產(chǎn)生額外的時(shí)序(譬如發(fā)生一個(gè)信號(hào),表示完成了一個(gè)特定的周期操作,在AVR的
JTAG下載中有此實(shí)例);后者則表示完成了一次數(shù)據(jù)操作,將進(jìn)行下一個(gè)數(shù)據(jù)的操作,但是這些操作屬于
同一個(gè)操作周期。當(dāng)然有些狀況下,這兩種方法是沒有區(qū)別的。
關(guān)于理論部分的講解,到此為止,留下一個(gè)小小的思考,當(dāng)TAP狀態(tài)機(jī)處于一個(gè)未知的狀態(tài)時(shí),如何才能
通過一個(gè)統(tǒng)一的操作使其回到Run-Test/Idel狀態(tài)呢?給一個(gè)小小的提醒,針對(duì)TAP狀態(tài)機(jī)的TMS信號(hào),給
定固定的電平,在有限的TCK上升沿中,完成狀態(tài)機(jī)的復(fù)位。那么這個(gè)有限的范圍最少是多少個(gè)時(shí)鐘周期?
這個(gè)固定的電平畢竟是高還是低呢?
[實(shí)際應(yīng)用]
下面的代碼是我應(yīng)用在SnailmkIIDEMO中用來操作TAP狀態(tài)機(jī)的實(shí)際代碼,它根據(jù)用戶輸入的TAP控制流,產(chǎn)
生TAP控制時(shí)序,譬如我們需要從Run-Test/Idle狀態(tài)進(jìn)入Shift-IR狀態(tài),根據(jù)TAP狀態(tài)圖,我們很簡單得出需要產(chǎn)
生的TMS信號(hào)依次為1(進(jìn)入SelectDRScan)1(進(jìn)入SelectIRScan)0(進(jìn)入CaptureIR)0(進(jìn)入Shift-IR
Scan),一共四個(gè)二進(jìn)制位,根據(jù)從LSB到MSB依次發(fā)送的順序,需要傳送給函數(shù)的值就是0x03,長度為4。需要注
意的是,進(jìn)入Shift-IR狀態(tài)以后,有可能要設(shè)置此時(shí)的需要TMS保持的電平狀態(tài),因此,實(shí)際傳送的0x03其內(nèi)容應(yīng)
該是11000,最終一個(gè)0表示完成前面4個(gè)TMS時(shí)序的輸入以后,TMS保持低電平。最終一個(gè)0不計(jì)入長度。1./***********************************************************2.*函數(shù)說明:JTAGTAP狀態(tài)機(jī)控制函數(shù)*3.*輸入:控制序列,序列長度*4.*輸出:無*5.*調(diào)用函數(shù):無*6.**7.*使用說明*8.*1、TMS在TCK上升邊沿輸出狀態(tài)控制量。*9.*2、連續(xù)5個(gè)TCK周期在TMS上輸出高電平將進(jìn)入Test-*10.*Logic-Reset模式。*11.*3、使用該函數(shù)時(shí),請(qǐng)將狀態(tài)機(jī)跳轉(zhuǎn)以后TMS需要保*12.*持的電平也作為一個(gè)有效輸入?yún)⑴c到序列的末尾*13.*但描述序列長度的數(shù)值不需要相應(yīng)的增加。*14.***********************************************************/15.voidJTAG_TAP_Control(UINT8chCTRStream,UINT8chLength)16.{17.UINT8n=0;18.19.//狀態(tài)機(jī)控制序列20.for(n=0;nchLength;n++)21.{22.CLR_TCK23.if(chCTRStream&BIT(n))24.{25.SET_TMS26.}27.else
28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.{
CLR_TMS}
JTAG_CLOCK_DELAYSET_TCK
/*延時(shí)部分*/
JTAG_CLOCK_DELAY}
//保持電平
if(chCTRStream2.#defineJTAG_TAP_SHIFT_IRJTAG_TAP_Control(0x03,4);3.#defineJTAG_TAP_RETURN_RUN_TEST_IDELJTAG_TAP_Control(0x01,2);4.#define
JTAG_TAP_ENTER_SHIFT_DR_FROM_SHIFT_IRJTAG_TAP_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度化妝品原料供應(yīng)鏈金融服務(wù)合同
- 2025年度住宅小區(qū)業(yè)主自裝修消防驗(yàn)收服務(wù)合同
- 2025年度農(nóng)業(yè)科技成果轉(zhuǎn)化與產(chǎn)業(yè)化合作合同
- 2025年度城市綠化工程貸款擔(dān)保合同
- 電子商務(wù)對(duì)現(xiàn)代商業(yè)模式的重塑
- 2025年全新房屋室內(nèi)裝修監(jiān)理服務(wù)合同模板
- 2025年度外墻水包砂施工技術(shù)培訓(xùn)與支持合同
- 2025年度養(yǎng)老機(jī)構(gòu)設(shè)施設(shè)備采購與安裝合同
- 2025年度物流配送合同標(biāo)準(zhǔn)范本
- 大學(xué)藝術(shù)團(tuán)申請(qǐng)書
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 數(shù)據(jù)中心運(yùn)維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 瑞幸對(duì)賭協(xié)議
- 幼兒園一日活動(dòng)流程教師培訓(xùn)
- 2025江蘇連云港市贛榆城市建設(shè)發(fā)展集團(tuán)限公司招聘工作人員15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 征信入校園教育課件
- 2025年全年日歷-含農(nóng)歷、國家法定假日-帶周數(shù)豎版
- 《電子商務(wù)系統(tǒng)分析與設(shè)計(jì)》課件-電子商務(wù)系統(tǒng)規(guī)劃
- 《東北大學(xué)宣傳》課件
- 2025年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
評(píng)論
0/150
提交評(píng)論