VJFlasher是为了验证我定义的USB<==>JTAG接口而计划开发的的一个JTAG编程工具,下面简单描述一下整个构思(这么看来,VJFlasher可以说只是一个脚本解析程序。甚至可以在底层库的支持下,可以使用Perl、Python或者Java语言):
VJFlasher的特点:
1.使用脚本来实现各种芯片的支持,这个特性类似SVF或者XSVF的文件,但更加具体化,克服SVF或者XSVF的不能读取数据校验的缺点。
2.脚本功能定义全面的话,可以支持各种芯片的JTAG下载,甚至调试。
3.底层接口简单,就是
使用单片机实现低成本高速JTAG_TAP接口中定义的几个接口函数
支持的编程目标(使用32位变量定义,最多支持32种(每种有写和校验),可以增加#size来定义区/页的大小,脚本中还需要定义各个目标的种种参数(支持的目标种类,编程方式,读写属性等)):
1.Internal SRAM
2.Register
3.IO
4.Application
5.Bootloader
6.EEPROM
7.Fuses
8.Lock
9.User Signature
10.Chip Signature
说明:编程过程中,有2个变量记录编程的过程,一个是刚刚进行编程的目标,另一个是已经执行过编程的目标
每个编程目标需要在脚本中定义个函数(有读写的区分):
1.编程目标初始化
2.当前区/页初始化
3.编程目标区/页
4.当前区/页终止化
5.编程目标终止化
在脚本中需要定义的其他函数:
1.芯片初始化
2.芯片终止化
3.进入编程模式
4.推出编程模式
脚本中可选的函数(如果未定义,这使用程序中默认的函数):
1.编程总函数(用于支持某些不同于以定义的接口的芯片)
2.各个目标的编程函数(用于支持某些不同于以定义的接口的芯片)
脚本中定义的调试接口函数:
TBD
VJFlasher定义的内部函数(对函数的调用只是设置数据,一旦遇到带vital的函数或者Commit函数,则集中处理数据,以获得最大的速度):
1.RW_IR
2.RW_DR
3.JTAG_RESET
4.Delay
5.Commit
函数参数:
1.vital:此次调用关键,需要立即发送命令
2.check:需要做的返回数据检查(比如写IR的返回数据,可以制定出错时的操作(推出程序、n次重试))
3.实际操作需要的数据
用户131114 2008-10-24 13:16
walnutcy_696810119 2008-10-23 22:52