JTAG兼顾程序写入和程序调试,ISP只有程序写入的功能。 启用JTAG功能时,JTAG那几个管脚只能JTAG专用,不能当成原来的I/O脚使用。 ISP在程序写入之后,所有的管脚都能正常使用。 程序调试阶段可以启用JTAG功能。程序定型进入生产后,JTAG要关闭,用并行烧写或ISP方式烧写。
1FPGA器件有三类配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式。AS模式(activeserialconfigurationmode):FPGA器件每次上电时作为控制器,由FPGA器件引导配置 *** 作过程,它控制着外部存储器和初始化过程,从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程配置数据通过DATA0引脚送入FPGA,配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。PS模式(passiveserialconfigurationmode):则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,EPCS作为控制器件,把FPGA当作存储器,把数据写人到FPGA中,实现对FPGA的编程。该模式可以实现对FPGA在线可编程。在下载配置的时候对于CycloneII的器件,如EP2C8,在JTAG下载方式对应sof,AS下载方式对应pof。JTAG:JTAG是直接烧到FPGA里面的由于是SRAM断电后要重烧,AS是烧到FPGA的配置芯片里保存的每次上电就写到FPGA里。一般情况下,CycloneII开发板上应该有两种下载模式,AS和JTAG。AS就是下载pof文件到EPCS中。而JTAG就是下载sof文件到FPGA中的RAM中。关于JTAG的原理,大家可以参考OPEN-JTAG开发小组写的《ARMJTAG调试原理》。JTAG、BDM都比较类似,实际上是将仿真功能嵌入到芯片内部,接上比较简单的调试工具就可以进行开发了,省掉了高价的仿真器。JTAG调试用到了TCK、TMS、TDI、TDO和TRST这几个脚。其中TRST是用来对TAPcontroller进行复位的,它不是必须的。通过在TMS脚也可以使TAPcontroller复位。TestClockInput(TCK)TCK为TAP的 *** 作提供了一个独立的、基本的时钟信号,TAP的所有 *** 作都是通过这个时钟信号来驱动的。TCK在IEEE11491标准里是强制要求的。TestModeSelectionInput(TMS)TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。TMS在IEEE11491标准里是强制要求的。TestDataInput(TDI)TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)。TDI在IEEE11491标准里是强制要求的。TestDataOutput(TDO)TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位串行输出的(由TCK驱动)。TDO在IEEE11491标准里是强制要求的。TestResetInput(TRST)TRST可以用来对TAPController进行复位(初始化)。不过这个信号接口在IEEE11491标准里是可选的,并不是强制要求的。因为通过TMS也可以对TAPController进行复位(初始化)。FPGA在正常工作时,它的配置数据存储在SRAM中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS。在实用系统中,多数情况下必须由FPGA主动引导配置 *** 作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中FPGA配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。专用配置器件:EPC型号的存储器常用配置器件:EPC1,EPC2,EPC4,EPC8,EPC1441(现在好像已经被逐步淘汰了)等,对于CycloneII系列器件,ALTERA还提供了针对AS方式的配置器件,EPCS系列如EPCS1,EPCS4配置器件也是串行配置的。注意,他们只适用于cyclone系列。除了AS和PS等单BIT配置外,现在的一些器件已经支持PPS,FPS等一些并行配置方式,提升配置了配置速度。当然所外挂的电路也和PS有一些区别。还有处理器配置比如JRUNNER等等,如果需要再百度吧,至少不下十种。比如Altera公司的配置方式主要有PassiveSerial(PS),ActiveSerial(AS),FastPassiveParallel(FPP),PassiveParallelSynchronous(PPS),PassiveParallelAsynchronous(PPA),PassiveSerialAsynchronous(PSA),JTAG等七种配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三种。2对FPGA芯片的配置中,可以采用AS模式的方法,如果采用EPCS的芯片,通过一条下载线进行烧写的话,那么开始的"nCONFIG,nSTATUS"应该上拉,要是考虑多种配置模式,可以采用跳线设计。让配置方式在跳线中切换,上拉电阻的阻值可以采用10K。3在PS模式下tip:如果你用电缆线配置板上的FPGA芯片,而这个FPGA芯片已经有配置芯片在板上,那你就必须隔离缆线与配置芯片的信号。一般平时调试时不会把配置芯片焊上的,这时候用缆线下载程序只有在调试完成以后,才把程序烧在配置芯片中,然后将芯片焊上,或者配置芯片就是可以方便取下焊上的那种,这样出了问题还可以方便地调试。在AS模式下tip:用过一块板子用的AS下载,配置芯片一直是焊在板子上的,原来AS方式在用线缆对配置芯片进行下载的时候,会自动禁止对FPGA的配置,而PS方式需要电路上隔离。4一般是用JTAG配置epc2和flex10k,然后epc2用PS方式配置flex10k这样用比较好(这是我在网上看到的,可以这样用吗怀疑中)望达人告知5下载电缆,Altera下的下载电缆分为ByteBlaster和ByteBlasterMV,以及ByteBlasterII,现在还推出了基于USB-blaster由于BB基本已经很少有人使用,而USB-Blaster现在又过于昂贵,这里就说一下BBII和BBMV的区别BBII支持多电压供电55v,33v,25v,18v;BBII支持三种下载模式:AS,可对Altera的As串行配置芯片(EPCS系列)进行编程;PS可对FPGA进行配置;JTAG,可对FPGA,CPLD,即Altera配置芯片(EPC系列)编程;而BBMV只支持PS和JTAG。6一般在做FPGA实验板,(如Cyclone系列)的时候,用AS+JTAG方式,这样可以用JTAG方式调试,而最后程序已经调试无误了后,再用AS模式把程序烧到配置芯片里去,而且这样有一个明显的优点,就是在AS模式不能下载的时候,可以利用QuartusII自带的工具生成JTAG模式下可以利用的jic文件来验证配置芯片是否已经损坏,方法详见附件(这是骏龙的人写的,摘自坛子,如有版权问题,请包涵)7Altera的FPGA可以通过单片机,CPLD等加以配置,主要原理是满足datasheet中的时序即可,这里我就不多说了,有兴趣的朋友可以看看下面几篇文章,应该就能够明白是怎么回事了。8配置时,Quartus软件 *** 作部分:(1)assignment-->device-->device&pinoptions-->选择configurationscheme,configurationmode,configurationdevice注:意在不支持远程和本地更新的机器中configurationmode不可选择,而configurationdevice中会根据不同的配置芯片产生pof文件,如果选择自动,会选择最小密度的器件和适合设计;(2)可以定义双口引脚在配置完毕后的作用,在刚才的device&pinoption-->dual-purposepins-->,可以在配置完毕后继续当I/O口使用;(3)在general菜单下也有很多可钩选项,默认情况下一般不做改动,具体用法参见Alteraconfigurationhandbook,volume2,sectionII(4)关于不同后缀名的文件的适用范围:sof(SRAMObjectFile)当直接用PS模式下将配置数据下到FPGA里用到,USBBLASTER,MASTERBLASER,BBII,BBMV适用,QuartusII会自动生成,所有其他的配置文件都是由sof生成的。pof(ProgrammerObjectFile)也是由QuartusII自动生成的,BBII适用,AS模式下将配置数据下到配置芯片中rbf(RawBinaryFile)用于微处理器的二进制文件。在PS,FPP,PPS,PPA配置下有用处。rpd(RawProgrammingDataFile)包含bitstream的二进制文件,可用AS模式配置,只能由pof文件生成。hex(hexadecimalfile)这个就不多说了,单片机里很多。ttf(TabularTextFile)适用于FPP,PPS,PPA,和bit-widePS配置方式。sbf(SerialBitstreamFile)用PS模式配置Flex10k和Flex6000的。jam(JamFile)专门用于program,verify,blank-check。
使用JTAG的时候,STM32进入的是调试模式,调试模式下,CPU无法全速运行,因为指令和代码的执行是受外部控制的,例如你可以step或者step out等等,而全速模式则是STM32自动执行代码的执行流程,这个流程你是无法干预的。。。当你断开JTAG和STM32的连接,当然就无法使用调试模式了,此时STM32就会进入全速模式,不过如果你是在仿真阶段断开的话,此时CPU仍然处理调试模式,但是无法收到调试指令(本质上是中断),一般的话,当你断开时,STM32会收到复位信号,此时就会脱离调试模式。。
当STM32烧写了程序并正常运行后,JTAG是无法启动作用的,因此这个时候,STM32已经进入正常模式,JTAG无法接管CPU,除非你重新编译,下载代码;
至于这个API,我不太清楚,不过JTAG是业内标准,你可以通过JTAG提供的功能,实现对STM32内部寄存器和内存的读取等 *** 作,这个一般的IDE都会提供的。。
不过,JTAG是老标准,STM32除了支持JTAG外,还有ARM公司提供的SWD调试技术,具体你可以看看这方面的技术文章。。
有没有亲手试试就知道我觉得应该是有的,不然怎么使用硬件阿
你去搜索下有给叫 jflash的工具不知道是谁写的工具就是一个Jtag工具不是很大,自己编译一把就可以用我也看过说用open什么什么的来实现Jtag调试好像是在ARM之家论坛还是哪
顺便说下,Linux下面也有人写了一个通过USB host来烧写flash的工具网上也有下载,好像叫做xdnw还是dnw_for_linux,就是一个简单的USB驱动,这个也是需要自己编译一把因为内核版本不同的话,也不能用在自己系统里面编译就可以用了
Linux下面大部分都是通用驱动只要把设备产品ID和厂商ID添加到内核的某些地方就可以识别
要是开发版不识别你的设备完全可以自己找到定义设备ID 的地方,添加下设备ID,编译烧写到开发板上就可以用了。
我的电脑配置比较低,装不了虚拟机,后来直接硬盘安装了Linux,但是我没有进行裸机调试,所以用不到jtag,有了上面两个工具,应该足够了,完全不需要切换到win下,文件交换我就直接用NFS。
以上就是关于STM单片机JTAG调试时也能将程序写入单片机,那是不是有了CAN总线编程,就可以禁用JTAG接口全部的内容,包括:STM单片机JTAG调试时也能将程序写入单片机,那是不是有了CAN总线编程,就可以禁用JTAG接口、求助,spartan-6 JTAG模式下不进去程序、JTAG STM32 Jlink 仿真 调试问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)