原创 使用单片机实现低成本高速JTAG_TAP接口

2008-8-3 20:23 6290 3 8 分类: MCU/ 嵌入式

JTAG接口的出处就不多做介绍了,自己在网上可以找到不少的资料。

JTAG_TAP接口有4个主要的信号线,分别是TCK,TDI,TDO,TMS;还有一些可选的信号线,如RTCK,TRST。
TCK信号为TAP接口的同步时钟信号。
TDI和TDO分别为TAP接口的输入和输出信号。
TMS用于控制TAP的状态。
RTCK为TCK信号的返回信号,一般用于TCK速度的自动调整(LPCARM还使用这个信号来使能JTAG接口)。
TRST为TAP的复位信号,根据TAP状态转换图,可以使用5个'1'的TMS信号来替代。

TAP状态转换图:
点击看大图
其中,各个状态的带箭头的连线上的数字为TMS信号,也就是说TMS信号控制着TAP接口的状态。
虽然状态看似比较多,但一般有意义的只有几个:TLR(Test-Logic-Reset)、RTI(Run-Test/Idle)、Capture-IR、Capture-DR、Shift-IR、Shift-DR、Update-IR、Update-DR这么一些,其他的状态都是浮云(或者说路过)。TAP接口主要控制着2个'寄存器':IR(命令寄存器)和DR(数据寄存器)。

TAP主要操作有3个:
1.TAP复位,可以通过TRST或者TMS上输出5个'1'(进入TLR状态)来实现
2.读写IR
3.读写DR
可能了解ARM调试接口的人会说,在通过JTAG接口给ARM核总线写入指令后,需要控制在RTI状态下的TCK周期。确实,不过我认为这个控制是读写IR或者DR的一个参数。如果这个参数是0,这TAP会停留在Update-IR或者Update-DR,如果>0,则会在RTI状态上停留n个周期。

如果归结到程序上,可以实现3个函数(除了延时函数外):
Access_IR,Access_DR,Write_TMS

接下来就是关键了,如果使用低成本的单片机来实现这个接口(不使用IO口来模拟)
当然,这个对单片机是有一定要求的,需要有2路硬件SPI兼容接口(有些单片机的USART可以工作在SPI模式下),一路为主SPI,一路为从SPI。
把这2路SPI接口的SCK接在一起,作为TCK信号;主SPI接口的MISO作为TDO,MOSI作为TDI;从SPI接口的MISO作为TMS。这样,通过这2路SPI接口,就可以实现一个硬件的JTAG接口。当然,还是有一些限制的,比如,所有的操作必须以字节为单位,2次SPI操作间,由于需要运行程序,所以也会有一些延时。
为了弥补操作必须以字节为单位这个缺陷,可以利用Pause-IR和Pause-DR状态下,无论输出多少个TMS'0',都不会影响结果的特性,来解决。也就是说,当需要执行的操作有小于8位的余量时,可以在Pause-XR状态下填补一些'0',这样就可以使每个操作都凑成字节操作。

代码:
可以参考Versaloon的实现代码中的JTAG.c文件,里面的代码还考虑到了实现JTAG菊花链时,需要的额外处理。

验证项目(计划中):
VJFlasher -- Versaloon Jtag Flasher,可以通过xml格式的配置文件简单的增加对各种芯片的支持(虽说简单是指不需要修改程序)

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户131114 2009-7-27 18:43

可以根据JTAG的时序,考虑是否可以替代。

用户146821 2009-7-27 14:04

可以使用 I2C 来代替 从SPI么?使用STM32

用户131114 2008-12-1 11:35

at91sam7s64没有用过,但好像JLink就是用这个芯片的,应该是用2个SPI(其中一个可能是其他模块代替的)

用户472164 2008-11-30 15:58

兄弟,知道如何用at91sam7s64来模拟出JTAG时序吗? 是不是用at91sam7s64上面的两来USART来实现?

用户472164 2008-11-30 15:58

兄弟,知道如何用at91sam7s64来模拟出JTAG时序吗? 是不是用at91sam7s64上面的两来USART来实现?
相关推荐阅读
用户131114 2010-12-25 22:43
征集各种单片机/存储器的支持
先随便列几个:Actel FPGA,Renesas R8C,Nuvoton Cortex。当然,Versaloon已经支持的就不需要了。当然,一些简单的比如SPI Flash,可以都可以。合作(或者交...
用户131114 2010-12-11 17:06
STM32F207 demo板原理图
这个硬件是VersaloonHandy平台的第一个测试评估硬件。资源:1. usb device + host, LTC41602. 3路可控电压,分别用于SD供电、TFT背光、对外供电,IIC接口控...
用户131114 2010-09-13 15:13
Versaloon 平台硬件规划
按照计划,几个平台都进行的非常顺利。第二批的生产也在进行中。 抽空规划了一下Versaloon平台的下一个硬件。1。使用120M STM32F203系列100脚芯片,USB 2.0 HS OTG2。2...
用户131114 2010-09-11 01:04
USBDM也成为浮云了。。。。。
HSC08/HCS12(X)的调试支持也基本按时完成了。。。。。。碰到的困难比预想的多,8过仍旧只是浮云。。。。。。coldfireV1应该也可以支持,不过需要有demo板测试并做相应的调整。 上图:...
用户131114 2010-09-02 02:28
Versaloon平台发展规划
最近发布的Versaloon调试仿真平台计划,相信很快就能完成第一阶段,有人怀疑不? Versaloon在实现的理念上,有其先进性,在同一个简单的硬件上,能够实现这么多种芯片的支持,并且具备不错的性能...
用户131114 2010-09-01 17:40
STLink简单的像浮云一样
原来计划花2天时间,没想到一天就搞定了。。。。。。在STM8S103F2上测试通过。STVP在下载STM8S103F2的速度并不是一般的慢啊,每次64字节。。。。。。OMG。。。。 下一步准备OSBD...
EE直播间
更多
我要评论
5
3
关闭 站长推荐上一条 /3 下一条