新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 實現MAXQ2000微控制器的JTAG加載主機

        實現MAXQ2000微控制器的JTAG加載主機

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

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

        下面是執行這一操作的例程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數據寄存器

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

        激活系統編程模式后,裝入和卸載DR寄存器的操作如下。
        • DR寄存器移入和移出寬度為3比特。所有三個比特都代表有效數據。
        • 當到達Update-DR狀態時,送入DR寄存器的數值被復制到從機的內部系統編程寄存器中。這三個比特的用法如下。
          • 從機可訪問第0位(讀/寫),它作為寄存器位ICDF.1 (SPE),也被稱為系統編程使能位。復位后,程序ROM檢查該位,確定應進入啟動加載程序模式(SPE = 1)還是正常程序執行模式(SPE = 0)。
          • 從機可訪問第1位和第2位(讀/寫),它作為寄存器位ICDF.2-3 (PSS0-PSS1),也被稱為編程源選擇位。對于能夠為啟動加載程序提供多個接口的微控制器,例如,這些位用于當SPE = 1時應選擇哪一啟動加載程序接口。當SPE = 0 (正常程序執行模式)時,這些位的設置不起作用。
        • DR寄存器傳送出去的數值是系統編程寄存器以前的數值(當進入Capture-DR狀態后,鎖存到移位寄存器中)。
        激活系統編程模式后,裝入和卸載DR寄存器的操作如下。
        • DR寄存器移入和移出寬度為10比特。對于移出數據,所有10個比特都代表有效數據(8個數據位和2個狀態位)。對于移入數據,只使用了8個數據位;沒有使用兩個狀態位。
        • 然后,將移入DR寄存器的高8位卸載,作為啟動加載程序命令的一部分,被啟動加載程序(從程序ROM中運行)讀取。
        • 移出DR寄存器的10個比特含有8位由啟動加載程序裝入的數值(作為命令輸出的一部分),以及由TAP控制器設置的兩個狀態信息位。
        ;==============================================================================;=;=  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
        				
                    
                        
        			
        							

        關鍵詞: MAXQ2000 微控制器 JTAG

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云南省| 信丰县| 临夏县| 宜都市| 寻甸| 河曲县| 浮山县| 汾阳市| 广平县| 故城县| 买车| 府谷县| 淳化县| 大足县| 梁山县| 定州市| 凤庆县| 辉县市| 孟村| 五华县| 屏边| 奉贤区| 左贡县| 富锦市| 哈密市| 通化县| 清新县| 昆明市| 利辛县| 上蔡县| 武功县| 都安| 明水县| 莆田市| 五河县| 古田县| 德清县| 枣庄市| 沛县| 高邑县| 科尔|