一種嵌入式系統實現的JTAG調試器
JTAG 作為一個通用的標準器件功能測試接口, 具有靈活高效、易于實現等優點, 是微控制器、微處理器、DSP、SoC 等器件的重要外部接口。它不但可以用來測試內部功能模塊狀態, 而且可以實現在線調試(ICE)功能。arm系列處理器正是通過JTAG 接口使用內部集成的ICE 功能, 并采用這種方式實現在線調試。此外CPLD、FPGA 等器件大多都可以使用JTAG 接口實現在線編程或下載。因此,JTAG 接口已經成為復雜芯片系統的必備接口, 在芯片測試、調試及實現其他特殊功能方面發揮著重要作用。
本文引用地址:http://www.j9360.com/article/152297.htm基本原理
JTAG 標準即IEEE 1149.1 標準。聯合測試行動組JTAG(Joint Test Action Group )起草了邊界掃描測試BST(Boundary Scan Testing)規范, 該標準為數字集成電路規定了一個測試訪問口(TAP)和邊界掃描結構,解決了由于數字電路高度集成化帶來的一些測試難題。它還提供了一種訪問和控制芯片內部仿真(ICE) 模塊的方法, ICE 模塊一般包括內部掃描和自測試的功能, 可以很好地支持集成電路的開發。
JTAG標準工作原理
邊界掃描技術的基本思想是在靠近芯片的輸入輸出管腳增加一個移位寄存器單元。通過這些邊界掃描寄存器單元,可以實現對芯片輸入輸出信號的觀察和控制。另外, 靠近芯片輸入輸出管腳的邊界掃描(移位) 寄存器單元可以相互連接起來,在芯片的周圍形成一個邊界掃描鏈(Boundary- Scan Chain) .一般的芯片都會提供幾條獨立的邊界掃描鏈, 用來實現完整的測試功能。
在JTAG標準中, 寄存器被分為兩大類: 數據寄存器(DR- Data Register)和指令寄存器(IR- Instruction Register),邊界掃描鏈寄存器即為一種很重要的數據寄存器,邊界掃描鏈可用來觀察和控制芯片的輸入輸出。指令寄存器用來實現對數據寄存器的控制。TAP 是一個通用的端口, 通過TAP 可以訪問芯片提供的所有數據寄存器和指令寄存器, 對整個TAP的控制是通過TAP控制器完成的。TAP包括5個信號接口: (1)TCK(Test Clock), 為TAP操作提供了一個獨立的基本的時鐘信號。(2)TMS(Test-Mode Selector) ,用來控制TAP狀態機的轉換。(3)TDI(TestData Input), 是JTAG指令和數據的串行輸入端。在TCK的上升沿被采樣,結果送到JTAG寄存器中。(4)TDO(Test Data Output),是JTAG指令和數據的串行輸出端。在TCK的下降沿被輸出到TDO.(5)TRST, 是JTAG電路的復位輸入信號, 低電平有效。
通過TAP控制器的狀態轉移即可實現對數據寄存器和指令寄存器的訪問, 從而實現對JTAG測試電路的控制。TAP控制器共有16 種狀態。通過測試模式選擇TMS 和時鐘TCK可控制狀態的轉移。
指令寄存器允許特定的指令被裝載到指令寄存器當中, 用來選擇需要執行的測試,或者選擇需要訪問的測試數據寄存器。每個支持JTAG調試的芯片必須包含一個指令寄存器。JTAG標準要求芯片支持的基本指令有:EXTEST、 INTEST、SAMPLE/PRELOAD、BYPASS、HIGHZ等。
arm7TDMI調試原理
從功能上看, arm7TDMI 處理器主要包括三大部分:
(1)arm CPU Main Processor Logic , 包括了對調試的硬件支持; (2)嵌入式ICE- RT Logic , 包括了一組寄存器和比較器, 用來產生調試異常、設置斷點和觀察點; (3)TAP控制器, 它通過JTAG接口控制和操作掃描鏈。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論