JTAG學習筆記 1

2021-05-21 17:29:54 字數 3037 閱讀 3747

參考資料:

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...