
1.指令集模拟器部分集成开发环境提供了指令集模拟器,可方便用户在PC机上完成一部分简单的调试工作,但是由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的开发。
2.驻留监控软件驻留监控软件(ResidentMonitors)是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。
驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。
arm公司的Angel就是该类软件,大部分嵌入式实时 *** 作系统也是采用该类软件进行调试,不同的是在嵌入式实时 *** 作系统中,驻留监控软件是作为 *** 作系统的一个任务存在的。
驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。
3.JTAG仿真器JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。
JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与armCPU核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。
另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频 *** 作限制、AC和DC参数不匹配,电线长度的限制等被最小化了。
使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。
4.在线仿真器在线仿真器使用仿真头完全取代目标板上的CPU,可以完全仿真ARM芯片的行为,提供更加深入的调试功能。
但这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。
java课程http://www.kmbdqn.cn/认为在线仿真器通常用在arm的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。
使用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调试技术,具体你可以看看这方面的技术文章。。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)