原创 CortexM3 JTAG超频技术原理

2010-5-25 20:08 2027 7 7 分类: MCU/ 嵌入式

背景资料:
CortexM3内核对JTAG操作有一个限制,就是JTAG的最高速度是CCLK / 6。
对于STM32,复位后,系统使用内部8M RC作为时钟,那么这时JTAG最高可以得到的速度是8M / 6 = 1300KHz。
对于LPC1700,复位后,系统使用内部4M RC作为时钟,那么这是JTAG最高可以得到的速度是4M / 6 = 650KHz。
而JTAG的硬件实现,应该是类似一个带状态机的移位寄存器 。对于移位寄存器的操作,是应该可以得到非常高的速度的。

分析:
CortexM3内核对于JTAG速度的限制,是源于JTAG读写数据后,需要访问总线。而访问总线是需要一定的时间的,就是这个时间,拖累了JTAG速度。

验证:
JTAG的状态机,看似没有必要地非常复杂,但是,实际上,每个状态的设置都非常讲究。对这些状态机没有深刻理解的话,是不能完全理解JTAG的。包括OpenOCD中的驱动,都没有完全利用某些状态。
在JTAG访问完后,在某些状态下,多设置一些时钟,用于等待总线操作完成。测试发现,STM32和LPC1700在使用内部RC作为时钟的时候,都可以达到4500KHz或者9000KHz的速度。其中,LPC1766在最高的速度下,可以达到超过70KB/s的Flash下载速度(在Ubuntu10.04下测试,在WindowsXP下要慢10%)。

Versaloon的JTAG接口就是使用了这个技术,可以说,在CortexM3内核运行在低速的时候,下载速度是OpenOCD的好几倍。毕竟,9000KHz和OpenOCD使用的650KHz比,已经不是一个等级上了。
另外,听说JLink有一个CortexM3的下载程序,对于STM32,可以达到28KB/s的下载速度,不确定其使用的是什么技术。在OpenOCD下,1300KHz的JTAG速度下,STM32的下载速度是13KB/s左右。Versaloon(使用vsprog)的下载速度是33KB/s左右。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条