JTAG STM32 Jlink 仿真 调试问题
以STM32为例,我们知道,在keilMDK里硬件仿真时,JTAG起作用了,STM32跟着单步运行一步一步执行,有几个问题:1、在JTAG调试时,STM32是否是处于一种...
以STM32为例,我们知道,在keil MDK里硬件仿真时,JTAG起作用了,STM32 跟着单步运行一步一步执行,有几个问题:
1、在JTAG调试时,STM32是否是处于一种特殊的模式?与正常模式有什么区别?为什么CPU没有全速执行?在仿真时如果断开JTAG与STM32的连接,STM32会怎么样?
2、STM32烧写了程序后正常运行时,JTAG是否还起作用?
3、能否用某种API 通过JTAG 来读取、写入运行中的STM32中的寄存器?有没有这个API? 展开
1、在JTAG调试时,STM32是否是处于一种特殊的模式?与正常模式有什么区别?为什么CPU没有全速执行?在仿真时如果断开JTAG与STM32的连接,STM32会怎么样?
2、STM32烧写了程序后正常运行时,JTAG是否还起作用?
3、能否用某种API 通过JTAG 来读取、写入运行中的STM32中的寄存器?有没有这个API? 展开
1个回答
展开全部
使用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调试技术,具体你可以看看这方面的技术文章。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询