




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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 語言能力,包括位操作、常用宏定義、數(shù)組、指針等常見內(nèi)容 C 會(huì)使用一種單片機(jī)D、熟悉 SPI 協(xié)議的物理原理E、XJTAG 的好奇和興趣JTAG 協(xié)議是目前應(yīng)用最廣泛的下載和仿真協(xié)議,對(duì)協(xié)議的最初締造者來說,這也許有點(diǎn)無心插柳柳成蔭的感覺一一最初的JTAGB議只是用來輔助專門的硬件質(zhì)檢部門對(duì)印刷電路進(jìn)行檢測(cè)的。這些老賬現(xiàn)不再提了我們現(xiàn)在看到的各種 JTAG 下載和仿真協(xié)議都是各生產(chǎn)廠商在原有 JTAG 協(xié)議的思想上進(jìn)行擴(kuò)充的,并不具有通用性,甚至連最基本的電路檢測(cè)部分功能也被加以改造一一比如,一個(gè) JTAG 旨令可能在大部分的版本中是 4 位長(zhǎng)度的,
2、而對(duì)于 AVR32 來說,一個(gè) JTAG 旨令卻是 5 位??傊?,現(xiàn)在大行其道的 JTAGW 議,不變的部分就只有其核心 TAP 狀態(tài)機(jī)了。ARM 有ARM 的 JTAGAVR 有 AVR 的 JTAG51 有 51 的 JTAG在這樣一個(gè)缺乏統(tǒng)一標(biāo)準(zhǔn)的街頭”JTAG 代,如果你想學(xué)好 JTAG 下載仿真協(xié)議的破解,就必須從 TAP 狀態(tài)機(jī)開始。原理解析在你被復(fù)雜的時(shí)序圖弄得眼花繚亂之前,你應(yīng)該首先記住以下的斷言:A、JTAG 協(xié)議的本質(zhì)與 SPI 協(xié)議并沒有什么不同,它等于一個(gè)復(fù)雜的 SS 狀態(tài)機(jī)+變長(zhǎng)的 MOSI 和 MISO 數(shù)據(jù)移位操作。不過所謂的變長(zhǎng),都是事先約定好的。B、JTAG
3、協(xié)議是一個(gè)同步通訊協(xié)議,它是全雙工的。它的通訊原則是以物易物一一一即你如果想得到某些東西,你必須先給與相同長(zhǎng)度的內(nèi)容;你如果只是想發(fā)送一些數(shù)據(jù),也會(huì)自動(dòng)獲取相同長(zhǎng)度的內(nèi)容,至于交換的內(nèi)容是否有意義,這是另外一回事了。CJTAG 協(xié)議無論多么復(fù)雜,實(shí)際上只有 4 根線起作用(有時(shí)候還有兩根雞肋的 nSRST和 TRST,他們分別是 TMS、 TCKTDI 和 TDO,他們分別對(duì)應(yīng) SPI 協(xié)議里面的 SSSCKMOSI 和 MISO。在本質(zhì)上,他們并沒有什么不同。即便是 ARM 的 JTAG 那么多的引腳,實(shí)際上起作用 JTAG 的也就這 4 根線而已。D、JTAG 的數(shù)據(jù)操作都是基于移位寄存器
4、的。E、如果 JTAG 協(xié)議在某個(gè)下載仿真協(xié)議中只是用來發(fā)送控制信息和少量的數(shù)據(jù),而大量的數(shù)據(jù)傳輸是通過額外的其它引腳進(jìn)行的,即便這個(gè)協(xié)議被稱為 JTAG 仿真其本質(zhì)也早已超過 JTAG 了,嚴(yán)格來說,不應(yīng)該稱之為 JTAG 因?yàn)?JTAG 協(xié)議中就只有 4 根線(有時(shí)候也算上 nSRSTSTRST 而已。典型的如 NEXUS 協(xié)議。說了這么多,我們終于可以開始正式的講解了。一、從 SPI 到 JTAG如果熟悉 SPI,你會(huì)發(fā)現(xiàn) SPI 是如此的簡(jiǎn)單、和諧一一一根用于二進(jìn)制位同步的時(shí)鐘線 SCK 一根用于主機(jī)發(fā)送到從機(jī)的數(shù)據(jù)線 MOSI(MasterOutSlaveIn),一根用于從機(jī)發(fā)送到主
5、機(jī)的數(shù)據(jù)線MISO(MasterInSlaveOut),外加一根用于復(fù)位SPI從機(jī)控制器以達(dá)到通訊同步的控制信號(hào) SS(不妨理解為 SlaveSynchronization)。如果樂意,你很容易就通過消減 MOSI 和 MISO 的方法獲得精簡(jiǎn)的單向通訊。前面我們提到,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(也就
6、是 SCK 的上升沿,TMS(也就是 SS)的電平?jīng)Q定了跳轉(zhuǎn)的分支。下圖就是一個(gè)典型的 TAP 狀態(tài)機(jī),值得慶幸的是,該狀態(tài)機(jī)所有 JTAG 協(xié)議中都會(huì)遵守的部分。7est-Logio-Pesot4Exh2-DRUpdate-tRz_如果這是你第一次研究 TAP 狀態(tài)機(jī),首先你不必去追究 TAP 究竟是哪些英文單詞的Select-DRScunSelocl-IRScanCaptjre-DRCapture-IRShifMRExi11-IRExi12-IRUpdate-IRRun-Tesllcle00Exi:1-DRFuse-DRPau&e-IR縮寫,因?yàn)?TestAccessPort 已經(jīng)
7、是過去很久的事情了,現(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 為低電平時(shí),進(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ù)
8、信道的通訊狀態(tài);否則保持不變。3、JTAGTAP 勺 Select-DRScan 狀態(tài)SelectDRScan 翻譯成中文就是選擇數(shù)據(jù)移位寄存器進(jìn)行移位操作”,簡(jiǎn)單說來,就是當(dāng)我們?cè)谠摖顟B(tài)下,TCK 的上升沿讀取到了 TMS 的低電平將直接進(jìn)入數(shù)據(jù)信道的操作子狀態(tài)機(jī);在 TCK 的上升沿讀取到了 TMS 的高電平,將切換到指令信道的通訊狀態(tài)。4、JTAGTAP 勺 Select-IRScan 狀態(tài)Select-IRScanO 譯成中文就是選擇指令寄存器進(jìn)行移位操作”,簡(jiǎn)單來說,就是當(dāng)我們?cè)谠摖顟B(tài)下,TCK 的上升沿讀取到了 TMS 的低電平將直接進(jìn)入指令信道的操作狀態(tài)機(jī);在 TCK 的上升沿讀
9、取到了 TMS 的高電平,將重新回到 JTAG 的復(fù)位狀態(tài)數(shù)據(jù)信道和指令信道對(duì)應(yīng)著兩個(gè)子狀態(tài)機(jī),從本質(zhì)上數(shù)據(jù)和指令并沒有任何不同,只是習(xí)慣上,指令的長(zhǎng)度固定為 4 個(gè)二進(jìn)制位(AVR32 的 JTAG 是 5 個(gè)),而數(shù)據(jù)則隨著不同的指令選擇了不同長(zhǎng)度的指令寄存器,這個(gè)就需要具體查閱相關(guān)的協(xié)議說明了,比如 JTAGIDCODE 的長(zhǎng)度固定為 32 位,而 AVR32 的復(fù)位指令卻有 5 位(很多情況下別指望是 8 的倍數(shù))。根據(jù)閱讀前面選擇部分 4 個(gè)狀態(tài)機(jī)”的經(jīng)驗(yàn),大家應(yīng)該對(duì)照著圖片自己嘗試去理解剩下的兩個(gè)信道。下面,我只就常見的幾個(gè)狀態(tài)進(jìn)行解釋(以數(shù)據(jù)信道為例,指令信道可以參考其內(nèi)容)。1
10、、CaptureDR 狀態(tài)前文說過,JTAG 協(xié)議是基于移位寄存器的,其通訊具有以物易物”的特性,在我們進(jìn)入真正的數(shù)據(jù)傳輸之前,需要告知 JTAG 準(zhǔn)備通訊了哦?你有沒有東西要給我哈?”,于是 CaptureDR 就是一個(gè)給 JTAGB 會(huì)將需要傳達(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)大家注意,我所
11、說的是不確定,而不是很嚴(yán)重”:同樣是因?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)該將TCK 跳變?yōu)樯仙貢r(shí),系統(tǒng)既完成了最后一個(gè)數(shù)據(jù)的傳輸,3、ExitlDR 狀態(tài)該狀態(tài)提供了我們一個(gè)在剛才輸入的數(shù)據(jù)生效前,TMS 設(shè)置為高電平,這樣,當(dāng)也成功
12、的退出了 ShiftDR 狀態(tài)。重新修改的機(jī)會(huì)。一般情況下,我們直接保持 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) 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),表
13、示完成了一個(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)用在 SnailmkIIDE
14、MO 中用來操作 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-IRScan),一共四個(gè)二進(jìn)制位,根據(jù)從 LSB 至 ijMSB 依次發(fā)送的順序,需要傳送給函數(shù)的值就是 0 x03,長(zhǎng)度為4。需要注意的是,進(jìn)入 Shift-IR 狀態(tài)以后,有可能要設(shè)置此時(shí)的需要 TMS 保持的電平狀態(tài), 因此
15、, 實(shí)際傳送的 0 x03 其內(nèi)容應(yīng)該是 11000,最后一個(gè) 0 表示完成前面 4 個(gè) TMS 時(shí)序的輸入以后,TMS 保持低電平。最后一個(gè) 0 不計(jì)入長(zhǎng)度。1.16. voidJTAG_TAP_Control(UINT8chCTRStream,UINT8chLength)17. (18. UINT8n=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_TMS2./*15.*/31
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.#defineJTAG_TAP_TEST_LOGIC_RESETJTAG_TAP_Control(0 x1F,6);3.#defineJTAG_TAP_
17、SHIFT_IRJTAG_TAP_Control(0 x03,4);4.#defineJTAG_TAP_RETURN_RUN_TEST_IDELJTAG_TAP_Control(0 x01,2);5.#defineJTAGTAPENTERSHIFTDRFROMSHIFTIRJTAGTAPControl(0 x03,4);6.#defineJTAG_TAP_SHIFT_DRJTAG_TAP_Control(0 x01,3);7.復(fù)制代碼工程實(shí)例Step1:首先我們要下載一個(gè) JTAG 時(shí)序分析軟件 JTAGHacker點(diǎn)擊此處下載 ourdev496456.rar(文件大?。?35K)(原文彳名:上位機(jī).rar)Step2:我們要下載一個(gè)示例時(shí)序文件 EnterPDI.JTG點(diǎn)擊此處下載 ourdev496458.rar(文件大?。?04 字節(jié))(原文彳名:EnterPDI.rar)Step3:打開軟件 JTAGHacke從文件菜單中選擇打開-EnterPDI.JTAG 如圖所示。Step4:單擊清除”按鈕來復(fù)位整個(gè)分析期,依次單擊單步分析”按鈕,觀察左邊的 TAP 狀態(tài)機(jī),對(duì)口 JTAGLog 中的說明,觀察時(shí)序波形,理解 TAP 狀態(tài)機(jī)的操作流程。Step5:如果你脫離波形文件直接研究 TAP 狀態(tài)機(jī),可以通過最
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲化教學(xué)在小學(xué)語文低年段識(shí)字中的應(yīng)用與效果研究論文
- 花園及菜園管理制度
- 茶具洗消間管理制度
- 草莓收購點(diǎn)管理制度
- 苗木銷售合同 (一)
- 財(cái)務(wù)會(huì)計(jì)工作計(jì)劃 (七)
- 課程計(jì)劃與課程標(biāo)準(zhǔn)
- 計(jì)算流體力學(xué)網(wǎng)格生成方法閱讀筆記
- 湖北省孝感市安陸市2024-2025學(xué)年七年級(jí)下學(xué)期期中道德與法治試題(含答案)
- 自動(dòng)控制理論課程設(shè)計(jì)課程教學(xué)大綱
- 贛州市贛縣縣鄉(xiāng)鎮(zhèn)街道社區(qū)行政村統(tǒng)計(jì)表
- 臨邊作業(yè)的安全防護(hù)
- 第講-公路工程基本建設(shè)項(xiàng)目概算預(yù)算編制辦法
- 影視文學(xué)教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)
- 強(qiáng)對(duì)流天氣的中尺度分析課件
- 固定污染源排污登記表(樣表)
- 城市雕塑藝術(shù)工程量清單計(jì)價(jià)定額2020版
- T∕CGMA 033002-2020 壓縮空氣站節(jié)能設(shè)計(jì)指南
- 住宅景觀水系的維護(hù)及設(shè)計(jì)優(yōu)化
- 水利水能規(guī)劃課程設(shè)計(jì)計(jì)算書
- 蛇形管制造典型工藝
評(píng)論
0/150
提交評(píng)論