【问题标题】:Where is Cortex-M4 hardware breakpoint address?Cortex-M4硬件断点地址在哪里?
【发布时间】:2018-05-05 09:43:56
【问题描述】:

m4 调试功能, 我在 ubuntu 中使用 stm32f407 发现和 openocd、gdb

我正在尝试理解断点功能, 我可以使用 gdb 在 openocd 中设置断点地址,当 pc 运行到该地址时芯片将停止

像 main 函数在 0x8008000, 我想必须有一个寄存器来存储这个地址(0x8008000),但我找不到这个寄存器在哪里 我在 FPB 手册中找到了 FP_COMP0~FP_COMP7,但在 gdb 中它始终显示为 0,我认为这是转换为的新地址。

谁能告诉我在哪里可以了解相关信息,谢谢:)

【问题讨论】:

    标签: gdb breakpoints cortex-m openocd


    【解决方案1】:

    你是对的,这些是 FPB(闪存补丁和断点单元)中的 FP_COMP0-FP_COMP7 寄存器 - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/BABGEDIG.html

    这确实有效,只是在实践中测试过(设置了 4 个断点):

    只需确保在使用 IDE 时它可能会缓存以前读取的寄存器值,并且设置断点不会立即显示在您通过 IDE 看到的内存中。强制它刷新(例如通过运行和暂停程序)将导致它显示正确的值。

    【讨论】:

    • 我想知道完全相同的事情 - 为什么 FP_COMP0~FP_COMP7 总是为零,即使我安装了断点。原因是我正在查看 Eclipse 内存视图,该视图仅在目标挂起时有效,但 GDB 实际上删除了挂起时的断点并在继续之前重新插入它们。当我恢复目标并使用 OpenOCD 检查内存时,我可以看到预期的 FP_COMP0~FP_COMP7。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2020-03-22
    • 2015-08-21
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多