新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 實現(xiàn)MAXQ2000微控制器的JTAG加載主機

實現(xiàn)MAXQ2000微控制器的JTAG加載主機

作者: 時間:2012-03-19 來源:網(wǎng)絡(luò) 收藏
移出時,狀態(tài)機保持在Shift-IR或者Shift-DR狀態(tài)。在最后一個比特周期,TMS必須被驅(qū)動為高電平,這樣,隨著最后一位的輸入和輸出,TAP控制器將進入Exit1-DR或者Exit1-IR狀態(tài)。

作為一個例子,在表4中,主機將數(shù)值100b (系統(tǒng)編程模式)移入到IR寄存器中。IR寄存器開始設(shè)置旁路值011b;TAP控制器最初為Run-Test-Idle狀態(tài)。如下面的圖4所示,比特以最低有效位在前、最高有效位在后移入(移出)TAP控制器。因此,在第一個移位周期,新數(shù)值的第0位被移入,舊數(shù)值的第0位被移出。

表4. 指令寄存器移位實例
TCKTMSTDITDOTAP StateShift RegisterInstruction Register
bit 2bit 1bit 0bit 2bit 1bit 0
01xxRun-Test-Idlexxx011
11xxSelect-DR-Scanxxx011
01xxSelect-DR-Scanxxx011
11xxSelect-IR-Scanxxx011
00xxSelect-IR-Scanxxx011
10xxCapture-IR001011
00xxCapture-IR001011
10xxShift-IR001011
000xShift-IR001011
100xShift-IR001011
0001Shift-IR000011
1001Shift-IR000011
0110Shift-IR000011
1110Exit1-IR000011
01x0Exit1-IR100011
11x0Update-IR100100
00xxUpdate-IR100100
10xxRun-Test-Idlexxx100

下面是執(zhí)行這一操作的例程shiftIR3。

;==============================================================================;=;=  shiftIR3;=     clock0, clock1, shift;=;=  Shifts a 3-bit value into the IR register.;=;=  Inputs   : A[0] - Low three bits contain value to shift into IR;=  Outputs  : None;=  Destroys : AP, APC, A[0], PSW, LC[0];=shiftIR3:move    APC, #80h         ; Acc => A[0], turn off auto inc/deccall    clock1            ; (Select DR Scan)call    clock1            ; (Select IR Scan)call    clock0            ; (Capture IR - loads 001b to shift register)call    clock0            ; (Shift IR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxx210   c = srrc                       ; sxxxxx21   c = 0call    shift             ; Shift in IR bit 0rrc                       ; ssxxxxx2   c = 1call    shift             ; Shift in IR bit 1rrc                       ; sssxxxxx   c = 2move    TMS, #1           ; Drive TMS high for last bitcall    shift             ; Shift in IR bit 2 (Exit1 IR)call    clock1            ; (Update IR)call    clock0            ; (Run Test Idle)ret

寫入TAP數(shù)據(jù)寄存器

數(shù)值移入或者移出TAP控制器DR的操作與裝入/卸載IR的方式相似。通常,只有當(dāng)IR被設(shè)置為兩個數(shù)值之一時才能進行這一操作:100b (使TAP控制器進入系統(tǒng)編程模式)或者010b (使TAP控制器進入調(diào)試模式)。

激活系統(tǒng)編程模式后,裝入和卸載DR寄存器的操作如下。
  • DR寄存器移入和移出寬度為3比特。所有三個比特都代表有效數(shù)據(jù)。
  • 當(dāng)?shù)竭_Update-DR狀態(tài)時,送入DR寄存器的數(shù)值被復(fù)制到從機的內(nèi)部系統(tǒng)編程寄存器中。這三個比特的用法如下。
    • 從機可訪問第0位(讀/寫),它作為寄存器位ICDF.1 (SPE),也被稱為系統(tǒng)編程使能位。復(fù)位后,程序ROM檢查該位,確定應(yīng)進入啟動加載程序模式(SPE = 1)還是正常程序執(zhí)行模式(SPE = 0)。
    • 從機可訪問第1位和第2位(讀/寫),它作為寄存器位ICDF.2-3 (PSS0-PSS1),也被稱為編程源選擇位。對于能夠為啟動加載程序提供多個接口的微控制器,例如,這些位用于當(dāng)SPE = 1時應(yīng)選擇哪一啟動加載程序接口。當(dāng)SPE = 0 (正常程序執(zhí)行模式)時,這些位的設(shè)置不起作用。
  • DR寄存器傳送出去的數(shù)值是系統(tǒng)編程寄存器以前的數(shù)值(當(dāng)進入Capture-DR狀態(tài)后,鎖存到移位寄存器中)。
激活系統(tǒng)編程模式后,裝入和卸載DR寄存器的操作如下。
  • DR寄存器移入和移出寬度為10比特。對于移出數(shù)據(jù),所有10個比特都代表有效數(shù)據(jù)(8個數(shù)據(jù)位和2個狀態(tài)位)。對于移入數(shù)據(jù),只使用了8個數(shù)據(jù)位;沒有使用兩個狀態(tài)位。
  • 然后,將移入DR寄存器的高8位卸載,作為啟動加載程序命令的一部分,被啟動加載程序(從程序ROM中運行)讀取。
  • 移出DR寄存器的10個比特含有8位由啟動加載程序裝入的數(shù)值(作為命令輸出的一部分),以及由TAP控制器設(shè)置的兩個狀態(tài)信息位。
;==============================================================================;=;=  shiftDR3;=;=  Shifts a 3-bit value into the DR register.  This operation should only be;=  performed when IR =100b (System Programming Mode).;=;=  Inputs   : A[0] - Low 3 bits contain value to shift into SPB (PSS1:PSS0:SPE);=  Outputs  : None;=  Destroys : AP, APC, A[0], PSW, LC[0]shiftDR3:move    APC, #80h         ; Acc => A[0], turn off auto inc/deccall    clock1            ; (Select DR Scan)call    clock0            ; (Capture DR)call    clock0            ; (Shift DR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxx210   c = srrc                       ; sxxxxx21   c = 0call    shift             ; Shift in DR bit 0rrc                       ; ssxxxxx2   c = 1call    shift             ; Shift in DR bit 1rrc                       ; sssxxxxx   c = 2move    TMS, #1           ; Drive TMS high for last bitcall    shift             ; Shift in DR bit 2 (Exit1 DR)call    clock1            ; (Update DR)call    clock0            ; (Run Test Idle)ret;==============================================================================;=;=  shiftDR;=     clock0, clock1, shift;=;=  Shifts a 10-bit value into and out of the DR register.  This operation ;=  should only be performed when IR = 010b (Debug/Loader Mode).;=;=  Inputs   : A[0]  - Byte value (input) to shift into DR;=  Outputs  : A[0]  - Byte value (output) shifted out of DR;=             A[1]  - Low two bits are status bits 1:0 shifted out of DR;=             A[15] - Byte value shifted in, cached for use by shiftDR_next;=  Destroys : AP, APC, PSW, LC[0]shiftDR:move    APC, #80h         ; Acc => A[0], turn off auto inc/decmove    A[15], A[0]       ; Cache input byte value for use by shiftDR_nextsla2                      ; Add two empty bits (for status)call    clock1            ; (Select DR Scan)call    clock0            ; (Capture DR)call    clock0            ; (Shift DR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxxxxx76543210   c = s
				
            
                
			
							

關(guān)鍵詞: MAXQ2000 微控制器 JTAG

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉