JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程然后再装到板上,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对DSP芯片内部的所有部件进行编程。
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
JTAG内部有一个状态机,TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
JTAG标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元。这个串联的BSC在IC内部构成JTAG回路,所有的BSR(Boundary-Scan Register)边界扫描寄存器通过JTAG测试激活,平时这些引脚保持正常的IC功能。
扩展资料
通过TCK、TMS的设置,可将JTAG设置为接收指令或数据状态。JTAG常用指令如下:
1、SAMPLE/PRELOAD——用此指令采样BSC内容或将数据写入BSC单元;
2、EXTEST——当执行此指令时,BSC的内容通过引脚送到其连接的相应芯片的引脚,我们就是通过这种指令实现在线写Flash的;
3、BYPASS——此指令将一个一位寄存器置于BSC的移位回路中,即仅有一个一位寄存器处于TDI和TDO之间。
在PCB电路设计好后,即可用程序先将对JTAG的控制指令,通过TDI送入JTAG控制器的指令寄存器中。再通过TDI将要写的Flash的地址、数据及控制线信号写入BSR中,并将数据锁存到BSC中,用EXTEST指令通过BSC将写入Flash。
使用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调试技术,具体你可以看看这方面的技术文章。。
不会的。可以做普通IO用。你把拉高的电阻去掉试试,看看这几个脚能不能正常?你的软件对几个脚的配置可能有点问题。
本文标签:JTAG参考电路stm32