通常在嵌入式应用中,微控制器上的每一个端口引脚都需要,没有多余的端口引脚。大多数具有可重写内部程序存储器(如闪存或EEPROM)的MAXQ®微控制器支持标准化的JTAG/TAP接口(也称为调试端口),外部主机使用该接口访问在线调试或在线编程(引导加载程序)功能。构成此接口的引脚通常与标准 GPIO 端口引脚功能多路复用,这意味着它们可能可用于应用程序,而不是在开发阶段完成后浪费。本应用笔记讨论了在一般应用中重复使用这些引脚的方法,并介绍了在这样做时应牢记的注意事项。
概述
通常在嵌入式应用中,微控制器上的每个端口引脚都是应用所必需的;没有一个作为备用。但是,开发人员可以选择解决此问题。大多数具有可重写内部程序存储器(如闪存或EEPROM)的MAXQ微控制器支持标准化的JTAG/TAP接口(也称为调试端口),外部主机使用该接口访问在线调试或在线编程(引导加载程序)功能。用于此接口的引脚通常与标准 GPIO 端口引脚功能多路复用,以便在开发阶段完成后潜在地将其提供给应用程序。本应用笔记解释了如何在一般应用中重复使用这些接口引脚。该说明还确定了在多路复用这些引脚时要考虑的一些情况。
应用程序开发的阶段
在开发阶段,JTAG兼容的调试端口提供了许多有用的功能。首先,调试端口允许在外部主机的控制下加载应用程序(使用MAX-IDE,Rowley CrossWorks或IAR Embedded Workbench®等开发环境)。这意味着可以测试、修改应用程序,并在下一个测试周期中再次快速加载应用程序。其次,调试端口允许访问MAXQ架构提供的在线调试功能。这些调试功能包括读写寄存器、一次单步执行程序代码以及查看程序、数据和堆栈存储器的能力。最后,使用引导加载程序和在线调试器对应用程序可用的内存资源几乎没有影响。这是因为在线调试功能完全在MAXQ硬件和实用程序ROM中实现。
一旦应用完成并经过测试,就不再需要在线调试功能。此外,在大批量部署中,可重新编程的MAXQ器件被屏蔽ROM版本所取代,也不需要在线编程(引导加载程序)功能,这意味着调试端口不再有任何用途,可以忽略不计...或更有创意地使用。当MAXQ器件上的GPIO端口引脚数量有限且不足以满足应用需求时,回收专用于JTAG兼容调试端口的端口引脚并使其可用于一般应用可能特别有用。
重复使用调试端口引脚
以下四个引脚用于实现JTAG兼容的调试端口接口。
TCK:测试时钟—MAXQ输入
TMS:测试模式选择—MAXQ输入
TDO:测试数据输出—MAXQ输出
TDI:测试数据输入—MAXQ输入
这四个引脚通常与四个 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 位可能会导致应用程序开发过程中出现问题。
如果应用程序将在屏蔽ROM MAXQ器件上运行(永远无法重新编程),那么没有理由不在应用程序开始时将TAP清除为零。在这种情况下,将永远不会使用引导加载程序和在线调试功能,因为代码已经在设备中编程并且无法更改。
但是,对于在可重新编程的MAXQ器件上开发的应用,应用软件在清除TAP位和禁用JTAG接口之前,应始终提供几秒钟的延迟。如果在重置后立即清除 TAP 位,则在尝试重新加载或调试应用程序时,可能会导致以下事件序列:
主机将/复位至低电平,使MAXQ处于复位状态。
主机释放/有效复位。
MAXQ从复位状态出来,开始运行代码,从而立即关闭JTAG接口。
主机尝试通过JTAG接口与器件通信,但无法这样做。
此顺序类似于在复位后立即进入停止模式或另一种极低功耗模式的应用程序引起的问题。在允许禁用/RESET引脚的器件上,问题可能更糟。在这些情况下,实际复位行为取决于主机触发的事件顺序,以及器件是仅使用/RESET引脚复位,还是通过上电和断电复位。
为避免上述软件问题,任何关闭调试/TAP端口或/RESET引脚的应用都应在启动时延迟几秒钟,然后再关闭调试引擎。这种延迟允许外部主机在关闭JTAG接口之前通过JTAG接口控制MAXQ。或者,应用可以检查另一个端口引脚(通过跳线或按钮控制)上的输入电平,以确定是应启用还是禁用JTAG端口。
结论
MAXQ微控制器上的TAP (SC.7)位提供的JTAG接口的多路复用功能允许接口的四个端口引脚用于调试/引导加载程序或通用I/O。只要遵循一定的硬件和软件预防措施,这些引脚可以作为引脚受限系统的附加资源重复使用,并在使用MAXQ器件开发应用时增加灵活性。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !