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

          新聞中心

          EEPW首頁 > 消費電子 > 32位ARM嵌入式處理器的調試技術

          32位ARM嵌入式處理器的調試技術

          ——
          作者: 時間:2007-04-18 來源: 收藏

          摘要:針對32位ARM處理器開發(fā)過程中調試技術的研究,分析了目前比較流行的基于JTAG的實時調試技術,介紹了正在發(fā)展的嵌入式調試標準,并展望期趨勢。 

             關鍵詞:嵌入式 調試 處理器 JTAG Nexus ARM
          隨著對高處理能力、實時多任務、網絡通信、超低功耗需求的增長,傳統(tǒng)8位機已遠遠滿足不了新產品的要求,高端嵌入式處理器已經進入了國內開發(fā)人員的視野,并在國內得到了普遍的重視和應用。ARM內核系列處理器是由英國ARM公司開發(fā)授權給其他芯片生產商進行生產的系統(tǒng)級芯片。目前在嵌入式32位處理器市場中已經達到70%的份額。筆者在對三星公司的ARM7芯片技術調試的過程中,對這些高端的調試技術進行了總結。
          傳統(tǒng)的調試工具及方法存在過分依賴芯片引腳、不能在處理器高速運行下正常工作、占用系統(tǒng)資源且不能實時跟蹤和硬件斷點、價格過于昂貴等弊端。目前嵌入式高端處理器的使用漸趨普及。這些處理器常常運行在100MHz,并且一些內部控制以及內部存儲器的總線信號并不體現(xiàn)在外部引腳上。這種片上系統(tǒng)(System on Chip)、深度嵌入、軟件復雜的發(fā)展趨勢給傳統(tǒng)的調試工具帶來了極大的挑戰(zhàn),也給嵌入式處理器開發(fā)工程師的工作帶來了不便,這就需要更先進的調試技術和工具進行配套。本文將詳細介紹在ARM處理器中采用的幾種片上調試技術(on-chip debugger)。這些片上調試技術通過在芯片的硬件邏輯中加入調試模塊,從而能夠降低成本,實現(xiàn)傳統(tǒng)的在線和邏輯分析儀器的功能,并在一定的條件下實現(xiàn)實時跟蹤和分析,進行軟件代碼的優(yōu)化。

          1 邊界掃描技術(JTAG)
          邊界掃描技術是為了滿足當今深度調試的需要而被IEEE1149.1標準所采納,全稱是標準測試訪問接口與邊界掃描結構(Standard Test Access Portand Boundary Scan Architecture)。JTAG遵循1149.1標準,是面向用戶的測試接口,是ARM處理器調試的基礎。本文提到的ARM的E-TRACE調試模式實際上是JTAG的增強版本,其它一些32位嵌入式處理器的調試方式也基本上遵循這個標準。這個用戶接口一般由4個引腳組成:測試數(shù)據(jù)輸入(TDI)、測試數(shù)據(jù)輸出(TDO)、測試時鐘(TCK)、測試模式選擇引腳(TMS),有的還加了一個異步測試復位引腳(TRST)。其體系結構如圖1。
          所謂邊界掃描就是將芯片內部內科所有的引腳通過邊界掃描單元(BSC)串接起來,從JTAG的TDI引入,TDO引出。芯片內的邊界掃描鏈由許多的BSC組成,通過這些掃描單元,可以實現(xiàn)許多在線的功能。根據(jù)1149.1的規(guī)定,芯片內的片上調試邏輯通常包括一個測試訪問接口控制器(TAP)。它是一個16狀態(tài)的有限狀態(tài)機以及測試指令寄存器、數(shù)據(jù)寄存器、旁路寄存器和芯片標識寄存器等。在正常模式下,這些測試單元(BSC)是不可見的。一旦進入調試狀態(tài),調試指令和數(shù)據(jù)從TDI進入,沿著測試鏈通過測試單元送到芯片的各個引腳和測試寄存器中,通過不同的測試指令來完成不同的測試功能。包括用于測試外部電氣連接和外圍芯片功能的外部模式以及用于芯片內部功能測試(對芯片生產商)的內部模式,還可以訪問和修改CPU寄存器和存儲器,設置軟件斷點,單步執(zhí)行,下載程序等。其優(yōu)點如下:



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();