【发布时间】:2023-03-14 20:06:01
【问题描述】:
当一个特定的核心执行一个语句时,有没有办法在 trace32 中放置一个断点。
我有一个四核 cortex-a7 板(树莓派 2)。我能够连接到它,放置断点(现在仅适用于核心 0),但我希望 trace32 仅在特定核心执行断点代码时才击中断点。例如说核心 3 执行它。
目前断点仅在 core-0 中命中。我编写了一个简单的程序,将 0-9 输出到 UART。此外,当我在 trace32 中运行任何程序时,通过将其直接加载到 RAM 中,似乎只有核心 0 正在执行,并且它反复进入“被向量捕获停止”,但是当我通过将程序加载到 sdcard/flash 内存中来尝试它时,所有四个核心似乎都在执行。
我已经通过激活和停用其他内核来检查 uart 输出,看来这些内核确实会相应地被激活和停用。
内核停用时的 uart 输出正确/有序(打印从 0 到 9 的系列),当内核处于活动状态时,它是混合的 (print of 0-9 are not in order),证明了我的假设。
此外,当它在核心 0 的断点处停止时,如果我从 trace32 状态栏中的下拉菜单中选择其他核心,则其他核心正在执行不同的语句。即不同核心的电脑不同。
我尝试使用条件断点,比如
break.set myfunc\7 /COND core()==3
但这似乎不起作用。
任何帮助表示赞赏。提前致谢
【问题讨论】:
标签: raspberry-pi2 multicore cortex-a lauterbach trace32