摘要:通常在嵌入式应用中,微控制器的每个端口引脚都是必需的,没有多余引脚。大部分MAXQ®微控制器带有可重新进行写操作的内部程序存储器(如闪存或EEPROM),支持标准JTAG/TAP接口(也称为调试端口)。外部主机可利用该接口执行在线调试或在线编程(引导装载)功能。构成该接口的所有引脚通常可复用为标准的GPIO功能,这就是说在开发阶段结束之后这些引脚仍可使用,而不是被废弃。本应用笔记讨论了在常规应用中复用这些引脚的方法,并且给出了一些在复用这些引脚时需要考虑的事项。
在完成了应用系统的开发测试后,不再需要使用在线调试功能。此外,在大批量生产中,可重新编程的MAXQ器件将被掩模ROM器件替代,不再需要在线编程功能。这就意味着应用系统不再使用调试端口,此时调试端口可废弃不用也可有效地对其再利用。当MAXQ器件的GPIO端口引脚数不够使用时,若把专门用于JTAG调试的端口引脚重新利用起来,并且让常规应用系统使用这些引脚,将会起到意想不到的作用。
举一个例子,假设端口中的一个引脚既被用于接收TCK信号(当被用于JTAG/TAP模式时)又被用于控制继电器(在GPIO模式时)。当用JTAG接口调试器件时,由于TCK信号的快速翻转将导致继电器的接通和断开,可能导致连接到继电器的外部设备损坏。为了防止这种情况发生,在器件将要引导加载或进行在线调试时,所有通过JTAG/TAP接口与这些引脚相连的外部器件都必须被禁用。
如果应用系统中采用掩模ROM MAXQ器件(这种器件不能被重新编程),那么在应用程序的起始位置对TAP清零就不合理。这种情况下,由于程序代码已经烧入器件且不能更改,将无法使用引导加载和在线调试功能。
然而,对采用可重新编程的MAXQ器件的应用系统来说,其应用软件应该总是在TAP位清零和禁用JTAG接口之前提供几秒钟的延时。如果紧随复位操作之后马上对TAP位清零,在试图重新加载或调试应用程序的时候可能会顺序发生以下事件:
为了避免上述软件问题,任何禁用/TAP调试端口或/RESET引脚的应用系统在启动时都应该在关闭调试引擎之前提供几秒钟的延时。这个时间延迟可以使外部主机在JTAG接口被禁用之前通过它对MAXQ进行控制。另一种方法是:应用系统可通过检查别的端口引脚(由跳线器或按钮控制)上的输入电平来确定JTAG端口使能还是禁用。
简介
通常在嵌入式应用中,微控制器的每个端口引脚对于实际应用来说都是必需的,没有多余的引脚。然而,开发人员可采用其他方法来解决这个问题。大部分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输入
硬件设计注意事项
若在系统开发阶段和批量生产阶段使用同一套硬件,不论调试接口的端口作为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位清零,在试图重新加载或调试应用程序的时候可能会顺序发生以下事件:
- 主机驱动一个低电平/RESET信号,从而使MAXQ处于复位状态。
- 主机释放/RESET复位信号。
- MAXQ脱离复位状态并开始运行程序代码,因此JTAG接口立即被禁用。
- 主机试图通过JTAG接口与器件通信,但通信已经无法进行。
为了避免上述软件问题,任何禁用/TAP调试端口或/RESET引脚的应用系统在启动时都应该在关闭调试引擎之前提供几秒钟的延时。这个时间延迟可以使外部主机在JTAG接口被禁用之前通过它对MAXQ进行控制。另一种方法是:应用系统可通过检查别的端口引脚(由跳线器或按钮控制)上的输入电平来确定JTAG端口使能还是禁用。
评论
查看更多