实现MAXQ2000微控制器的JTAG加载主机

[09-13 17:04:13]   来源:http://www.88dzw.com  控制技术   阅读:8661

文章摘要:进入JTAG程序加载模式需要按照以下步骤使MAXQ2000进入JTAG启动加载程序模式。 初始化TAP控制器,重新设置它,进入Test-Logic-Reset状态。 设置指令寄存器(IR)为100b,使能系统编程模式。 设置数据寄存器(DR)为001b。这使得SPE(系统编程使能)位为1,使能启动加载程序,设置PSS[1:0] (编程源选择)位为00b,选择JTAG接口。 保持nRESET低电平,复位MAXQ2000。 释放nRESET。这导致MAXQ2000指向程序ROM (8000h)中的标准复位点。程序ROM代码将检查SPE和PSS位值,相应地激活JTAG启动加载程序。在这一点,启动加载

实现MAXQ2000微控制器的JTAG加载主机,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com

进入JTAG程序加载模式

需要按照以下步骤使MAXQ2000进入JTAG启动加载程序模式。
  1. 初始化TAP控制器,重新设置它,进入Test-Logic-Reset状态。
  2. 设置指令寄存器(IR)为100b,使能系统编程模式。
  3. 设置数据寄存器(DR)为001b。这使得SPE(系统编程使能)位为1,使能启动加载程序,设置PSS[1:0] (编程源选择)位为00b,选择JTAG接口。
  4. 保持nRESET低电平,复位MAXQ2000。
  5. 释放nRESET。这导致MAXQ2000指向程序ROM (8000h)中的标准复位点。程序ROM代码将检查SPE和PSS位值,相应地激活JTAG启动加载程序。在这一点,启动加载程序运行,准备接收JTAG命令。
  6. 设置指令寄存器(IR)为010b,使能调试模式。该模式用于和JTAG启动加载程序或者调试引擎进行通信;在这一例子中,我们将使用该模式和启动加载程序进行通信。
  7. 10位数据移位通过DR,开始向JTAG启动加载程序发送命令。
#define  IR_DEBUG         010b      ; Debug Mode
#define  IR_BYPASS        011b      ; Bypass Mode (default)
#define  IR_SYSTEM_PROG   100b      ; System Programming Mode (activate loader)

; System Programming Register settings

#define  SP_EXECUTE       000b      ; Bootloader disabled
#define  SP_LOAD_JTAG     001b      ; Activate JTAG bootloader 
#define  SP_LOAD_UART     011b      ; Activate UART bootloader
#define  SP_LOAD_SPI      101b      ; Activate SPI bootloader (invalid on 2000)
#define  SP_RESERVED      111b      ; Reserved value

   ...

   call    initializeJTAG    ; Set up port pins for JTAG
   call    testLogicReset    ; Reset JTAG port (ending state: Run-Test-Idle)
   
   move    Acc, #IR_SYSTEM_PROG
   call    shiftIR3          ; Load the System Programming instruction into IR

   move    Acc, #SP_LOAD_JTAG
   call    shiftDR3          ; Enable the bootloader in JTAG interface mode

   move    RST, #1           ; Drive nRESET low
   move    Acc, #100         ; Delay for 100ms
   call    delayMS

   call    clock0            ; Remain in Run-Test-Idle

   move    RST, #0           ; Release nRESET
   move    Acc, #100         ; Delay for 100ms
   call    delayMS

   move    Acc, #IR_DEBUG
   call    shiftIR3          ; Enable access to the 10-bit debug shift register

   ;;;;  Bootloader commands may now be shifted through the DR register

   call    waitForPrompt     ; Verify that the bootloader is responding

   ...

与加载程序通信

一旦启动加载程序运行,程序ROM中的启动加载程序代码读取内部寄存器的命令代码,命令代码由DR移位寄存器装入。程序ROM还把结果数据写入另一内部寄存器,由JTAG主机通过DR寄存器移出。通过这种方式,启动加载程序代码和JTAG主机交换信息。

然而,启动加载程序代码和JTAG主机并不同步。只要JTAG时钟保持低于MAXQ系统时钟1/8的最大值,由于JTAG是同步接口,因此,两路时钟的确切值并不影响通信。但是,MAXQ系统时钟速率以及接收到的启动加载程序命令特性将决定启动加载程序接收命令和发送回应之间的延时。例如,1MHz运行的MAXQ2000响应某一启动加载程序命令的时间要比10MHz的MAXQ2000时间长,即使两个微控制器都可以采用100kHz的JTAG时钟进行通信。只是读并返回信息的命令,例如返回ROM标志ID的命令以及从程序存储器读取的命令,花费的时间也要少于编程闪存操作等命令。

通过JTAG接口传送的数据没有被缓冲。如果在前一命令被读取之前,发送了另一10位命令,前一命令的结果丢失。ROM代码和TAP控制器保证前一数据被JTAG主机卸载前,启动加载程序不会发送其他数据,但反方向还是需要同步。JTAG主机需要通过某种方式知道移入DR的前一字节是否已经被启动加载程序读取了。这样,JTAG主机能够知道什么时候发送下一字节。采用的方法是利用TAP控制器发送的其他两个状态位,以及启动加载程序输出的每个8位字节。

图4. 通过DR的移位数据和状态位

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]  下一页


Tag:控制技术计算机控制技术,工厂电气控制技术控制技术

《实现MAXQ2000微控制器的JTAG加载主机》相关文章