应用笔记 3966

MAXQ微控制器中JTAG接口引脚的复用


摘要 : 通常在嵌入式应用中,微控制器的每个端口引脚都是必需的,没有多余引脚。大部分MAXQ®微控制器带有可重新进行写操作的内部程序存储器(如闪存或EEPROM),支持标准JTAG/TAP接口(也称为调试端口)。外部主机可利用该接口执行在线调试或在线编程(引导装载)功能。构成该接口的所有引脚通常可复用为标准的GPIO功能,这就是说在开发阶段结束之后这些引脚仍可使用,而不是被废弃。本应用笔记讨论了在常规应用中复用这些引脚的方法,并且给出了一些在复用这些引脚时需要考虑的事项。

简介

通常在嵌入式应用中,微控制器的每个端口引脚对于实际应用来说都是必需的,没有多余的引脚。然而,开发人员可采用其他方法来解决这个问题。大部分MAXQ微控制器可重写内部程序存储器(如闪存或EEPROM),支持标准JTAG/TAP接口(也称为调试端口)。外部主机可利用该接口执行在线调试或在线编程(引导装载)功能。该接口中的所有引脚通常可复用为标准GPIO端口引脚功能,从而使这些引脚在开发阶段结束之后仍然可以被使用。本应用笔记阐述了在常规应用中如何复用这些引脚。同时,本应用笔记还指出了在复用这些引脚时需要考虑的事项。

应用系统开发阶段

在开发阶段,JTAG兼容调试端口可提供许多有用功能。首先,调试端口允许应用系统在外部主机控制下对其加载(使用开发环境如MAX-IDE、Rowley CrossWorks或IAR Embedded Workbeach®)。可以根据以后的测试需求对应用系统进行测试、修改和快速加载。其次,调试端口允许执行MAXQ架构的在线调试功能,这些调试功能包括寄存器的读写操作、指令的单步调试,并可查看程序、数据、堆栈存储器。引导装载和在线调试功能会对应用系统所能使用的存储器资源产生一些微小的影响。因为在线调试功能完全由MAXQ硬件和公用程序ROM实现。

在完成了应用系统的开发测试后,不再需要使用在线调试功能。此外,在大批量生产中,可重新编程的MAXQ器件将被掩模ROM器件替代,不再需要在线编程功能。这就意味着应用系统不再使用调试端口,此时调试端口可废弃不用也可有效地对其再利用。当MAXQ器件的GPIO端口引脚数不够使用时,若把专门用于JTAG调试的端口引脚重新利用起来,并且让常规应用系统使用这些引脚,将会起到意想不到的作用。

调试端口引脚的重复使用

实现JTAG兼容调试端口的连接用到下面4个引脚:
  • TCK:测试时钟—MAXQ输入
  • TMS:测试模式选择—MAXQ输入
  • TDO:测试数据输出—MAXQ输出
  • TDI:测试数据输入—MAXQ输入
这4个引脚可以典型地复用为4个GPIO端口;具体复用引脚随MAXQ器件的不同而不同。在复位或上电复位(POR)状态后,调试端口默认为使能状态,常规应用系统不能使用这些端口引脚。为了屏蔽调试端口功能使端口引脚能够用于常规目的,必须把系统控制寄存器的TAP位(SC.7)清零。然后按正常方式通过PD、PO和PI寄存器控制这些端口引脚。

硬件设计注意事项

若在系统开发阶段和批量生产阶段使用同一套硬件,不论调试接口的端口作为GPIO还是JTAG/TAP使用,都必须使硬件能够正常运行。例如:当这些引脚用于JTAG/TAP时,任何与这些引脚相连的外部器件都必须释放这些引脚,使其处于三态模式,以保证主机与MAXQ这些引脚之间的正确驱动。此外,在线调试或引导加载过程中,连接到这些引脚的器件不能受主机和MAXQ在这些引脚上的任何驱动信号的影响。这一点特别需要注意,因为对这些信号的响应有可能造成器件损坏。

举一个例子,假设端口中的一个引脚既被用于接收TCK信号(当被用于JTAG/TAP模式时)又被用于控制继电器(在GPIO模式时)。当用JTAG接口调试器件时,由于TCK信号的快速翻转将导致继电器的接通和断开,可能导致连接到继电器的外部设备损坏。为了防止这种情况发生,在器件将要引导加载或进行在线调试时,所有通过JTAG/TAP接口与这些引脚相连的外部器件都必须被禁用。

软件设计注意事项

禁用JTAG接口的操作非常简单,任何时候只要把TAP (SC.7)位清零,系统将立即使用这些端口引脚。为了把应用系统设置在适当模式,系统开发人员倾向于在应用程序代码的开始就把TAP位清零。然而,这么早就把TAP位清零会引起应用系统开发中出现一些问题。

如果应用系统中采用掩模ROM MAXQ器件(这种器件不能被重新编程),那么在应用程序的起始位置对TAP清零就不合理。这种情况下,由于程序代码已经烧入器件且不能更改,将无法使用引导加载和在线调试功能。

然而,对采用可重新编程的MAXQ器件的应用系统来说,其应用软件应该总是在TAP位清零和禁用JTAG接口之前提供几秒钟的延时。如果紧随复位操作之后马上对TAP位清零,在试图重新加载或调试应用程序的时候可能会顺序发生以下事件:
  1. 主机驱动一个低电平/RESET信号,从而使MAXQ处于复位状态。
  2. 主机释放/RESET复位信号。
  3. MAXQ脱离复位状态并开始运行程序代码,因此JTAG接口立即被禁用。
  4. 主机试图通过JTAG接口与器件通信,但通信已经无法进行。
这个过程与应用系统在复位之后马上进入关机状态或低功耗关断模式类似。对于可以禁用/RESET引脚的器件这个问题更加严重。这种情况下,实际的复位操作取决于主机触发的顺序,还取决于器件是仅通过/RESET引脚还是通过上电、断电过程复位的。

为了避免上述软件问题,任何禁用/TAP调试端口或/RESET引脚的应用系统在启动时都应该在关闭调试引擎之前提供几秒钟的延时。这个时间延迟可以使外部主机在JTAG接口被禁用之前通过它对MAXQ进行控制。另一种方法是:应用系统可通过检查别的端口引脚(由跳线器或按钮控制)上的输入电平来确定JTAG端口使能还是禁用。

结论

MAXQ微控制器的TAP (SC.7)位提供了JTAG接口的复用功能。只要遵循某些硬件和软件设计的注意事项,JTAG接口的4个引脚就可用于调试/引导加载,或当作通用I/O使用。对于引脚数目受限的系统来说,这些引脚的复用可提供额外的资源。而当采用MAXQ器件开发应用系统时,这些引脚的复用也会提高系统的灵活性。