2017-07-13 103 views
1

我想弄清楚如何为四核心allwinner h5启动core0以外的核心。 C_RST_CTRL寄存器(又名CPU2复位控制寄存器)在底部有四位,这意味着它们是四个复位控制。 lsbit是其他三个零,意味着将这些版本设置为在其他内核上重置,但我没有看到发生这种情况(没有任何操作代码已经留在地址零),同时调零,lsbit停止core0暗示它是一个重置控制。所以我假设在某个地方有时钟门,但是我找不到它们。如何启动Allwinner H5上的其他内核?

未在H5的文档记录,但对老年人allwinners一个孙鑫著作,wiki页面上都显示什么似乎是真正的PLL设置,但CPU的使能寄存器被标记为只A31和CPU0寄存器(送PRCM寄存器)没有设置,这意味着这不是你如何启用这个芯片包括0的任何CPU。

我错过了什么?

+1

https://github.com/OrangePiLibra/OrangePi_H5SDK/tree/master/Documentation/Hardware它是与寄存器规格真实手册的用户手册。 –

+0

太棒了。非常感谢 –

+0

典型的arm设计是为核心的边缘提供独立的时钟启用和重置,这些关于供应商特定的实现方式。手臂通常不会,也不应该控制这些,没有意义。 –

回答

2

对于纯裸金属溶液看看sunxi_cpu_ops.c从https://github.com/apritzel/arm-trusted-firmware.git

您需要停用各种电源的高原/ sun50iw1p1目录夹具以及时钟门。

另外,包括手臂可信固件代码和通过SMC呼叫使核心:

ldr x2,=entry_point 
mov x1,#corenumber 
mov x0,#0x03 
movk x0,#0x8400,lsl #16 
smC#0 

我现在已经证实了这个工程上的H5。

1

不C_CPU_STATUS STANDBY_WFI = 0x0E的建议,副核坐在WFI?

不是一个答案,我没有足够的代表处发表评论,但我刚开始一样锻炼自己。

顺便说一句,你是怎么把代码放在地址0?不是那个BROM吗?我打算玩RVBARADDR寄存器。

+0

我使用的U-Boot在0x42000000启动和加载,也没有取代了u-boot呢。 –

+0

我只是从u-boot使用SPL并从那里加载可执行文件。你设置了RVBARADDR吗? –

+0

01700030 000E0000是STANDBY_WFI = 0xE –