仿真器(Simulator)
调试器(Debugger)
JTAG(Joint Test Action Group)(测试行动联合组织)
SWD(Serial Wire Debug)(串行线调试)
DAP(Debug Access Port)(调试访问端口)(DAP通常是指CMSIS-DAP)
仿真器与调试器时不同的两个东西,但是现在这两者通常被混为一谈。
仿真器(Simulator)是什么:
使用仿真器时,不需要有MCU实物。
仿真器现在很少用,因为他已被调试器取代。
仿真器分为两种,软件仿真器和硬件仿真器。
软件仿真器就是在PC上模拟MCU的运行,比如可以在Keil上模拟51单片机的运行而不需要51单片机实物。
硬件仿真器。比如51单片机的仿真器,它相对于51单片机,主要就是多了一个调试的功能(参考普中的51仿真器)。
仿真器没落的原因:
第一点,仿真器往往只适用于那些内核中不含有硬件调试模块的MCU,比如51单片机,这种MCU不能进行调试,如果想要进行调试,只能使用仿真器。(在STM32中,Cortex-M内核含有硬件调试模块,可以进行调试)
第二点,仿真器的价格贵,而且不通用。比如51仿真器只能仿真51。如果你想仿真STM32F1xx,就需要STM32F1xx的仿真器。如果你想仿真STM32F4xx,就需要STM32F4xx的仿真器。
调试器(Debugger)是什么:
使用调试器时,必须要有MCU实物。调试器和MCU是合作关系。调试器往往具有下载功能。
图片中的都是调试器(Debugger)。包括STLink、JLink、ULink、DAP等等。
如果一个DAP遵循了CMSIS-DAP标准,他就可以支持所有Cortex-M内核的单片机,使用DAP最大的好处就是免驱动,不用下载驱动。但是STM32CubeIDE只支持STLink和JLink。
因为在STM32单片机中,Cortex-M内核含有硬件调试模块,可以进行调试,不需要另外的、单独的仿真器。我们只需要使用仿真器将电脑和MCU连接起来,再配置一下相关的设置,就可以进行调试了。
Cortex-M内核含有硬件调试模块,该模块可以在取指(指令断点)或者访问数据(数据断点)时停止。内核停止时,可以查询内核的内部状态和系统的外部状态(外设的状态)。完成查询后,可以恢复程序的执行。
|