參考資料:
jtag
基礎知識
嵌入式軟體除錯技術第2
章羅克露
主編jtag
深入理解
test technology standards committee of the ieee computer society. ieee standard test access port and boundary-scan architecture. 2001 基於
jtag
的arm
除錯技術
arm jtag
除錯原理
twentyone
編寫基於
jtag
的arm
高階arm7tdmi technical reference manual[ddi0210b].pdf
arm11technicalrefmanual.pdf
tips
:1.trst
為什麼是可選訊號呢?
因為通過
tms也可以復位測試邏輯
2.為什麼在
tms訊號上加上拉電阻?
ieee 1149.1
規定,在
tms上沒有輸入訊號驅動的情況下,測試邏輯工作應該和在
tms上送入高電平時是一樣的,這樣
tap控制器將會被強制進入
test-logic-reset
狀態。3.tdi tms
在上公升沿取樣,
tdo在下降沿取樣?
為了避免在進行測試的時候存在競爭條件。
4.jtag
除錯介面由
tap控制器、指令暫存器、資料暫存器組
3部分構成,而
tap控制器就是控制測試邏輯對指令(資料
)暫存器進行操作的。
5.不管
tap控制器的原始狀態是什麼,只要
tms保持高電平至少5個
tck上公升沿的時間以上,就將使得
tap控制器進入
test-logic-reset
狀態。只要
tms為高電平,就將使控制器保持在這一狀態。
6.每個支援
jtag
除錯的晶元必須至少包含乙個指令暫存器。對於特定的某款晶元而言,晶元生產廠商一般都會在
ieee1149.1
標準的基礎山擴充一些私有的指令暫存器和資料暫存器,以方便在開發過程中進行功能測試和診斷除錯。
7.jtag
標準允許不同的指令共享相同的二進位制編碼,通過
tap控制器的當前狀態來區分指令的行為。他們是
opcode
相同的不同指令,如
sample
和preload 8.
jtag
公共指令(
public
)以及私有指令(
private
)通過自檢對元件進行測試的能力
能依靠邊界掃瞄暫存器對板級互聯進行測試的能力
9.必須包含的共有指令:
bypass
sample
preload
extest
idcode
(有裝置
id暫存器的情況)
10.bypass
:二進位制編碼所有位都為1
其指令的目的是將
bypass
暫存器鏈入該元件自身的
tdi和
tdo之間,這樣就可以使測試資料能夠快速地從掃瞄鏈中通過。
11.sample
:將邊界掃瞄暫存器序列地鏈入
tdi和
tdo之間。
12.preload
:和sample
類似,但是資料流的方向是反的。
s是將元件核心邏輯或外部引腳上的訊號狀態載入到邊界掃瞄鏈中,而
preload
指令是將邊界掃瞄鏈中的資料值送入核心邏輯或外部引腳。
13.extest
:用於板級互聯性測試。
14.裝置
id暫存器包括3部分
廠商id
,11bits
壓縮碼零件編號
16bits
編碼版本號
4bits
其核心就是
test access port controller
(測試訪問埠控制器)的內部這個有限狀態機見下圖:
下面這段**來自於
jflash-s3c2410
,jtag_reset
函式的原理見
tip5
,jtag_readid
函式對應上面這個狀態機很好理解。
void jtag_reset(void)
void jtag_readid(void)
jtag_set(tdi_h|tms_h|tck_l);jtag_delay();
jtag_set(tdi_h|tms_h|tck_h);jtag_delay(); //exit1_dr
id[i]=(char)jtag_get_tdo();
jtag_set(tdi_h|tms_h|tck_l);jtag_delay();
jtag_set(tdi_h|tms_h|tck_h);jtag_delay(); // update_dr
jtag_set(tdi_h|tms_l|tck_l);jtag_delay(); // why 3 times?
jtag_set(tdi_h|tms_l|tck_h);jtag_delay(); // run-test/idle
jtag_set(tdi_h|tms_l|tck_l);jtag_delay();
jtag_set(tdi_h|tms_l|tck_h);jtag_delay(); // run-test/idle
jtag_set(tdi_h|tms_l|tck_l);jtag_delay();
jtag_set(tdi_h|tms_l|tck_h);jtag_delay(); // run-test/idle
id32=0;
for(i=31 ;i>=0 ;i--)
switch(id32) }
智慧型車基礎學習JTAG介面
從智慧型車的製作中知道中斷的概念,但一直一知半解,最終下定決心好好打基礎。在一開始主要接觸的是k60,所以這些基礎知識也結合k60切入,之後可能會接觸k66的有關內容,估計大同小異吧。jatg介面 即聯合測試實現工作組,最初是用來對晶元進行測試的,如今jtag介面還常用於實現isp in syste...
學習筆記1
struct test test int x void fun class test1 test1 int x void fun int main void test1 a 行1 a.fun 行2 test1 b 行3 b.fun 行4 test c 行5 c.fun 行6 test d 行7 d....
學習筆記1
1 字串原地逆序 使用臨時變數 void reverse string s 5 求平均值 避免溢位 int f int x,int y 6 楊氏矩陣 bool young int a m n int x return false 7 十進位制轉十六進製制 string decimaltohexade...