a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 一種嵌入式系統實現的JTAG調試器

一種嵌入式系統實現的JTAG調試器

作者: 時間:2009-11-05 來源:網絡 收藏

arm7TDMI寄存器和內存訪問的

邊界掃描鏈分布在ARM7TDMI的32位數據總線的周圍, arm7TDMI每次取指令或者進行數據存儲時都要通過32位數據總線進行。這樣, 通過邊界掃描鏈1, 就可以插入新指令或者新數據, 同時也可以捕獲出現在數據總線上的數據。通過這種方式, 可以檢查和修改arm7TDMI的通用寄存器和內存。

以讀取寄存器R0 的值為例, 介紹邊界掃描鏈1 的操作過程。

讀取寄存器R0的值可以用指令STR R0, [R0] ( 機器碼為0xE5800000) 來。該指令可將寄存器R0 的值存儲到內存單元R0中去。因為在ARM7TDMI處于調試狀態時, ARM7TDMI和外部是隔離開的, 所以該指令實際上不能訪問內存單元,也不會對內存單元產生任何影響。使用指令STR R0, [R0]可使得寄存器R0的值出現在數據總線上, 這樣就可以通過掃描鏈1將其捕獲,然后從TDO輸出。指令STR R0, [R0]的執行需要兩個指令執行周期。在第一個指令執行周期, 執行地址計算; 在第二個指令執行周期,將寄存器R0的值放到數據總線上去。對arm寄存器寫操作及訪問內存的方法與此類似,都是通過掃描鏈1, 只是所使用的指令不同而已。

網絡編程

通過網絡編程, 可以對目標遠程調試。網絡通信通過μClinux下的socket編程實現,首先PC(調試主機)通過網絡向仿真器發送命令, 仿真器通過統一的程序接口分析調試命令, 并將調試命令轉換成標準所要求的時序,通過I/O口線發送到目標板; 然后目標板執行命令,并將命令執行后得到的調試信息返回給仿真器, 接著仿真器將調試信息通過網絡發送給PC,這樣用戶在PC上便得到了調試信息。

測試及部分執行結果

本設計最終完成了一種在Linux終端下操作的上電后便在μClinux 下自動運行調試器客戶端程序, 同時在PC的Cygwin環境下運行JTAG調試器服務器端程序jtager , 建立網絡連接。然后在Cygwin下鍵入用戶調試命令, 執行下列操作: (1)寫目標板上的CPU狀態;(2)讀寫編址在統一內存空間的外部設備寄存器; (3)讀寫目標機上的RAM; (4)讀寫目標機上的固態存儲設備, 如Flash;(5)對ICE- RT進行調試。

設計實現的調試器的用戶命令較多, 下面僅列出兩條典型命令IDCODE 和REG 執行后的結果。

執行IDCODE命令后, 讀出了一個基于S3C4510B的目標開發板內的CPUID號, 從而得到Device ID=0x1F0F0F0F.通過邏輯分析儀分析幾個JTAG接口信號的時序關系, 可以觀察到JTAG掃描連的訪問過程以及該過程中各種狀態的轉移,結果與JTAG_調試原理吻合。

執行RE命令后, 得到了寄存器R0~R15及CPSR內容, 即讀出了目標開發板處理器S3C4510B在當前處理器模式下的所有寄存器值, 而且還可以通過其他命令對其進行修改。

此外, 通過掃描鏈2可以訪問ICE- RT的17個寬度不同的內部調試寄存器, 通過這些寄存器使目標arm7TDMI分別進入調試狀態的3種方式, 即控制DBGRQ信號、斷點和觀察點, 實現在線調試功能。

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

上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉