JTAG和支援JTAG的CPU

2022-10-31 23:06:04 字數 2180 閱讀 5291

通常所說的jtag大致分兩類,一類用於測試晶元的電氣特性,檢測晶元是否有問題;一類用於debug。一般支援jtag的cpu內都包含了這兩個模組。

乙個含有jtag debug介面模組的cpu,只要時鐘正常,就可以通過jtag介面訪問cpu的內部暫存器和掛在cpu匯流排上的裝置,如flash,ram,soc(比如4510b,44box,at91m系列)內建模組的暫存器,象uart,timers,gpio等等的暫存器。

下面是乙個設定at91m40800的命令序列,關閉中斷,設定cs0-cs3, 並進行remap,適用於axd(ads帶的debug)

setmem 0xfffff124,0xffffffff,32 ---關閉所有中斷

setmem 0xffe00000,0x0100253d,32 ---設定cs0 0xffe00004,0x02002021,32 ---設定cs1

setmem 0xffe00008,0x0300253d,32 ---設定cs2

setmem 0xffe0000c,0x0400253d,32 ---設定cs3

setmem 0xffe00020,1,32 ---remap

如果要在adw(sdt帶的debug)中使用,則要改為:

let 0xfffff124=0xffffffff ---關閉所有中斷

let 0xffe00000=0x0100253d ---設定cs0

let 0xffe00004=0x02002021 ---設定cs1

let 0xffe00008=0x0300253d ---設定cs2

let 0xffe0000c=0x0400253d ---設定cs3

let 0xffe00020=1 ---remap

為了方便使用,可以將上述命令儲存為乙個檔案 在console視窗輸入 ob 即可執行。

使用其他debug,大體類似,只是命令和命令的格式不同。

設定ram時,設定的暫存器以及暫存器的值必須和要執行程式的設定一致。一般編譯生成的目標檔案是elf格式,或類似的格式,包含有目標碼執行位址,執行位址在link時候確定。

debug**程式時根據elf檔案中的位址資訊**程式到指定的位址。如果在把ram的基位址設定為0x10000000, 而在編譯的時候指定firmware的開始位址在0x02000000, **的時候,目標碼將被**到0x02000000,顯然**會失敗。

使用這種方式,比起flashpgm的寫flash,速度似乎要快一些。

01關於簡單jtag電纜

目前有各種各樣簡單jtag電纜,其實只是乙個電平轉換電路,同時還起到保護作用。jtag的邏輯則由執行在pc上的軟體實現,所以在理論上,任何乙個簡單jtag電纜,都可以支援各種應用軟體,如debug等。

我就曾使用同乙個jtag電纜寫xilinx cpld,axd/adw除錯程式。關鍵再於軟體的支援,大多數軟體都不提供設定功能,因而只能支援某種jtag電纜。

關於簡單jtag電纜的速度。jtag是序列介面,使用列印口的簡單jtag電纜,利用的是列印口的輸出帶鎖存的特點,使用軟體通過i/o產生jtag時序。

由jtag標準決定,通過jtag寫/讀乙個位元組要一系列的操作,根據我的分析,使用簡單jtag電纜,利用列印口,通過jtag輸出乙個位元組到目標板,平均需要43個列印口i/o, 在我機器上(p4 1.7g),每秒大約可進行660k次 i/o 操作,所以**速度大約在660k/43, 約等於15k byte/s. 對於其他機器,i/o速度大致相同,一般在600k ~ 800k.

02關於如何提高jtag**速度

很明顯,使用簡單jtag電纜無法提高速度。要提高速度,大致有兩種辦法:

1、使用嵌入式系統提供jtag介面,嵌入式系統和微機之間通過usb/ethernet相連,這要求使用mcu。

2、使用cpld/fpga提供jtag介面,cpld/fpga和微機之間使用epp介面(一般微機列印口都支援epp模式),epp介面完成微機和cpld/fpga之間的資料傳輸,cpld/fpga完成jtag時序。

這兩種方法本人都實現過。

第乙個方法可以達到比較高的速度,實測超過了200kbyte/s(注意:是byte,不是bit);但是相對來說,硬體複雜,製造相對複雜。

第二種相對來說,**速度要慢一些,最快時達到96kbyte/s,但電路簡單,製造方便,而且速度可以滿足需要。第二種方案還有乙個缺點,由於進行i/o操作時,cpu不會被釋放,因此在**程式時,微機cpu顯得很繁忙。

總的來說,本人認為,對於個人愛好者來說,第二種方法更可取。

伺服器CPU和普通CPU的區別

1 伺服器cpu設計的可連續執行時間長,基本都是設計為能常年連續工作的,而普通桌面級cpu是按72個小時連續工作而設計的。2 伺服器cpu支援多路互聯,簡單的說就是1臺機器可裝很多cpu,普通桌面級cpu不支援這種工作方式。3 伺服器cpu往往首先運用先進的技術如近期才在普通桌面級cpu出現l3快取...

CPU單核和雙核的區別

對於處理器來說,最重要的毫無疑問就是執行效能,而處理器的所有設計和技術也都是圍繞著如何提高處理器的效能展開的。可是x86處理器發展到今天,傳統的通過增加分支 單元 快取容量 提公升頻率來增加效能之路似乎已經難以行得通了 當單核處理器似乎走到盡頭之際,intel amd都不約而同地推出了自家的雙核處理...

80486CPU的內部結構和工作原理

1995 07 28 80486 cpu的內部結構如下圖所示 80486晶元上有乙個指令和資料共用的8kb快取記憶體。intel 80486dx4的快取記憶體為16kb。匯流排部件負責對內部單元與外部匯流排之間的指令預取 資料傳輸 控制功能等安排優先次序和進行協調。對內部通過三條32位匯流排與指令預...