实现MAXQ2000微控制器的JTAG加载主机
[09-13 17:04:13] 来源:http://www.88dzw.com 控制技术 阅读:8661次
文章摘要:识别JTAG从机控制器启动加载程序启动并运行后,下一步是识别从机MAXQ微控制器。命令集0的命令0Dh (获得ID信息)返回一个长度可变的ASCII字符串(以零结束),确定器件和程序ROM版本。作为演示的一部分,我们的实例程序获得该信息,然后打印输出至串口。用于实现该功能的例程是getBanner。 ;==;=;= getBanner;= waitForPrompt;= shiftDR;= clock0, clock1, shift;=;= Executes command 0Dh to retrieve the ROM (device ID) b
实现MAXQ2000微控制器的JTAG加载主机,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com识别JTAG从机控制器
启动加载程序启动并运行后,下一步是识别从机MAXQ微控制器。命令集0的命令0Dh (获得ID信息)返回一个长度可变的ASCII字符串(以零结束),确定器件和程序ROM版本。作为演示的一部分,我们的实例程序获得该信息,然后打印输出至串口。用于实现该功能的例程是getBanner。
;============================================================================== ;= ;= getBanner ;= waitForPrompt ;= shiftDR ;= clock0, clock1, shift ;= ;= Executes command 0Dh to retrieve the ROM (device ID) banner and prints ;= the banner text out over the serial port. ;= ;= Inputs : None ;= Outputs : C - Set on JTAG communication error ;= Destroys : AP, APC, Acc, PSW, LC[0] ;= getBanner: call waitForPrompt jump C, getBanner_fail move Acc, #CMD_GET_ROM_BANNER call shiftDR move Acc, #00h call shiftDR getBanner_loop: move Acc, #00h call shiftDR cmp #0FFh ; The banner is ASCII, so receiving this character ; most likely indicates that the JTAG lines are ; floating high and that no device is connected jump E, getBanner_fail jump Z, getBanner_done call txChar jump getBanner_loop getBanner_done: call txNewline jump getBanner_pass getBanner_fail: move C, #1 ret getBanner_pass: move C, #0 ret
擦除程序存储器
在对MAXQ2000包含的闪存程序存储器进行编程之前,必须擦除它(设置为0FFFFh)。JTAG演示应用程序发送02h (主机擦除)启动加载程序命令,指示启动加载程序擦除所有的程序和数据存储器,从而擦除闪存。该命令还清除了密码锁定位,使能所有支持的命令集。取决于MAXQ器件,这一02h (主机擦除)命令可能需要几秒钟的时间来完成。由于这是一个单字节命令,确定该命令什么时候完成的最简单方法是不断发送无操作(00h)命令,其后是1毫秒的延迟,直到启动加载程序返回3Eh,表明命令已经完成。下面的 masterErase例程说明了这一方法。
;============================================================================== ;= ;= masterErase ;= ;= Executes command 02h (Master Erase) to clear all program and data memory. ;= ;= Inputs : None ;= Outputs : C - Set on JTAG communication error ;= Destroys : Acc, PSW, LC[0], LC[1] ;= masterErase: call waitForPrompt jump C, masterErase_fail move Acc, #CMD_MASTER_ERASE call shiftDR move Acc, #00h call shiftDR move LC[1], #5000 ; Number of retries before returning an error masterErase_loop: move Acc, #CMD_NOP call shiftDR cmp #3Eh jump E, masterErase_pass move LC[0], #8000 ; Delay for about a millisecond djnz LC[0], $ djnz LC[1], masterErase_loop masterErase_pass: move C, #0 ret masterErase_fail: move C, #1 ret
重新获得状态信息
MasterErase (或者任何其他启动加载程序命令)完成后,可利用04h (获得状态)命令来确定命令是否成功完成。获得状态命令返回两个数据字节:一个字节含有状态标志(说明密码锁定设置/解除设置、字/字节模式有效以及其他信息),第二个字节是单字节状态码。如果最后一条命令成功完成,状态码总是00h (无错误)。非零状态码指示有错误。MAXQ2000用户指南附录(English only)列出了所有的状态码;这里列出了几个常见错误码。
- 01h/02h—不支持命令集/无效命令。这些错误代码通常指示JTAG主机出现通信干扰或者校准错误。如果对于某一命令代码,JTAG主机发送的字节多于(或者少于)启动加载程序预期的字节,启动加载程序会把数据字节之一理解为新命令开始。
- 03h—密码不匹配。这一错误代码通常指示JTAG主机在没有清除密码锁定之前,试图使用受到密码保护的命令(一般包括不在命令集0中的命令)。如果JTAG主机访问的部分已经有装入字节地址0010h – 001Fh的代码,则会出现这一错误。在这种情况下,这一部分必须被主机擦除,或者使用密码匹配命令(03h)来解锁这一部分。
- 05h—验证失败。对于装入/验证或者验证命令,验证步骤失败。通信干扰会导致这一错误,或者对以前已经编程过的闪存没有擦除就进行重新编程也会出现这一错误。
上一页 [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加载主机
分类导航
最新更新