版權(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、對(duì)jtag的好奇和興趣jtag協(xié)議是目前應(yīng)用最廣泛的下載和仿真協(xié)議,対協(xié)議的最初締造者來(lái)說(shuō),這也許 有點(diǎn)無(wú)心插柳柳成蔭的感覺(jué)一一最初的jtag協(xié)議只是用來(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ō),
2、一個(gè)jtag指 令卻是5位??傄椰F(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ī)開(kāi)始。原理解析在你被復(fù)雜的時(shí)序圖弄得眼花繚亂z前,你應(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和misoo在木質(zhì)上,他們并沒(méi)有什么不同。即便是arm的jtag那么多的引腳, 實(shí)際上起作用jtag的也就這4根線而已。d、jtag的數(shù)據(jù)操作都是基于移位寄存器的。e、如果jtag協(xié)議在某個(gè)下載仿真協(xié)議中只是用來(lái)發(fā)送控制信息和
4、少量的數(shù)據(jù),而大 量的數(shù)據(jù)傳輸是通過(guò)額外的具它引腳進(jìn)行的,即便這個(gè)協(xié)議被稱(chēng)為jtag仿真其本質(zhì)也早 已超過(guò)jtag 7 ,嚴(yán)格來(lái)說(shuō),不應(yīng)該稱(chēng)之為jtag。因?yàn)閖tag協(xié)議屮就只有4根線(有時(shí) 候也算上nsrst和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 (masterln slave out),外加一根用于復(fù)位spi從
5、機(jī)控制器以達(dá) 到通訊同步的控制信號(hào)ss (不妨理解為slave synchronization)o如果圧意,你很容易就通過(guò)消減mosi和miso的方法獲得精簡(jiǎn)的單向通訊。前面我們提到,jtag的數(shù)據(jù)操作都是基于移位寄存器的,這一點(diǎn)和spi是相同的。 jtag i-辦議的核心在于能夠有效地傳輸指令和數(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è)典型的t
6、ap狀態(tài)機(jī),值得慶幸的是,該狀態(tài)機(jī)所有jtag協(xié)議中都會(huì)遵 守的部分。如果這是你笫一次研究tap狀態(tài)機(jī),首先你不必去追究tap究竟是哪些英文單詞的 縮寫(xiě),因?yà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的上升沿,tms為低電平
7、時(shí),進(jìn)入下一個(gè)狀態(tài);否則保持不變。2、jtag tap 的 run-test/ldle 狀態(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 scan 狀態(tài)selec
8、t-irscan翻譯成中文就是選擇指令寄存器進(jìn)行移位操作,簡(jiǎn)單來(lái)說(shuō),就是 當(dāng)我們?cè)谠摖顟B(tài)下,tck的上升沿讀取到了 tms的低電平將直接進(jìn)入指令信道的操作狀 態(tài)機(jī);在tck的上升沿讀取到了 tms的高電平,將重新回到j(luò)tag的復(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的倍數(shù))。根據(jù)閱讀前血“選擇部
9、分4個(gè)狀態(tài)機(jī)的經(jīng)驗(yàn),大家應(yīng)該対照著圖片自 己嘗試去理解剩下的兩個(gè)信道。下面,我只就常見(jiàn)的兒個(gè)狀態(tài)進(jìn)行解釋?zhuān)ㄒ詳?shù)據(jù)信道為例,指令信道可以參考其內(nèi)容)。capture dr 狀態(tài)前文說(shuō)過(guò),jtag協(xié)議是基于移位寄存器的,其通訊具有"以物易物的特性,在我 們進(jìn)入真正的數(shù)據(jù)傳輸之而,需要告知jtag“準(zhǔn)備通訊了哦?你有沒(méi)有東西要給我哈? “, 于是capture dr就是一個(gè)給jtag機(jī)會(huì)將需要傳達(dá)給我們的數(shù)據(jù)放入指定的移位寄存器 屮的狀態(tài)。2、shift dr 狀態(tài)這個(gè)狀態(tài)就是通過(guò)tdi和td0進(jìn)行數(shù)據(jù)傳輸?shù)臓顟B(tài)。需要說(shuō)明的是,即便進(jìn)入了 該狀態(tài),tms上的電平在tck的上升沿也是會(huì)被讀取
10、的,從圖中看到,一旦在tms ± 讀取到高電平,系統(tǒng)就會(huì)跳出shift dr狀態(tài)如果此時(shí)數(shù)據(jù)沒(méi)有傳輸完成,造成的示果是不確定的。請(qǐng)人家注意,我所說(shuō)的是不 確定,而不是“很?chē)?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)致很?chē)?yán)重的后果,這取決于具體的jtag通 訊協(xié)議。所以,為了保險(xiǎn)起見(jiàn),一旦進(jìn)入shift dr狀態(tài),在發(fā)送最后一個(gè)數(shù)據(jù)之而,請(qǐng) 保持tms為低電平,當(dāng)要發(fā)送最后一個(gè)數(shù)據(jù)時(shí),應(yīng)該將tms設(shè)置為高
11、電平,這樣,當(dāng) tck跳變?yōu)樯仙貢r(shí),系統(tǒng)既完成了最后一個(gè)數(shù)據(jù)的傳輸,也成功的退出了 shift dr狀態(tài)。3、exitl dr 狀態(tài)該狀態(tài)提供了我們一個(gè)在剛才輸入的數(shù)據(jù)生效前,重新修改的機(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/ldle,還冇一個(gè)是tms的高電平對(duì)應(yīng)的select-dr s
12、can0這兩個(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/ldel狀態(tài)呢?給一個(gè)小小 的捉示,針對(duì)tap狀態(tài)機(jī)的tms信號(hào),給定固定的電平,在有限的tck上升沿屮,完成 狀態(tài)機(jī)的復(fù)位。那么這個(gè)有限的范i韋i最少是多
13、少個(gè)時(shí)鐘周期?這個(gè)固定的電平究竟是高還是低呢?實(shí)際應(yīng)用卜面的代碼是我應(yīng)用在snail mkll demo屮川來(lái)操作tap狀態(tài)機(jī)的實(shí)際代碼,它根據(jù) 用戶(hù)輸入的tap控制流,產(chǎn)生tap控制時(shí)序,比如我們需要從run-test/ldle狀態(tài)進(jìn)入 shifmr狀態(tài),根據(jù)tap狀態(tài)圖,我們很容易得出盂要產(chǎn)生的tms信號(hào)依次為1(進(jìn)入select dr scan) 1 (進(jìn)入 select ir scan) 0 (進(jìn)入 capture ir) 0 (進(jìn)入 shift-irscan), 一共卩4個(gè) 二進(jìn)制位,根據(jù)從lsb到msb依次發(fā)送的順序,需要傳送給函數(shù)的值就是0x03,長(zhǎng)度為 4o需要注意的是,進(jìn)入s
14、hift-ir狀態(tài)以后,有可能要設(shè)置此時(shí)的需要tms保持的電平狀 態(tài),因此,實(shí)際傳送的0x03其內(nèi)容應(yīng)該是1 1000,最示一個(gè)0表示完成前而4個(gè)tms 時(shí)序的輸入以后,tms保持低電平。蝕后一個(gè)0不計(jì)入t度。1.2.3.4.5.6.*函數(shù)說(shuō)叨:jtag tap狀態(tài)機(jī)控制函數(shù)*輸入:控制序列,序列長(zhǎng)度*輸出: 無(wú)*調(diào)用函數(shù):無(wú)7. *8. *9. *10. *11. *12. *13. *14. *使用說(shuō)明*1、tms在tck上升邊沿輸出狀態(tài)控制量。*2、連續(xù)5個(gè)tck周期在tms上輸出高電平將進(jìn)入test- *logic-reset 模式。*3、使用該函數(shù)時(shí),請(qǐng)將狀態(tài)機(jī)跳轉(zhuǎn)以后tms需要保*
15、 持的電平也作為一個(gè)有效輸入加入到序列的末尾* 但描述序列長(zhǎng)度的數(shù)值不需要相應(yīng)的增加。*15.*/16. void jtag_tap_control(uint8 chctrstream,uint8 chlength)17. 18. uint8 n = 0;19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48. 49.復(fù)制代碼狀態(tài)機(jī)控制序列for (n = 0;n < chlength;n+)clr_tckif (chctrstream& bit(n
16、)set_tmselseclr_tmsjtag_clock_delayset_tck/*延時(shí)部分*/jtag_clock_delay保持電平if (chctrstream& bit(chlength) set_tmselseclr_tms為了方便使用,我們可以將一些常用的tap操作川宏進(jìn)行封裝,從而獲得較高的代碼可讀性:12. # define jtag_tap_test_logic_resetjtag_tap_control(0xlf,6);3. # define jtag_tap_shift_irjtag_tap_control(0x03,4);4. # define jtag_tap_return_run_test_ideljtag_tap_control(0x01,2);5. # define jtag_tap_enter_shift_dr_from_shift_ir jtag_tap_control(0x03,4);6. # define jtag_tap_shift_drjtag_tap_control(0x01,3);復(fù)制代碼 工程實(shí)例step 1:首先我們耍卜載一個(gè)jtag時(shí)序分析軟件jtag hacker點(diǎn)擊此處卜載ourdev 496456.rar(文件人小:235k)(原文件名:上位機(jī).rar)step 2:我們要下載一個(gè)示例時(shí)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)械合同范例蓋章要求
- 個(gè)人轉(zhuǎn)讓裝載機(jī)合同范例
- 合伙開(kāi)店酒館合同范例
- 廠房裝修搬運(yùn)合同范例
- 小區(qū)車(chē)位租憑合同范例
- 服裝個(gè)人定制合同范例
- 房產(chǎn)中介房屋購(gòu)買(mǎi)合同范例
- 同煤集團(tuán)合同范例
- 委托培訓(xùn)員工合同范例
- 房屋維修承攬合同范例
- 阿里JAVA編碼規(guī)范手冊(cè)
- PMC知識(shí)培訓(xùn)課件
- 基于PLC的砂石加工控制系統(tǒng)設(shè)計(jì)
- 魯教版初三物理-質(zhì)量和密度復(fù)習(xí)題及答案
- 計(jì)算機(jī)操作系統(tǒng)題庫(kù)(答案)
- 廚房設(shè)施設(shè)備檢查表
- 阿托品化課件
- 婚育情況登記表
- 《休閑學(xué)概論》課后習(xí)題參考答案
- 第2課時(shí) 閱讀策略:設(shè)計(jì)朗讀的重音停連-作業(yè)評(píng)價(jià)單-2022-2023學(xué)年七年級(jí)語(yǔ)文上冊(cè)(部編版)
- 小學(xué)綜合實(shí)踐六年級(jí)上冊(cè)第4單元《主題活動(dòng)三:校園文化活動(dòng)我參與》教案
評(píng)論
0/150
提交評(píng)論