EDK 14.1 Zynq-7000 - 如何为第二个CPU内核创建存根?

描述

如何为第二个CPU核心创建存根?

附加的tcl脚本(stub.tcl)为第二个CPU核心创建存根。第二个CPU内核执行wfe(等待事件)指令并等待第一个CPU内核唤醒。

如果第一个处理器想要唤醒第二个内核,则只需要在位置0xFFFFFFF0写入所需的pc值并发送sev(发送事件)指令。

如果没有这个,Linux可能无法启动,因为启动ROM在jtag模式下有一个针对芯片rev1的错误。因此,当Linux直接加载到RAM而不从闪存引导时,需要执行此步骤。

以下是第二个CPU核心执行的汇编代码:

0xFFFFFF00:mvn r0,#15
0xFFFFFF04:mov r1
0xFFFFFF08:str r1,[r0]
0xFFFFFF0C:wfe
0xFFFFFF10:ldr r2,[r0]
0xFFFFFF14:cmp r2,r1
0xFFFFFF18:beq 0xc
0xFFFFFF1C:mov pc

附件

相关附件

名称文件大小文件类型
stub.tcl 723字节 TCL
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 15:02:27 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它