【问题标题】:Using multiple core on Zynq在 Zynq 上使用多核
【发布时间】:2015-01-10 09:13:44
【问题描述】:

直到今天我还在单核上编程,现在我需要在多核上运行我的代码。 我研究了大约 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 命令后留在原处,除非我发送一个 EVENT,而不是执行以下 B(ranch) 命令,对吗?如果是这样,这是否意味着 core1 会定期从某个地方收到事件? 将板子与 Dstream Debugger 连接会导致 EVENT 吗?


如果我设置地址 0xFFFFFFF0 的值,是什么让 core1 跳转到 0xFFFFFFF0 的地址,当 core1 处于 WFE/WFI 状态时,一个简单的 SEV 命令是否足够? 如果 0xFFFFFFF0 的值为 0x00000000,那么会发生什么? Core1 是否再次返回调用 WFE/WFI?还是别的什么?

【问题讨论】:

    标签: arm multicore zynq


    【解决方案1】:

    在我的情况下(Cyclone V SoC),冷复位后 CPU1 处于“保持复位”状态。 为了从 CPU0 启动 CPU1,我将代码添加到 Reset_Handler:

    ;System Manager addr is 0xFFD08000
    LDR r0, =0xFFD080C4 ;cpu1startaddr
    MOV r1, #0x02000000 ;start addr from linker script
    STR r1, [r0]
    ;Reset Manager add is 0xFFD05000
    LDR r0, =0xFFD05010 ;MPU Module Reset Register
    MOV r1, #0
    STR r1, [r0] ; write 0 to power_on cpu1
    

    【讨论】:

      【解决方案2】:

      如果 core1 处于 WFE 循环(状态)中,则 core0 上的 SEV cmd 会唤醒 core1。如果进入WFE,就进入standby,SEV是wakeup,来自SCU的请求也可以做wakeup(用于MP系统中的cache coherency操作)。

      注意: APU复位后,core1处于WFE状态,执行0xFFFFFE00到0xFFFFFFF0的代码

      启动后,core1 处于 WFE 状态。如果 core1 获得 SEV,它会跳转到存储在 0xFFFFFFF0 的地址。如果在 SEV 之后更新目标地址,那么 core1 会返回到 WFE 状态。这是因为 0xFFFFFFF0 有 WFE 指令的地址。

      正确的“启动顺序”是:

      1. 将core1应用的地址写入0xFFFFFFF0
      2. 执行 SEV 指令

      (查看 Zynq-7000 All Programmable SoC 技术参考手册中的第 158 页 (6.1.10))

      如果 0xFFFFFFF0 的值为 0x00000000,您将得到不可预知的结果。 (取决于您的 CPU 状态)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-30
        • 1970-01-01
        • 2023-03-23
        • 2011-08-28
        • 1970-01-01
        相关资源
        最近更新 更多