0.1 认识常见调试器与协议 | KeilMDK的调试


开始调试

参考文章JLINK、JTAG、SWD、SWIM的区别

常见的调试工具 (JLINK JTAG )

总结:

  1. J-Link (普适性强)
    J-Link是为支持仿真ARM内核芯片推出的JTAG仿真器。JLink充当的作用就是USB转JTAG,支持JTAGSWD两种模式。
  2. ST-Link (Stm32首选)
    ST-Link是为评估、开发STM8/STM32系列MCU而设计的集在线仿真与下载为一体的开发工具.支持JTAG/SWD/SWIM三种模式。
    注意ST-Link有很多版本,v1,v2,v3,还有更常见的简版。 ST-LInk到底有那些版本
    下图正是我用的简版stlink
    在这里插入图片描述

调试协议

  1. JTAG
    JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试,现在多数的器件都支持JTAG协议,ARM、DSP、FPGA等,JTAG接口的单片机用电脑USB下载调试程序,需要用到J-Link(USB转JTAG)。 具体通信引脚参考源文章。
    2. SWD
    SWD全称是Serial Wire Debug(串行调试)
    高速模式下,SWD比JTAG更可靠一些
    3. SWIM
    SWIM接口常见于ST的STM8系列单片机

Stm32中用于调试的复用io

  • SWD是一种比JTAG更节省引脚资源的调试方法,它只需要两个引脚(SWDIO和SWCLK)就可以实现对目标系统的调试。
  • 相比之下,传统的JTAG调试需要至少五个引脚(TCK、TMS、TDI、TDO和TRST)。
    在这里插入图片描述

认识Keil MDK的调试界面

在这里插入图片描述

  • ①复位,回到整个程序的入口
  • ②全速运行
  • ③Step (F7 或 Ctrl+F7)
    功能:当你在一个函数调用上使用 Step 命令时,调试器会进入该函数的内部,并开始逐行执行该函数的代码。
    应用场景:当你想要深入了解函数内部的工作机制时,使用 Step 命令。
  • ④Step Over (F10 或 Ctrl+F10)
    功能:当你在一个函数调用上使用 Step Over 命令时,调试器会执行该函数调用(但不会进入函数调用的内部。),然后停留在函数返回后的下一行代码。
    应用场景:当你不关心某个函数内部的细节,只想看到函数调用的结果时,使用 Step Over 命令。
  • ⑤Step Out(Shift+F11 或 Ctrl+Shift+F11)
    功能:Step Out 命令使调试器从当前所在的函数中返回到调用它的函数。
    行为:当你在一个函数内部执行时,使用 Step Out 命令会让调试器执行完当前函数的所有剩余代码,并回到调用该函数的地方继续执行。
    应用场景:当你已经进入了某个函数内部,并且不再需要继续跟踪该函数的执行细节时,可以使用 Step Out 命令返回到上一层函数。
  • ⑥Run to Curserline
    可快速跳转到某一行
    将光标放置在你希望程序运行到的行上。
    点击工具栏上的“Run to Cursor”按钮,或者使用快捷键(通常是Ctrl + R)。

局部变量显示不出地址?

值得注意的是,一般要查看变量地址可以直接在 Watch 窗口直接输入 &变量名 来查看。但是对于局部变量,编译器很可能会使用 CPU 寄存器来实现,比如本例中的 ret 变量就是使用 R4 寄存器实现的,这种情况下是无法查看变量地址的。当然,如果程序中有引用到该变量的地址,编译器是不会使用 CPU 寄存器来实现该局部变量的,会使用 RAM 来实现以便可以引用其地址。

  • 当局部变量被存储在寄存器中时,你是无法查看其内存地址的,因为寄存器并不对应于内存地址。
  • 如果程序中有引用到局部变量的地址(例如,通过指针访问),编译器不会将这个局部变量分配给寄存器,而是会分配给RAM中的某个位置,以便可以引用其地址。
    这是因为指针需要一个实际的内存地址来访问变量。

全局变量无法在watch窗口中显示? cannot evaluate

点击跳转我的博客详细讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值