版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、準(zhǔn)備知識(shí)A、基本的狀態(tài)機(jī)知識(shí)B、基本的C語(yǔ)言能力,包括位操作、常用宏定義、數(shù)組、指針等常見(jiàn)內(nèi)容C會(huì)使用一種單片機(jī)D、熟悉SPI協(xié)議的物理原理E、XJTAG的好奇和興趣JTAG協(xié)議是目前應(yīng)用最廣泛的下載和仿真協(xié)議,對(duì)協(xié)議的最初締造者來(lái)說(shuō),這也許 有點(diǎn)無(wú)心插柳柳成蔭的感覺(jué) 最初的JTAGB議只是用來(lái)輔助專(zhuān)門(mén)的硬件質(zhì)檢部門(mén)對(duì)印 刷電路進(jìn)行檢測(cè)的。這些老賬現(xiàn)不再提了 我們現(xiàn)在看到的各種 JTAG下載和仿真協(xié)議都是各生產(chǎn)廠商在原有JTAG協(xié)議的思想上進(jìn)行擴(kuò)充的,并不具有通用性,甚至連最基本的電路檢測(cè)部分功能也被加以改造比如,一個(gè)JTAG旨令可能在大部分的版本中是4位長(zhǎng)度的,而對(duì)于 AVR32來(lái)說(shuō),一個(gè)J
2、TAG旨令卻是5位。總之,現(xiàn)在大行其道的JTAGW議,不變的部分就只有其核心 TAP狀態(tài)機(jī)了。 ARM 有 ARM 的 JTAG AVR 有 AVR 的 JTAG 51 有 51 的 JTAG在這樣一個(gè)缺乏統(tǒng)一標(biāo)準(zhǔn)的街頭” JTAG代,如果你想學(xué)好 JTAG下載仿真協(xié)議的破解,就必須從TAP 狀態(tài)機(jī)開(kāi)始。原理解析在你被復(fù)雜的時(shí)序圖弄得眼花繚亂之前,你應(yīng)該首先記住以下的斷言:A、JTAG協(xié)議的本質(zhì)與SPI協(xié)議并沒(méi)有什么不同,它等于一個(gè)復(fù)雜的SS狀態(tài)機(jī)+變長(zhǎng)的MOSI和MISO數(shù)據(jù)移位操作。不過(guò)所謂的變長(zhǎng),都是事先約定好的。B JTAG協(xié)議是一個(gè)同步通訊協(xié)議,它是全雙工的。它的通訊原則是以物易物”
3、一一即你如果想得到某些東西,你必須先給與相同長(zhǎng)度的內(nèi)容;你如果只是想發(fā)送一些數(shù)據(jù),也會(huì)自動(dòng)獲取相同長(zhǎng)度的內(nèi)容,至于交換的內(nèi)容是否有意義,這是另外一回事了。C JTAG協(xié)議無(wú)論多么復(fù)雜,實(shí)際上只有4根線起作用(有時(shí)候還有兩根雞肋的nSRST和TRST,他們分別是 TMS、TCK TDI和TDO,他們分別對(duì)應(yīng) SPI協(xié)議里面的 SS SCK MOSI和MISO。在本質(zhì)上,他們并沒(méi)有什么不同。即便是 ARM的JTAG那么多的引腳, 實(shí)際上起作用JTAG的也就這4根線而已。D、JTAG的數(shù)據(jù)操作都是基于移位寄存器的。E、如果JTAG協(xié)議在某個(gè)下載仿真協(xié)議中只是用來(lái)發(fā)送控制信息和少量的數(shù)據(jù),而大量的數(shù)據(jù)
4、傳輸是通過(guò)額外的其它引腳進(jìn)行的,即便這個(gè)協(xié)議被稱(chēng)為 JTAG仿真其本質(zhì)也早已超過(guò)JTAG了,嚴(yán)格來(lái)說(shuō),不應(yīng)該稱(chēng)之為JTAG因?yàn)镴TAG協(xié)議中就只有4根線(有時(shí)候也算上nSRSTS TRST而已。典型的如 NEXUS協(xié)議。說(shuō)了這么多,我們終于可以開(kāi)始正式的講解了。一、從 SPI到 JTAG如果熟悉SPI,你會(huì)發(fā)現(xiàn)SPI是如此的簡(jiǎn)單、和諧一一一根用于二進(jìn)制位同步的時(shí)鐘 線SCK 一根用于主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)線MOSI (Master Out Slave In), 一根用于從機(jī)發(fā)送到主機(jī)的數(shù)據(jù)線 MISO ( MasterIn Slave Out),外加一根用于復(fù)位 SPI從機(jī)控制器以達(dá) 到通訊同步
5、的控制信號(hào) SS (不妨理解為 Slave Synchronization)。如果樂(lè)意,你很容易就通過(guò)消減MOSI和MISO的方法獲得精簡(jiǎn)的單向通訊。前面我們提到,JTAG的數(shù)據(jù)操作都是基于移位寄存器的,這一點(diǎn)和SPI是相同的。JTAG協(xié)議的核心在于能夠有效地傳輸指令和數(shù)據(jù),并且傳輸指令和數(shù)據(jù)的過(guò)程是能夠明確的加以區(qū)別對(duì)待而不會(huì)造成歧義的。如何實(shí)現(xiàn)這一功能呢? JTAG協(xié)議只是將原本用來(lái)復(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ī)所有
6、JTAG協(xié)議中都會(huì)遵守的部分。Tst-Logic-Pasat 4flur-TaevIdle01如果這是你第一次研究TAP狀態(tài)機(jī),首先你不必去追究TAP究竟是哪些英文單詞的縮寫(xiě),因?yàn)門(mén)est Access Port已經(jīng)是過(guò)去很久的事情了,現(xiàn)在的JTAG狀態(tài)機(jī)雖然功能沒(méi)變,但早就從事其它 高科技”行業(yè)了。第二眼看著附圖,你會(huì)發(fā)現(xiàn),其實(shí)整個(gè)狀態(tài)機(jī)不過(guò)分為三個(gè)部分:信道選擇部分、數(shù) 據(jù)信道和指令信道。所謂的信道選擇,就是圖中最頂上由四個(gè)狀態(tài)組成的矩形,分別對(duì)應(yīng)著四個(gè)狀態(tài):1、JTAG TAP犬態(tài)機(jī)復(fù)位狀態(tài)顧名思義,就是進(jìn)入該狀態(tài),將導(dǎo)致整個(gè)硬件TAP控制器復(fù)位,所有的寄存器都將被初始化。在 TCK的上
7、升沿,TMS為低電平時(shí),進(jìn)入下一個(gè)狀態(tài);否則保持不變。2、JTAG TAP勺 Run-Test/Idle 狀態(tài)其實(shí)就是 開(kāi)工”和休息”的選擇分支點(diǎn)。在TCK的上升沿,TMS的高電平將導(dǎo)致 狀態(tài)切換,進(jìn)入數(shù)據(jù)信道的通訊狀態(tài);否則保持不變。3、JTAG TAP勺 Select-DR Scan狀態(tài)Select DR Scan翻譯成中文就是 選擇數(shù)據(jù)移位寄存器進(jìn)行移位操作”,簡(jiǎn)單說(shuō)來(lái),就是當(dāng)我們?cè)谠摖顟B(tài)下,TCK的上升沿讀取到了 TMS的低電平將直接進(jìn)入數(shù)據(jù)信道的操 作子狀態(tài)機(jī);在 TCK的上升 沿讀取到了 TMS的高電平,將切換到指令信道的通訊狀態(tài)。4、JTAG TAP勺 Select-IR Sca
8、n犬態(tài)Select-IR Scan翻譯成中文就是 選擇指令寄存器進(jìn)行移位操作 ”,簡(jiǎn)單來(lái)說(shuō),就是 當(dāng)我們?cè)谠摖顟B(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ù)和指令并沒(méi)有任何不同, 只是習(xí)慣上,指令 的長(zhǎng)度固定為4個(gè)二進(jìn)制位(AVR32的JTAG是5個(gè)),而數(shù)據(jù)則隨著 不同的指令選擇了不同長(zhǎng)度的指令寄存器,這個(gè)就需要具體查閱相關(guān)的協(xié)議說(shuō)明了,比 如JTAG IDCODE的長(zhǎng)度固定為32位,而AVR32的復(fù)位指令卻有5位(很多情況下別指 望是8的倍
9、數(shù))。根據(jù)閱讀前面 選擇部分4個(gè)狀態(tài)機(jī)”的經(jīng)驗(yàn),大家 應(yīng)該對(duì)照著圖片自 己嘗試去理解剩下的兩個(gè)信道。下面,我只就常見(jiàn)的幾個(gè)狀態(tài)進(jìn)行解釋?zhuān)ㄒ詳?shù)據(jù)信道為例,指令信道可以參考其內(nèi)容)。1、Capture DR 狀態(tài)前文說(shuō)過(guò),JTAG協(xié)議是基于移位寄存器的,其通訊具有以物易物”的特性,在我們進(jìn)入真正的數(shù)據(jù)傳輸之前,需要告知JTAG準(zhǔn)備通訊了哦?你有沒(méi)有東西要給我哈?”,于是Capture DR就是一個(gè)給JTAGB會(huì)將需要傳達(dá)給我們的數(shù)據(jù)放入指定的移位寄存器 中的狀態(tài)。2、Shift DR 狀態(tài)這個(gè)狀態(tài)就是通過(guò) TDI和TDO進(jìn)行數(shù)據(jù)傳輸?shù)臓顟B(tài)。 需要說(shuō)明的是,即便進(jìn)入了 該狀態(tài),TMS上的電平 在TC
10、K的上升沿也是會(huì)被讀取的,從圖中看到,一旦在 TMS上 讀取到高電平,系統(tǒng)就會(huì)跳出Shift DR狀態(tài)如果此時(shí)數(shù)據(jù)沒(méi)有傳輸完成,造成的后果是不確定的。請(qǐng)大家注意,我所說(shuō)的是不 確定,而不是 很?chē)?yán)重”:同樣是因?yàn)橐莆患拇娴膫鬏斕匦裕袝r(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)致很?chē)?yán)重的后果,這取決于具體的JTAG通TMS設(shè)置為高電平,這樣,當(dāng) 也成功的退出了 Shift DR狀態(tài)。重新修改的機(jī)會(huì)。一般情況下,訊協(xié)議。所以,為了保 險(xiǎn)起見(jiàn),一旦進(jìn)入 Sh
11、ift DR狀態(tài),在發(fā)送最后一個(gè)數(shù)據(jù)之前,請(qǐng) 保持TMS為低電平,當(dāng)要發(fā)送最后一個(gè)數(shù)據(jù)時(shí),應(yīng)該將TCK跳變?yōu)樯仙貢r(shí),系統(tǒng)既完成了最后一個(gè)數(shù)據(jù)的傳輸,3、Exit1 DR 狀態(tài)該狀態(tài)提供了我們一個(gè)在剛才輸入的數(shù)據(jù)生效前,我們直接保持 TMS的高電平,并在 TCK的上升沿驅(qū)動(dòng)TAP狀態(tài)機(jī),直接進(jìn)入 Update-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) Runtest/Idle ,還有一個(gè)是 TMS的高電平對(duì)應(yīng)的
12、Select-DR Scan。這兩個(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)然有些情況下,這兩種方法是沒(méi)有區(qū)別的。關(guān)于理論部分的講解,到此為止,留下一個(gè)小小的思考,當(dāng) TAP狀態(tài)機(jī)處于一個(gè)未 知的狀態(tài)時(shí),如何才能通過(guò)一個(gè)統(tǒng)一的操作使其回到 Run-Test/Idel狀態(tài)呢?給一個(gè)小小 的提示,針對(duì)TAP狀態(tài)機(jī)的TMS信號(hào),給定固定的電平,在有限的 TCK上升沿中,完成 狀態(tài)機(jī)的復(fù)位。那么
13、這個(gè)有限的范圍最少是多少個(gè)時(shí)鐘周期?這個(gè)固定的電平究竟是高還是低呢?實(shí)際應(yīng)用下面的代碼是我應(yīng)用在 Snail mkII DEMO中用來(lái)操作TAP狀態(tài)機(jī)的實(shí)際代碼,它根據(jù) 用戶(hù)輸入的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)入SelectDR Scari) 1 (進(jìn)入 Select IR Scan) 0 (進(jìn)入 Capture IR) 0 (進(jìn)入 Shift-IR Scarj), 一共四個(gè) 二進(jìn)制位,根據(jù)從LSB至ij MSB依次發(fā)送的順序,需要傳送給函數(shù)的值就是0x03
14、,長(zhǎng)度為 4。需要注意的是,進(jìn)入 Shift-IR狀態(tài)以后,有可能要設(shè)置此時(shí)的需要 TMS保持的電平狀 態(tài),因此,實(shí)際傳送的 0x03其內(nèi)容應(yīng)該是1 1 0 0 0,最后一個(gè)0表示完成前面4個(gè)TMS 時(shí)序的輸入以后,TMS保持低電平。最后一個(gè) 0不計(jì)入長(zhǎng)度。1.2./*3. *4. *5. *6. *7. *8. *9. *10. *11. *12. *13. *14. *函數(shù)說(shuō)明:JTAG TAP狀態(tài)機(jī)控制函數(shù)輸入:控制序列,序列長(zhǎng)度輸出: 無(wú)*調(diào)用函數(shù):無(wú)*使用說(shuō)明*1、 TMS在TCK上升邊沿輸出狀態(tài)控制量。2、 連續(xù)5個(gè)TCK周期在TMS上輸出高電平將進(jìn)入 Test*Logic-Res
15、et 模式。*3、使用該函數(shù)時(shí),請(qǐng)將狀態(tài)機(jī)跳轉(zhuǎn)以后TMS需要保*持的電平也作為一個(gè)有效輸入加入到序列的末尾*但描述序列長(zhǎng)度的數(shù)值不需要相應(yīng)的增加。15.*/16. void JTAG_TAP_Control(UINT8 chCTRStream,UINT8 chLength)17. 18. UINT8 n = 0;19.20. 狀態(tài)機(jī)控制序列21. for (n = 0;n < chLength;n+)22. 23. CLR_TCK24. if (chCTRStream & BIT(n)25. 26. SET_TMS27. 28. else29. 30. CLR_TMS31
16、. 32. JTAG_CLOCK_DELAY33. SET_TCK34.35. /*延時(shí)部分*/36. JTAG_CLOCK_DELAY37. 38.39. 保持電平40. if (chCTRStream & BIT(chLength)41. 42. SET_TMS43. 44. else45. 46. CLR_TMS47. 48. 49.復(fù)制代碼為了方便使用,我們可以將一些常用的TAP操作用宏進(jìn)行封裝,從而獲得較高的代碼可讀性:1.2. # define JTAG_TAP_TEST_LOGIC_RESET JTAG_TAP_Control(0x1F,6);3. # define JT
17、AG_TAP_SHIFT_IRJTAG_TAP_Control(0x03,4);4. # define JTAG_TAP_RETURN_RUN_TEST_IDEL JTAG_TAP_Control(0x01,2);5. # define JTAG TAP ENTER SHIFT DR FROM SHIFT JITAG TAP Control(0x03,4);6. # define JTAG_TAP_SHIFT_DRJTAG_TAP_Control(0x01,3);7.復(fù)制代碼工程實(shí)例Step 1:首先我們要下載一個(gè) JTAG時(shí)序分析軟件JTAG Hacker點(diǎn)擊此處下載 ourdev 496456.rar(文件大小:235K)(原文件名:上位機(jī).rar)Step 2:我們要下載一個(gè)示
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《chap會(huì)計(jì)憑證》課件
- 《服裝行業(yè)櫥窗展示》課件
- 《建設(shè)項(xiàng)目質(zhì)量管理》課件
- 2024-2025學(xué)年天津市第三中學(xué)高三上學(xué)期10月月考?xì)v史試題(解析版)
- 單位管理制度集合大全【員工管理】十篇
- 單位管理制度集粹選集【人員管理】十篇
- 《中國(guó)心力衰竭診斷和治療指南(2024)》解讀完整版
- 單位管理制度匯編大全【職工管理】
- 單位管理制度合并選集職員管理
- 《電阻的串聯(lián)和并聯(lián)》課件
- 醫(yī)院感染質(zhì)量控制中心工作總結(jié)和計(jì)劃課件
- 第二章-地方理論-《旅游目的地管理》課件
- 河北省唐山市藥品零售藥店企業(yè)藥房名單目錄
- 監(jiān)考要求、操作流程及指導(dǎo)語(yǔ)
- 水上運(yùn)輸大型構(gòu)件安全交底
- 《保障農(nóng)民工工資支付條例》口袋書(shū)課件
- 2020 新ACLS-PCSA課前自我測(cè)試-翻譯版玉二醫(yī)【復(fù)制】附有答案
- 危險(xiǎn)化學(xué)品安全周知卡氧氣
- DB13∕T 5517-2022 大田作物病蟲(chóng)草害防控關(guān)鍵期植保無(wú)人飛機(jī)作業(yè)技術(shù)規(guī)程
- 《編譯原理》考試試習(xí)題及答案(匯總)
- 贏在執(zhí)行力:團(tuán)隊(duì)執(zhí)行力-下
評(píng)論
0/150
提交評(píng)論