c - 断点如何在嵌入式设备上工作?

标签 c debugging embedded bare-metal jtag

<分区>

这只是个人兴趣问题。我知道我的 JTAG 能够读取 uController 的寄存器值。但我不知道 JTAG 设备如何知道何时停止 uController。我认为也许添加了一些调用中断的代码,但您可以在操作期间添加断点,因此这个接缝是错误的。那么它是怎么做到的呢?

最佳答案

@Martin James 的评论中所述,这种工作的典型方式是目标硬件本身支持断点。

然后调试器使用JTAG接口(interface)设置片上寄存器来配置断点,真正的“断点”则由芯片自己完成。

这通常意味着您可以拥有的同时断点的数量被限制在一些较小的数量,因为存在的此类硬件数量有限。

This link例如,描述了 ARM Cortex-M0 的调试硬件,并表示它具有(客户可选择的)1 到最多 4 个硬件断点和最多两 (2) 个观察点。因此,非常有限(但作为一名实际的嵌入式开发人员,我看到了这一点并认为“mmmm 硬件断点,如此丰富”)。

关于c - 断点如何在嵌入式设备上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294090/

相关文章:

javascript - Chrome 调试器 : Is it possible to halt the script in the debugger every time a Nan or Infinity is computed?

embedded - 如何找出嵌入式 Linux 上哪个分区映射到哪种存储设备类型?

c++ - 使用二进制信号量创建互斥锁

c - 如何使用动态内存分配处理 C 中的矩阵?

整数数组的 C While 循环

c - undefined reference pthread_create

c++ - 实例化基于 Qt 文件的记录器以在 C++ 库中进行调试

c - execve 和管道问题 - 如何读取最后的输出?

c - 在gdb中,是否可以找出哪个内存地址具有某个值?

c - 实现函数队列调度的2D队列