在多核的MCU调试中,几个核之间的程序同步显得非常重要。在调试过程中,当一个核暂停的时候,我们会希望另外的核都能同时暂停,Cross Trigger的功能也就成为了多核调试的必备功能之一。
本文介绍了在CCSv5环境下,双核C2000 调试过程中Cross Trigger功能的使用方法,供大家参考。
Cross Trigger步骤:
1. 启动仿真器后,选择两个Core并右键单击。在弹出菜单中选择“Group core(s)”,如下所示。(以Concerto为例)
分组后,调试窗口如下所示。
注:连接前或连接后对core进行分组都没关系。
2. 将程序下载到两个core。
在一个core中设置断点。假设在C28x核中设置一个断点,例如如下所示。
在断点窗口中,也可以找到断点。
3. 使能全局断点
右键单击调试窗口中的“Group 1”,然后在弹出菜单中选择“Enable Global Breakpoints”。
完成此操作后,将在每个core标签上看到“Global breakpoint on”。
4. 运行程序并检查cross trigger。
先运行不带断点的内核。如果需要运行顺序,例如Concerto,每次M3核都需要第一时间运行,不要设置断点在第一个运行的核。
然后用断点运行另一个内核。当它到达断点时,两个内核将同时挂起。
单击带有断点的核的标签“main()…”,可以看到它在断点处停止。
如果你点击“main()…”标签的核没有断点,你可以看到它停在某个地方但你不知道它停止之前在哪里,这是因为它是由带断点的内核交叉触发的。
你可以使用C2000ware中的双核例程测试这个功能。