JTAG库和SVF文件编程Xilinx.doc_第1页
JTAG库和SVF文件编程Xilinx.doc_第2页
JTAG库和SVF文件编程Xilinx.doc_第3页
JTAG库和SVF文件编程Xilinx.doc_第4页
JTAG库和SVF文件编程Xilinx.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用TINI JTAG库和SVF文件编程Xilinx PROM器件摘要:本应用笔记阐述了如何利用TINI JTAG库以及串行向量格式(SVF)文件来编程Xilinx PROM器件。假定读者已经对JTAG和可编程逻辑器件有了一定认识。 概要本应用笔记阐述了如何利用TINI JTAG库以及串行向量格式(SVF)文件来编程Xilinx PROM器件。假定读者已经对JTAG和可编程逻辑器件有了一定认识。 介绍微型互联网接口(TINI)是Dallas Semiconductor公司开发的一个平台。它包含了一套小型却功能强大的芯片组以及Java可编程虚拟机。芯片组具有处理、控制、器件级通信和网络互连的能力。为了和任何JTAG器件通信,TINIs400适配板在J21端具有4引脚JTAG输出。 这些引脚将直接连到JTAG器件上标准JTAG引脚TDI、TDO、TMS和TCK。 在系统编程PROM可以进行单独编程,或者级连编程。链中的所有器件共享TCK和TMS信号。TINI的TDI信号接到边界扫描链中第一个器件的TDI输入端。第一个器件的TDO信号接到链中第二个器件的TDI输入上,如此连接下去。链中的最后一个器件的TDO输出接到TINI的TDO引脚上,见图1所示。 图1. 所有JTAG操作都通过器件的测试访问端口进行控制 所有JTAG操作都是由器件的测试访问端口(TAP)控制的。TAP包括四个信号:TMS、TDI、TDO和TCK。 这些信号通过TAP控制器,即16状态有限状态机与器件相互作用。JTAG的TMS信号控制状态间的转换。指令和数据由TDI引脚移入器件,并由TDO引脚移出。TDI和TDO信号的所有状态转换和行为都与TCK同步。见图2。 图2. 所有JTAG操作都是将数据移入或移出JTAG指令和数据寄存器。TAP控制器可对所有这些寄存器直接访问。有两类JTAG寄存器:指令寄存器(IR)和数据寄存器(DR)。访问IR通过移位-IR (Shift-IR)状态实现,而访问DR通过移位-DR (Shift-IR)状态实现。IR长度通常是大于2位的任意长度。除了由IEEE Std. 1149.1定义的BYPASS指令为全1以外,生产商定义所有其它的指令位码。 在本应用笔记中,JAVA样例代码将解释说明串行向量格式(SVF)文件来进行编程。这里所用的SVF是描述高层IEEE 1149.1 (JTAG)总线操作的语法规范。JTAG设备和软件提供商已经将SVF作为标准用于数据交换。SVF以紧凑和可移植的形式描述JTAG链操作。SVF文件通过描述需要移入器件链的信息,记录JTAG操作。通过Xilinx iMPACT (详细信息见下面)软件,将JTAG操作记录在SVF文件中。SVF文件写成ASCII文本形式,因此可以在任何文本编辑器中人工读、修改和写。“许多第三方编程工具使用SVF文件作为输入,这样利用包含在SVF文件中的信息可以对JTAG链中的Xilinx器件编程。” JTAG库简要说明所开发的JTAG类库可帮助用户使用TINI与JTAG器件进行通信。一个可能的应用是:从遥远的位置对可编程逻辑进行动态和在系统更新。用户能够将TAP控制器初始化到初始状态、浏览16个状态、获得或设置TAP状态、产生时钟信号、发送命令和数据等等。以下为JTAG类方法的简要说明: public jtag(): 加载jtag库。 public String getVersion(): 返回jtag类的版本。 public int runClock( int numticks ): 以numticks指定的数量运行时钟。 public byte initialize(): 先将TMS置高达五个TCK时钟脉冲,然后TMS置低1个时钟并进入缺省状态Run-Test-Idle。 public byte setState( byte aState ): 将目标状态设置为aState指定的状态。 public byte getState(): 返回目标状态。 public byte scanState( byte state ): 将TAP控制器的状态机转换到参数state指定的状态。 public String displayState(byte state): 显示TAP控制器的状态。 public byte waitState( int msecs ): 进程延时一定毫秒数。 public byte getTDO(): 获得引脚TDO的当前状态。 public void setTDI(byte logic): 引脚TDI设定为指定的逻辑状态。 public byte getTDI(): 获得引脚TDI的当前状态。 public void setTMS(byte logic): 引脚TMS设定为指定的逻辑状态。 public byte getTMS(): 获得引脚TMS的当前状态。 public void setTCK(byte logic): 引脚TCK设定为指定的逻辑状态。 public byte getTCK(): 获得引脚TCK的当前状态。 public byte sendNrcv(byte data, int offset, int size, byte numberOfBits, boolean state, boolean update, byte extraHeaderClock, byte HeaderBitVal,byte extraTrailerClock, byte TrailerBitVal): 发送数据字节数组,并接收返回的字节数组。 public byte sendNrcv(int data, int offset, int size, byte numberOfBits, boolean state, boolean update,byte extraHeaderClock, byte HeaderBitVal,byte extraTrailerClock, byte TrailerBitVal): 发送数据整形数组,并接收返回的整形数组。 关于JTAG类的更多详细信息,请访问/tini/appnotes/jtaglib。 硬件和软件需求以下为所需要的硬件和软件: TINI400评估板,并配置有TINI OS 1.12或更高版本(见/appnotes.cfm/appnote_number/612)。 JTAG器件(可编程逻辑)。 器件链中JTAG器件模型的SVF文件。关于SVF文件的更多信息,请查阅/bvdocs/appnotes/xapp503.pdf。 TINI JTAG库。关于JTAG类的更多信息请访问/tini/appnotes/jtaglib。 编程步骤第1步: 将TINI板的4个JTAG引脚与JTAG器件的4个JTAG引脚相连。第2步: 遵循SVF文件的命令并使用JTAG库编写JAVA应用程序,来对JTAG器件进行编程,编译后加载到TINI。(附录A: 一个样例Idcode.svf文件,实现从单独的XC18V02 Xilinx器件读取IDCODE。) (附录B: 样例 AppJtag.java程序,将SVF文件作为输入并产生JTAG信号来读取IDCODE。该样例程序是用来处理单独器件的(对于级连器件的详细信息见附录C)。)(附录C: 展示了由已有的SVF文件编程级连器件的步骤。)第3步: 运行JAVA程序。可执行AppJtag.tini将加载到TINI板。在TINI提示符下录入“java AppJtag.tini Idcode.svf”来运行程序。程序将产生JTAG信号与JTAG器件进行通信。注意: 1/ 生成的编程JTAG器件SVF文件应该与器件链中设计的确切模型一致。2/ 所有操作码,例如编程JTAG器件的READ、WRITE、ERASE及其它命令等,都是由生产商定义的。SVF文件应该包含用户需要的所有操作码。 示例以下示例说明了如何利用JTAG库从Xilinx JTAG器件XC18V02中读取Idcode。完整的样例代码,请查阅附录B。1/ 生成器件模型的SVF文件:使用Xilinx WEB START来生成SVF文件。 执行iMPACT并选择单选按钮“Prepare Configuration Files”选项,然后点击next。选择单选按钮“Boundary Scan file”并点击next。选择“SVF File”然后点击finish。 在对话框中录入SVF文件名,例如example,并点击OK。 选择要加载的name_of_mcs_file.mcs文件,并从列表中选择PROM器件(XC18V02_vq44)。 XC18V02 已加到模型中。 点击我们要编程的XC18V02器件型号。器件将为高亮显示。 点击鼠标右键,并选择编程选项。勾选“Get Idcode”。 在模型外点击鼠标以取消高亮显示器件,右击并选择option以关闭SVF。这时就生成了模型的SVF文件。 2/ 读取SVF文件并使用JTAG库来编程XC18V02器件。 以下为SVF文件的部分样例代码:/ Created using Xilinx iMPACT Software ISE WebPACK - 5.1iTRST OFF;ENDIR IDLE;ENDDR IDLE;STATE RESET IDLE;TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;/ Validating chain.TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;SIR 8 TDI (ff) SMASK (ff) ;TIR 0 ;HIR 5 TDI (1f) SMASK (1f) ;HDR 1 TDI (00) SMASK (01) ;TDR 0 ;/Loading device with idcode instruction.SIR 8 TDI (fe) SMASK (ff) ;SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK (ffffffff) ;/Loading device with conld instruction.SIR 8 TDI (f0) ;RUNTEST 110000 TCK; 遵循SVF命令并使用库向XC18V02发送命令。 SVF规范提供了四个全局填充指令:头指令寄存器(HIR)、尾部指令寄存器(TIR)、头数据寄存器(HDR)和尾部数据寄存器(TDR)。这些全局命令规定了移位操作的开始和结尾处要填充的位数,从而解决旁路器件问题,并为SVF文件压缩提供了一种简单的方法。一旦指定,这些位会出现在SIR或者SDR命令的每一组比特位的前面或者后面。 以下两个示例说明如何把SVF命令解释为JTAG库命令。示例1: 带有全局填充指令的SVF语法结构a/ SVF file commands:STATE RESET IDLE;TIR 0 ;HIR 5 TDI (1f) SMASK (1f) ;HDR 1 TDI (00) SMASK (01) ;TDR 0 ;/Loading device with idcode instruction.SIR 8 TDI (fe) SMASK (ff) ;SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK (ffffffff) ;/Loading device with conld instruction.SIR 8 TDI (f0) ;RUNTEST 110000 TCK;/Check for Read/Write Protect.SIR 8 TDI (ff) TDO (01) MASK (ff) ;/Loading device with idcode instruction.SIR 8 TDI (fe) ;SDR 32 TDI (00000000) TDO (05025093) ;/Loading device with conld instruction.SIR 8 TDI (f0) ;RUNTEST 110000 TCK;/Check for Read/Write Protect.SIR 8 TDI (ff) TDO (01) ;TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;b/ Sample JAVA program using JTAG library:import java.io.*;import m.*;import m.*public static void main(String args)myJtag = new jtag();int SIZE = 0x1000;byte byteArray = new byteSIZE;byte HeaderInstBitVal = (byte)0x00;byte TrailerInstBitVal = (byte)0x00;byte HeaderDataBitVal= (byte)0x00;byte TrailerDataBitVal= (byte)0x00; / STATE RESET IDLE;myJtag.initialize();/This JTAG library method will initialize / XC18V02 TAP controller and stay at / Run-Test/Idle / TIR 0 ;byte TIR = (byte)0x00; / HIR 5 TDI (1f) SMASK (1f) ;byte HIR = (byte)0x05;HeaderInstBitVal = (byte)0x01;/ HDR 1 TDI (00) SMASK (01) ; byte HDR = (byte)0x01; HeaderDataBitVal = (byte)0x00;/ TDR 0 byte TDR = (byte)0x00;/ SIR 8 TDI (fe) SMASK (ff) ; byteArray0 = (byte)0xfe;myJtag.sendNrcv(byteArray,0,1,(byte)8,true,false,(byte)HIR,(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK/ (ffffffff) ;byteArray0 = (byte)0x00;byteArray1 = (byte)0x00;byteArray2 = (byte)0x00;byteArray3 = (byte)0x00;myJtag.sendNrcv(byteArray,0,4,(byte)8,false,false,(byte)HDR,(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ SIR 8 TDI (f0) ;byteArray0 = (byte)0xf0;myJtag.sendNrcv(byteArray,0,1,(byte)8,true,false,(byte)HIR,(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ RUNTEST 110000 TCK;myJtag.waitState(100); / Depend on operation frequency, user can / calculate how many miliseconds to wait. 示例2: 无全局填充指令的SVF语法结构a/ SVF file commands:STATE RESET IDLE;TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;SIR 13 TDI (1fff) SMASK (1fff) ;SDR 2 TDI (00) SMASK (03) ;SIR 13 TDI (1fff) TDO (0021) MASK (1c63) ;/ Loading devices with ispen or bypass instruction.SIR 13 TDI (1d1f) ;SDR 7 TDI (68) SMASK (7f) ;/ Loading device with faddr instruction.SIR 13 TDI (1d7f) ;SDR 17 TDI (000002) SMASK (01ffff) ;RUNTEST 1 TCK;/ Loading device with ferase instruction.SIR 13 TDI (1d9f) ;RUNTEST 100000 TCK;/ Loading device with a faddr instruction.SIR 13 TDI (1d7f) ;SDR 17 TDI (000002) ;RUNTEST 1 TCK;/ Loading device with serase instruction.SIR 13 TDI (015f) ;RUNTEST 37000 TCK;/ Loading devices with conld or bypass instruction.SIR 13 TDI (1e1f) ;RUNTEST 110000 TCK;/ Loading devices with ispen or bypass instruction.SIR 13 TDI (1d1f) ;SDR 7 TDI (68) SMASK (7f) ;/ Loading device with a fdata0 instruction.SIR 13 TDI (1dbf) ;b/ Sample JAVA program using JTAG library:import java.io.*;import m.*;import m.*public static void main(String args)myJtag = new jtag();int SIZE = 0x1000;int intArray = new intSIZE;byte HeaderInstBitVal = (byte)0x00;byte TrailerInstBitVal = (byte)0x00;byte HeaderDataBitVal= (byte)0x00;byte TrailerDataBitVal= (byte)0x00; / STATE RESET IDLE;myJtag.initialize();/This JTAG library method will initialize / XC18V02 TAP controller and stay at / Run-Test/Idle / TIR 0 ;byte TIR = (byte)0x00; / HIR 0 ;byte HIR = (byte)0x00; / HDR 0 ; byte HDR = (byte)0x00; / TDR 0 byte TDR = (byte)0x00;/ SIR 13 TDI (1fff) SMASK (1fff) ; intArray0 = (int)(0x1fff&0x1fff);myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 2 TDI (00) SMASK (03) ;intArray0 = (int)(0x00&0x03);myJtag.sendNrcv(intArray,0,1,(byte)2,false,false,(byte)HDR, (byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ SIR 13 TDI (1fff) TDO (0021) MASK (1c63) ;intArray0 = (byte)0x1fff;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SIR 13 TDI (1d1f) ;intArray0 = (byte)0x1d1f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 7 TDI (68) SMASK (7f) ;intArray0 = (int)(0x68&0x7f);myJtag.sendNrcv(intArray,0,1,(byte)7,false,false,(byte)HDR, (byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ SIR 13 TDI (1d7f) ;intArray0 = (byte)0x1d7f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 17 TDI (000002) SMASK (01ffff) ;intArray0 = (int)(0x0002 & 0xffff);TDR = (byte)0x01;myJtag.sendNrcv(intArray,0,1,(byte)16,false,false,(byte)HDR, (byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ RUNTEST 1 TCK;myJtag.waitState(1);/ SIR 13 TDI (1d9f) ;intArray0 = (byte)0x1d9f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ RUNTEST 100000 TCK;myJtag.waitState(1000);/ SIR 13 TDI (1d7f) ;intArray0 = (byte)0x1d7f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 17 TDI (000002) ;intArray0 = (int)(0x0002 & 0xffff);TDR = (byte)0x01;myJtag.sendNrcv(intArray,0,1,(byte)16,false,false,(byte)HDR, (byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ RUNTEST 1 TCK;myJtag.waitState(1);/ SIR 13 TDI (015f) ;intArray0 = (byte)0x015f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal); / RUNTEST 37000 TCK;myJtag.waitState(100);/ SIR 13 TDI (1e1f) ;intArray0 = (byte)0x1e1f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ RUNTEST 110000 TCK;myJtag.waitState(110);/ SIR 13 TDI (1d1f) ;intArray0 = (byte)0x1d1f;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);/ SDR 7 TDI (68) SMASK (7f) ;intArray0 = (int)(0x68 & 0x7f);TDR = (byte)0x00;myJtag.sendNrcv(intArray,0,1,(byte)7,false,false,(byte)HDR, (byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);/ SIR 13 TDI (1dbf) ;intArray0 = (byte)0x1dbf;myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR, (byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);结论由提供的SVF文件来编程Xilinx PROM器件是非常简单的。但是,如果用户能够正确分析SVF文件并理解如何确定对器件链中哪个器件进行编程,会更有好处。知道了这些信息,编程者能够更加高效地使用JTAG库。软件小组要对遥远位置的Xilinx JTAG器件进行编程,已有实际应用。利用开发包中的嵌入式JTAG编程软件,并以mcs文件作为输入文件,这是很容易做到的。 附录A获得器件IDCODE的完整样例IDCODE.SVF文件 / Created using Xilinx iMPACT Software ISE WebPACK - 5.1iTRST OFF;ENDIR IDLE;ENDDR IDLE;STATE RESET IDLE;TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;/ Validating chain.TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;SIR 13 TDI (1fff) SMASK (1fff) TDO (0021) MASK (1c63) ;TIR 0 ;HIR 5 TDI (1f) SMASK (1f) ;HDR 1 TDI (00) SMASK (01) ;TDR 0 ;/Loading device with idcode instruction.SIR 8 TDI (fe) SMASK (ff) ;SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK (ffffffff) ;/Loading device with conld instruction.SIR 8 TDI (f0) ;RUNTEST 110000 TCK;/Check for Read/Write Protect.SIR 8 TDI (ff) TDO (01) MASK (ff) ;/Loading device with idcode instruction.SIR 8 TDI (fe) ;SDR 32 TDI (00000000) TDO (05025093) ;/Loading device with bypass instruction.SIR 8 TDI (ff) ;TIR 0 ;HIR 0 ;TDR 0 ;HDR 0 ;SIR 13 TDI (1fff) SMASK (1fff) ;SDR 2 TDI (00) SMASK (03) ;附录B读取单独XILINX器件XC18V02 IDCODE的示例。 NOTES: This sample program will process SVF file with global padding instructions only. Users need to modify to work with SVF file without global padding.import java.io.*;import java.lang.*;import m.*;import m.*;public final class AppJtagprivate static jtag myJtag; / Starting index of data array static int Offset = 0; / Number of byte to send within the data array static int Size = 0; / Number of bits/byte or bits/integer static byte NumberOfBits = 8;/ State = true (Instruction); State = false (Data) static boolean State = true; / For Xilinc device this variable always false static boolean Update = false; / For Instruction header and trailer static byte HIR = 0 , TIR = 0 ; / For Data header and trailer static byte HDR = 0 , TDR = 0;/ For Instruction header and trailer bit valuestatic byte HeaderBitInstVal = 1, TrailerBitInstVal = 1; / For Data header and trailer bit valuestatic byte HeaderBitDatVal = 0, TrailerBitDatVal = 0; static int Key;static byte myData = new byte4096; static String line;static RandomAccessFile SVFFile;static File mySVF ;public static int ProcessSVFLine()int loop;int OBracket = 0, CBracket = 0 ;int myKey = 0x0;StringBuffer buffer;byte myAdd = (byte)0x0;/ Check the size in bitsmyKey = Integer.parseInt(line.substring(line.indexOf( )+1,line.indexOf( ,line.indexOf( )+1);if (myKey != 0) / myKey != 0/ Find value of data in byte formatOBracket = line.indexOf();if ( myKey/8 line.length() / Copy data string to buffer starting from open bracket to/ end of data linebuffer = new StringBuffer(line.substring(OBracket+1,line.length();/ Get another line of data and append to buffertry line = SVFFile.readLine();while(line != null) / Find close bracket CBracket = line.indexOf(),0); if ( CBracket 0; x-)myDataloop =(byte) Integer.parseInt(buffer.toString().substring(x-2,x),16);loop+;x-; catch(IOException a)System.out.println(Cannot read data + a);else/ Line of data is within one line.);CBracket = line.indexOf(),OBracket+1);if (Key 0) myAdd = (byte)0x01; else myAdd = (byte)0x00; else / Process SIR & SDR loop = 0; for (int s = CBracket - (OBracket+1); s 0 ; s-) myDataloop =(byte) Integer.parseInt(line.substring(OBracket+1,CBracket).substring(s-2,s),16); loop+; s-; switch(Key)case 0: /System.out.println(TIR & TrailerBitInstVal );TIR = (byte)myKey;TrailerBitInstVal = myAdd;break;case 1: /System.out.println(HIR & HeaderBitInstVal );HIR = (byte)myKey;HeaderBitInstVal = myAdd;break;case 2: /System.out.println(TDR & TrailerBitDatVal );TDR = (byte)myKey;TrailerBitDatVal = myAdd;break;case 3: /System.out.println(HDR & HeaderBitDatVal );HDR = (byte)myKey;HeaderBitDatVal = myAdd;break;case 4: case 5: Size = myKey;break;default:System.out.println(Invalid opcode.);return 0;return 1;public static void main(String args)/ The key words of the SVF file include:/ TRST OFF: Ignore/ ENDIR IDLE: Ignore/ ENDDR IDLE: Ignore/ STATE RESET IDLE: Ignore/ TIR 5 TDI (1f): Key word = 0, length, pin, value(Instruction/ trailer)/ HIR 5 TDI (1f): Key word = 1, length, pin, value(Instruction/ header)/ TDR 5 TDI (00): Key word = 2, length, pin, value(Data trailer)/ HDR 5 TDI (00): Key word = 3, length, pin, value(Data header)/ SIR 13 TDI (1fff): Key word = 4, length, pin,/ value(Instruction)/ SDR 32 TDI (00000000): Key word = 5, length, pin, value(Data)/ RUNTEST 110000 TCK: Key word = 0, clock pulse, pin (Run clock)/*/ Command send format for Instruction.myJtag.sendNrcv(Data,Offset,Size,(byte)NumberOfBits,State,Update,(byte)HIR,(byte)HeaderBitInstVal,(byte)TIR,(byte)TrailerBitInstVal);/ Command send format for DatamyJtag.sendNrcv(Data,Offset,Size,(byte)NumberOfBits,State,Update,(byte)HDR,(byte)HeaderBitDatVal,(byte)TDR,(byte)TrailerBitDatVal);*/ myJtag = new jtag(); if(args.length != 0)for (int x =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论