一、jtag的基本知識(shí)
jtag是joint test action group的縮寫(xiě),是ieee 1149.1標(biāo)準(zhǔn)。使用jtag的優(yōu)點(diǎn):jtag的建立使得集成電路固定在pcb上,只通過(guò)邊界掃描便可以被測(cè)試。在arm7tdmi處理器中,可以通過(guò)jtag直接控制arm的內(nèi)部總線(xiàn)、i/o口等信息,從而達(dá)到調(diào)試的目的。
二、arm的jtag調(diào)試結(jié)構(gòu)
(1)debug主控(host)通常是運(yùn)行有arm公司或者第三方提供的調(diào)試軟件的pc機(jī),常用的調(diào)試軟件有armsdt中的arm debug for windows(adw)、linux下的arm-elf-gdb等。通過(guò)這些調(diào)試軟件,可以發(fā)送高級(jí)的arm調(diào)試命令,如設(shè)置斷點(diǎn)、讀寫(xiě)存儲(chǔ)器、單步跟蹤、全速運(yùn)行等。
(2)協(xié)議轉(zhuǎn)換器(protocol converter)負(fù)責(zé)轉(zhuǎn)換debug主控端發(fā)出的高級(jí)arm調(diào)試命令為底層的和arm內(nèi)核通信的jtag命令。debug主控端和協(xié)議轉(zhuǎn)換器之間的介質(zhì)可以有很多種,比如以太網(wǎng)、usb、rs-232、并口等。debug主控端和協(xié)議轉(zhuǎn)換器之間的通信協(xié)議最典型的就是arm公司提供的angel標(biāo)準(zhǔn),也可以是第三方廠家自己定義的標(biāo)準(zhǔn)。關(guān)于angel的協(xié)議,可參考armsdt和ads的相關(guān)文檔。典型的協(xié)議轉(zhuǎn)換器有:arm公司的multi-ice、abatron公司的bdi、aiji公司的openlce32、epi公司的jeeni等。
(3)arm7tdmi的jtag宏單元(macrocell)主要包括3條jtag掃描鏈(scan chain) 和1個(gè)jtag的控制tap狀態(tài)機(jī)。
三、arm7tdmi內(nèi)核的jtag掃描鏈結(jié)構(gòu)
arm7tdmi內(nèi)核的jtag掃描鏈結(jié)構(gòu)主要包括3條jtag掃描鏈:scan chain0、scan chain 1、scan chain2。
四、arm7tdmi中通過(guò)jtag對(duì)外設(shè)的訪問(wèn)
作為arm典型的調(diào)試手段,jtag除了可以設(shè)置arm的斷點(diǎn)以外,還可以對(duì)arm的內(nèi)核進(jìn)行控制,從而實(shí)現(xiàn)對(duì)外圍設(shè)備的讀/寫(xiě)(比如下載程序到ram或者flash空間)。通常在arm7tdmi處理器中,jtag對(duì)arm外圍設(shè)備的訪問(wèn)是通過(guò)對(duì)jtag掃描鏈1的控制實(shí)現(xiàn)的。