我正在尝试弄清楚如何为四核 allwinner h5 启动 core0 以外的内核。 C_RST_CTRL寄存器(又名 CPU2 复位控制寄存器(底部有四个位,这意味着它们是四个复位控制。 lsbit 是其他三个零中的一个,这意味着在其他内核上设置这些版本重置,但我没有看到这种情况发生(我在地址零处没有运行代码(,同时将 lsbit 归零确实停止 core0 暗示它是一个重置控件。 所以我假设某处有时钟门,但我找不到它们。
在 H5 文档中未记录但在 sunxi wiki 页面上为较老的 allwinner 提供的 prcm 寄存器确实显示了似乎是真实的 PLL 设置,但 CPU 启用寄存器仅标记为 A31,并且未设置 cpu0 寄存器,因此这意味着这不是您为此芯片启用任何 CPU 的方式,包括 0。
我错过了什么?
对于纯裸机解决方案,请查看 plat/sun50iw1p1 目录中的 sunxi_cpu_ops.c https://github.com/apritzel/arm-trusted-firmware.git
您需要停用各种电源钳以及时钟门。
或者,包括 Arm 可信固件代码并通过 SMC 调用启用内核:
ldr x2,=entry_point
mov x1,#corenumber
mov x0,#0x03
movk x0,#0x8400,lsl #16
smc #0
我现在已经确认这适用于 H5。
C_CPU_STATUS STANDBY_WFI=0x0E 是否表明辅助核心位于 WFI 中?
不是答案,我没有足够的代表来评论,但我自己刚刚开始同样的练习。
顺便说一句,您如何将代码放在地址 0 处?那不是布罗姆吗?我打算玩RVBARADDR寄存器。