实现MAXQ2000微控制器的JTAG加载主机
[09-13 17:04:13] 来源:http://www.88dzw.com 控制技术 阅读:8661次
文章摘要:图4. 通过DR的移位数据和状态位2x5 如上面的图4所示,在TAP调试模式下,移入和移出DR的数据包括8个数据位(第2位到第9位)和两个状态位(第0位和第1位)。当JTAG主机移入数据时,只使用8个数据位。TAP控制器没有使用的两个状态位(也必须被移入),可以被设置为零,或者任何其他值。在TAP控制器移出的10位数值中,两个状态位提供启动加载程序或者调试引擎的状态信息。当启动加载程序运行时,一般只能达到最后两个状态(调试忙或者调试有效),这是因为其他两个状态值不会出现在启动加载程序模式中。(参见图4中的状态/条件) 如果状态位被设置为调试忙(10b),启动加载程序还没有读取被JTAG主机移入
实现MAXQ2000微控制器的JTAG加载主机,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com图4. 通过DR的移位数据和状态位
2x5 如上面的图4所示,在TAP调试模式下,移入和移出DR的数据包括8个数据位(第2位到第9位)和两个状态位(第0位和第1位)。当JTAG主机移入数据时,只使用8个数据位。TAP控制器没有使用的两个状态位(也必须被移入),可以被设置为零,或者任何其他值。
在TAP控制器移出的10位数值中,两个状态位提供启动加载程序或者调试引擎的状态信息。当启动加载程序运行时,一般只能达到最后两个状态(调试忙或者调试有效),这是因为其他两个状态值不会出现在启动加载程序模式中。(参见图4中的状态/条件)
- 如果状态位被设置为调试忙(10b),启动加载程序还没有读取被JTAG主机移入到DR中的前一数值。这也表明,移出的8位数据没有意义,因为启动加载程序还没有执行完命令。接收到该数值后,JTAG主机必须以前一发送的字节值重新装入DR,这样,启动加载程序可以访问它。正确执行这一操作的状态顺序如下。
- 在Shift-DR状态,将最后一个比特移入到DR中,转换到Exit1-DR之后,JTAG主机应检查两个状态位。
- 如果接收到调试忙值,转换到Pause-DR状态,从这里到Exit2-DR,然后再次返回Shift-DR。重新装入前一DR值(这次不是移位的数值),然后通过Exit1-DR和Update-DR,忽略第二次通过的状态位值。
- 延迟较短的一段时间(取决于所执行的命令),重试字节传送。
- 如果状态位被设置为调试有效(11b)值,表明启动加载程序读取了移入的最后字节,已经装入了应答字节。移出的8位数值含有有效数据。
;============================================================================== ;= ;= sendCommand ;= ;= Transmits a loader command by shifting bytes through DR. ;= ;= Inputs : DP[0] - Points to area of RAM which stores input bytes ;= for command and which will be filled with output. ;= LC[1] - Number of bytes to transmit/receive ;= Outputs : C - Set on JTAG communication error ;= Destroys : AP, APC, A[0], A[1], A[2], A[15], PSW, LC[0] ;= sendCommand: move APC, #80h ; Acc => A[0], turn off auto inc/dec push LC[1] call waitForPrompt pop LC[1] jump C, sendCommand_fail move Acc, @DP[0] ; Read first byte to transmit call shiftDR push Acc move Acc, A[1] cmp #3 ; Should be valid status since we had a prompt pop Acc jump NE, sendCommand_fail move @DP[0], Acc ; Store first received byte move NUL, @DP[0]++ ; Increment data pointer djnz LC[1], sendCommand_loop jump sendCommand_pass sendCommand_loop: move A[2], #10 ; Number of retries allowed sendCommand_retry: move Acc, @DP[0] ; Get next byte to transmit call shiftDR_next push Acc move Acc, A[1] cmp #3 pop Acc jump NE, sendCommand_stall move @DP[0], Acc ; Store received byte move NUL, @DP[0]++ ; Increment data pointer djnz LC[1], sendCommand_loop jump sendCommand_pass sendCommand_stall: move LC[0], #8000 ; About a millisecond djnz LC[0], $ move Acc, A[2] sub #1 jump NZ, sendCommand_retry jump sendCommand_fail
加载程序提供的功能
MAXQ微控制器的启动加载程序功能一般采用共享模式,这意味着器件之间很多命令和状态代码都是相同的。不同器件根据内部程序存储器结构和其他要求,可以采用不同的启动加载程序命令子集。关于这方面的详细信息,请参考您正在使用的MAXQ微控制器用户指南附录(English only)。对于这一情况,可以参考MAXQ2000用户指南附录(English only)中"在系统编程"一节的启动加载程序命令。上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页
Tag:控制技术,计算机控制技术,工厂电气控制技术,控制技术
《实现MAXQ2000微控制器的JTAG加载主机》相关文章
- › 实现MAXQ2000微控制器的JTAG加载主机
- 在百度中搜索相关文章:实现MAXQ2000微控制器的JTAG加载主机
- 在谷歌中搜索相关文章:实现MAXQ2000微控制器的JTAG加载主机
- 在soso中搜索相关文章:实现MAXQ2000微控制器的JTAG加载主机
- 在搜狗中搜索相关文章:实现MAXQ2000微控制器的JTAG加载主机
分类导航
最新更新