实现MAXQ2000微控制器的JTAG加载主机
简介
具有可在线编程的程序存储器(例如MAXQ2000和MAXQ3210)的MAXQ微控制器一般还提供基于ROM的启动加载程序,利用微控制器的JTAG兼容调试端口,实现程序存储器的加载。尽管不同的器件有不同的JTAG启动加载程序功能,但是通常都包括程序和数据存储器写、读、验证和擦除等命令。有的器件为启动加载程序提供其他接口(例如,串口或者SPI™接口),而JTAG接口是最常用的,原因有两个。第一,JTAG接口支持在线调试功能,第二,最终用户应用程序并没有充分发挥JTAG接口的功能(与串口不同)。一旦加载程序代码后,可选择的加密机制限制了对启动加载程序的访问,或在线调试。关于每个MAXQ器件功能的详细信息,请参考产品说明,包括数据资料和用户指南等。本应用笔记涉及到实现MAXQ2000 JTAG启动加载程序主机的基本步骤。这些步骤包括JTAG端口接口,测试访问端口(TAP)控制器通信,激活启动加载程序模式,向基于ROM的启动加载程序发送命令等。由于所有MAXQ器件的JTAG端口工作情况一般相同,MAXQ启动加载程序采用共享命令集工作,因此,在实现MAXQ微控制器JTAG启动加载程序主机时可以参考本应用笔记涉及到的大部分主题(以及大部分实例代码)。
除了串口,应用笔记并没有使用MAXQ2000的特殊功能。这表明,这里的实例代码很容易重新用于程序存储器空间足够大的任何MAXQ20器件。代码以MAXQ汇编语言编写,采用MAX-IDE开发环境编译。可以下载这些代码。
硬件设置
采用一对MAXQ2000评估(EV)板来开发本应用笔记的实例代码。需要两块MAXQ2000评估板执行这里的软件。一个MAXQ2000 (JTAG主机)运行实例代码;第二个MAXQ2000用作JTAG从机,由主机对它重新编程。两个MAXQ2000微控制器都采用了标准8.00MHz晶振。在原型区安装一个2 x 5引脚插座对主机MAXQ2000评估板进行改动,原型区提供JTAG电缆主机侧连接。插座的引脚符合标准MAXQ JTAG插座布局,按照表1所示进行连接。
表1. MAXQ2000 JTAG连接
JTAG Header Pin | JTAG Cable Function | MAXQ2000 JTAG Master Connection | MAXQ2000 JTAG Slave Connection |
1 | TCK (Test Clock) | P0.0 (Output) | P4.0 (Input) |
2 | GND | GND | GND |
3 | TDO (Test Data Out) | P0.1 (Input) | P4.3 (Output) |
4 | VREF | – | – |
5 | TMS (Test Mode Select) | P0.2 (Output) | P4.2 (Input) |
6 | nRESET | P0.4 (Open Drain) | nRESET (Input) |
7 | Keyed pin | – | – |
8 | +5V | – | – |
9 | TDI (Test Data In) | P0.3 (Output) | P4.1 (Input) |
10 | GND | GND | GND |
不需要对从机MAXQ2000评估板进行改动。按照上面的说明在主机MAXQ2000评估板的原型区安装2 x 5 JTAG插座。然后,将两块评估板连接起来;主机评估板原型区的2 x 5 JTAG插座和从机评估板的标准JTAG插座(J4)之间连接标准2 x 5 JTAG电缆(这种JTAG一般用于连接串口至JTAG板和MAXQ评估板)。JTAG 2 x 5连接器含在MAXQ2000评估套件中。
为简化起见,没有对主机评估板和从机评估板的JTAG电缆电源或者参考电压连接进行试验。而是设置两块评估板采用同一VDDIO电压(大约3.6V)工作。这种设置保证了主机和从机MAXQ2000采用公共I/O电源电平工作。
从机评估板还在插座J3上安装了LCD子卡(MAXQ2000-K01)。表2列出了两块电路板(以及串口至JTAG电路板)的跳线和DIP开关设置。注意:应断开未列出的所有跳线。图1所示为最终设置。
表2. 电路板开关和跳线设置
Board | Switch or Jumper | Setting | Notes |
Serial-to-JTAG Board | JH1 | Connected | |
JH2 | Connected | ||
JH3 | Connected | Supplies 5V power over JTAG cable | |
Master MAXQ2000 EV Kit | JU1 | Pins 1 and 2 connected | Powers VDD from 2.5V supply |
JU2 | Pins 1 and 2 connected | Powers VDDIO from 3.6V supply | |
JU3 | Pins 1 and 2 connected | Powers VLCD from 3.6V supply | |
JU11 | Connected | Powers kit board from JTAG 5V supply | |
DIP SW1 | Switches #4 and #8 ON; all other switches OFF | Enables serial port 0 output to J5 | |
DIP SW3 | All switches OFF | ||
DIP SW6 | All switches OFF | ||
Slave MAXQ2000 EV Kit | JU1 | Pins 1 and 2 connected | Powers VDD from 2.5V supply |
JU2 | Pins 1 and 2 connected | Powers VDDIO from 3.6V supply | |
JU3 | Pins 1 and 2 connected | Powers VLCD from 3.6V supply | |
DIP SW1 | All switches OFF | ||
DIP SW3 | All switches OFF | ||
DIP SW6 | All switches OFF |
图1. JTAG演示板配置
MAXQ JTAG接口
MAXQ微控制器的JTAG接口由四条信号线组成,用于测试访问端口(TAP)控制器的信息输入和输出。TAP控制器支持对MAXQ启动加载程序的访问,提供在线调试功能(注意,调试主机的实现和启动加载程序主机的实现类似,但是已经超出了本应用笔记的范围)。表3对四条JTAG信号线进行了说明。表3. JTAG接口信号
JTAG Signal | Signal Name | Direction (Master) | Direction (Slave) | Signal Description |
TMS | Test Mode Select | Output | Input | This signal line, along with the TCK line, is used to shift the TAP controller from one operational state to the next. |
TCK | Test Clock | Output | Input | This signal provides the clock for the JTAG interface. The JTAG clock is limited to a maximum of the slave's clock frequency divided by 8. For example, if the slave is running at a clock frequency of 8MHz, the JTAG clock at TCK cannot run any faster than 1MHz. |
TDI | Test Data In | Output | Input | This signal carries data that is sent from the master to the slave. |
TDO | Test Data Out | Input | Output | This signal carries data that is sent from the slave back to the master. |
从技术上看,nRESET引脚并不是JTAG接口的组成部分。它含在JTAG电缆中,使JTAG主机能够复位从机微控制器。重新设置从机微控制器是进入启动加载程序模式需要的步骤,如果JTAG通信意外中断,也需要重新设置从机微控制器。
JTAG接口是全双工的,数据在TDI线上由主机送入从机,同时,数据在TDO线上由从机送入主机。从机在TCK上升沿对到达数据(在TDI和TMS上)进行采样,在TCK下降沿,数据在TDO上被驱动输出至主机。对于到达和输出数据,最先传送最低有效位。本应用笔记简要介绍JTAG接口和TAP控制器,以解释实例代码的工作。关于这些特性的详细讨论,请参考MAXQ系列用户指南(English only)的测试访问端口(TAP)、在线调试模式、在系统编程等章节,公司网站上有该文档。
评论