直到今天我还在单核上编程,现在我需要在多核上运行我的代码。我正在研究大约 1 周,对此有一些疑问。
顺便说一下,我正在使用 Zynq 702、Arm DS-5 和 Dstream。当我使用在 Core0 上运行的已经存在的代码时,我正在尝试实现这一点。
我在 core1 上真的什么也没做,只是连接到它,只是想观察它跳转到 0xFFFFFFF0 和这个地址的值。我没有设置任何针对 core1 的中断处理程序。我唯一的“观察”情况可以吗?还是我真的需要设置一些配置?我怎样才能以最简单的方式实现这一目标?
当我的程序在 core0 上继续时,我连接到 core1 并观察它的状态。顺便说一句,core1 上没有运行应用程序。它上升到地址 0x300,在这个地址有一个 WFE 命令,紧随其后有一个 B(ranch) 命令,它再次分支到 0x300。这就像一个循环,我的代码在 WFE 命令上停留了大约 0.5 秒,跳转到下一条指令 B 并再次分支到 WFE……
我认为 core1 应该在执行 WFE 命令后留在原处,除非我发送一个事件,而不是执行以下 B(ranch) 命令,对吗?如果是这样,这是否意味着 core1 会定期从某个地方收到事件?将板与 Dstream 调试器连接会导致事件吗?
如果我设置地址 0xFFFFFFF0 的值,是什么让 core1 跳转到 0xFFFFFFF0 的地址,当 core1 处于 WFE/WFI 状态时,一个简单的 SEV 命令是否足够?如果 0xFFFFFFF0 的值为 0x00000000,那么会发生什么?Core1 是否再次返回调用 WFE/WFI?或者是其他东西?