<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種嵌入式系統(tǒng)實(shí)現(xiàn)的JTAG調(diào)試器

          一種嵌入式系統(tǒng)實(shí)現(xiàn)的JTAG調(diào)試器

          作者: 時間:2009-11-05 來源:網(wǎng)絡(luò) 收藏

          ARM7TDMI 提供了4 條掃描鏈, 分別是掃描鏈0、1、2 和3.通過掃描鏈0可以訪問arm7TDMI內(nèi)核的外圍電路,包括數(shù)據(jù)總線。該掃描鏈長度為113位, 具體包括數(shù)據(jù)總線的0 ̄31位、內(nèi)核控制信號、地址總線的0 ̄31 位、ICE -RT的控制信號等。掃描鏈1是掃描鏈0的子集, 長度為33位,具體包括數(shù)據(jù)總線的0 ̄31位和BREAKPT信號,掃描鏈1比掃描鏈0的長度短了很多,通過掃描鏈1可以更快地將指令或數(shù)據(jù)插入到ARM7TDMI的內(nèi)部。掃描鏈2長度為38位, 該掃描鏈專門用來訪問ICE-RT內(nèi)部的寄存器, 通過訪問ICERT的內(nèi)部寄存器,可以讓ARM7TDMI進(jìn)入調(diào)試狀態(tài)、設(shè)置斷點(diǎn)、設(shè)置觀察點(diǎn)。通過掃描鏈3, arm7TDMI可以訪問外部的邊界掃描鏈, 該掃描鏈用得很少。

          ARM7TDMI 的調(diào)試狀態(tài)和正常運(yùn)行狀態(tài)是有區(qū)別的。在正常運(yùn)行狀態(tài)下, ARM7TDMI 由MCLK( MemoryClock)驅(qū)動, 正常運(yùn)行。在調(diào)試狀態(tài)下, ARM7TDMI的正常運(yùn)行被打斷,并且和的其他部分隔離開來??梢酝ㄟ^掃描鏈插入特定的ARM/THUMB指令來讀寫ARM7TDMI的內(nèi)部寄存器和修改內(nèi)存的內(nèi)容。在完成需要的操作后,可以用RESTART 指令讓arm7TDMI返回到正常運(yùn)行狀態(tài),恢復(fù)原來的運(yùn)行。

          的嵌入式

          硬件是以基于ARM7芯片的嵌入式的。該系統(tǒng)以帶以太網(wǎng)接口的arm芯片S3C4510B為核心處理器, 以μClinux為嵌入式操作系統(tǒng)。JTAG軟件主要包括兩部分: JTAG調(diào)試器與目標(biāo)機(jī)的接口模塊和與調(diào)試主機(jī)的接口模塊。

          嵌入式系統(tǒng)設(shè)計

          設(shè)計并制作標(biāo)準(zhǔn)的S3C4510B應(yīng)用系統(tǒng), 主要配置為2MBFLASH、16MBSDRAM、10/100Mbps 自適應(yīng)以太網(wǎng)口、終端接口、并行I/O 接口等。利用S3C4510B 的通用I/O口中的P[4]、P[5]、P[6]、P[8]分別模擬JTAG標(biāo)準(zhǔn)中TAP的4個信號接口, 即TCK、TMS、TDI、TDO.

          從軟件上看, 需要將μClinux 操作系統(tǒng)移植到設(shè)計制作的基于S3C4510B的JTAG調(diào)試器硬件平臺上,以便開發(fā)基于網(wǎng)絡(luò)的調(diào)試器軟件。μCLinux是為沒有內(nèi)存管理單元(MMU)的處理器設(shè)計的一種嵌入式操作系統(tǒng),它繼承了桌面Linux的強(qiáng)大網(wǎng)絡(luò)功能,其內(nèi)核采用模塊化的組織結(jié)構(gòu),通過增減內(nèi)核模塊的方式來增減系統(tǒng)的功能。

          通常,在PC機(jī)上通過并口模擬JTAG時序,也可以按照標(biāo)準(zhǔn)仿真器設(shè)計JTAG調(diào)試器。與上述方案不同,本設(shè)計采用開放源代碼軟件設(shè)計JTAG調(diào)試器應(yīng)用軟件,主要參考了Open- JTAG小組開發(fā)的通過PC機(jī)并口JTAG操作的軟件jtager - 1.0.0,將其中對PC 機(jī)并口的操作改為對S3C4510B口線的操作,通過設(shè)置S3C4510B的通用I/O口模式寄存器IOPMOD 的值可將P[4]、P[5]、P[6]設(shè)置為輸出模式,將P[8]設(shè)置為輸入模式,然后通過編程設(shè)置I/O口數(shù)據(jù)寄存器IOPDATA的值,控制P [4]、P[5]、P[6]、P[8]的狀態(tài)實(shí)現(xiàn)JTAG標(biāo)準(zhǔn)要求的時序。隨后,根據(jù)arm7TDMI調(diào)試特性,修改操作代碼,增加通過網(wǎng)絡(luò)的遠(yuǎn)程調(diào)試功能。

          arm7TDMI的JTAG指令實(shí)現(xiàn)

          ARM7TDMI 的指令寄存器長度是4位, 通過TAP和JTAG接口, 可以把指令裝載到指令寄存器中。在CAPTURE-IR狀態(tài)下, 固定值B0001總是被裝載到指令寄存器中。在SHIFT- IR狀態(tài)下, 可以把a(bǔ)rm7TDMI支持的新指令從TDI串行輸入,同時固定值B0001會從TDO 串行輸出。通過輸出的這個固定值,可以判斷當(dāng)前的操作是否正確。在UPDATE- IR狀態(tài)下, 新輸入的指令被裝載到指令寄存器中。在回到RUN- TEST/IDLE狀態(tài)后,新指令立即生效。

          IDCODE和SCAN_N是ARM7TDMI調(diào)試中經(jīng)常用到的JTAG命令。IDCODE命令的二進(jìn)制代碼是1110.IDCODE命令將Device Identification Code寄存器連接到TDI和TDO之間。Device Identification Code寄存器的長度是32 位,通過TAP可以讀到ARM7TDMI的ID.SCAN_N命令的二進(jìn)制代碼是0010.arm7TDMI 提供了4 條掃描鏈,通過SCAN_N指令可以選擇需要訪問的掃描鏈。選擇掃描鏈的過程是:先把SCAN_N指令裝載到指令寄存器中,該指令會將長度為4位的掃描鏈選擇寄存器連接到TDI和TDO之間;通過TAP狀態(tài)的轉(zhuǎn)移便可使選擇的掃描鏈連接到TDI和TDO之間。

          另外BYPASS、INTEST、RESTART等JTAG指令的實(shí)現(xiàn)方法與上面兩條指令的實(shí)現(xiàn)方法類似。

          嵌入式ICE- RT邏輯實(shí)現(xiàn)

          嵌入式ICE- RT是arm處理器內(nèi)部集成的在線仿真功能模塊,通過JTAG調(diào)試接口與外界交互,其中包含的常用寄存器。

          要訪問嵌入式ICE- RT內(nèi)部的寄存器,可通過掃描鏈2對Debug Control Register進(jìn)行訪問。實(shí)現(xiàn)過程:通過TAP將SCAN_N指令寫入JTAG指令寄存器中,通過TDI將數(shù)值2寫到掃描鏈選擇寄存器中,即選擇了掃描鏈2,在通過掃描鏈2訪問任何嵌入式ICE- RT內(nèi)部寄存器之前,還需要用INTEST指令將當(dāng)前通過SCAN_N指令選擇的掃描鏈置為內(nèi)部測試狀態(tài)。寫入INTEST指令的過程和寫入SCAN_N 指令的過程類似。接下來就可以通過掃描鏈2訪問嵌入式ICE- RT內(nèi)部寄存器,實(shí)現(xiàn)對arm7TDMI的基本調(diào)試功能。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();