Arm 如何在Allwinner H5上启动额外的内核?

Arm 如何在Allwinner H5上启动额外的内核?,arm,embedded,cortex-a8,cortex-a,Arm,Embedded,Cortex A8,Cortex A,我想知道如何为四核allwinner h5启动core0以外的核心。C_RST_CTRL寄存器(也称为CPU2复位控制寄存器)底部有四位,表示它们是四个复位控制。lsbit是另外三个零中的一个,这意味着在其他内核上设置这些释放重置,但我没有看到这种情况发生(没有任何东西正在运行我在地址0处留下的代码),同时,将lsbit归零会停止core0,这意味着它是一个重置控件。所以我假设某处有时钟门,但我找不到它们 H5文档中未记录但位于sunxi wiki页面上的prcm寄存器显示的似乎是真实的PLL设

我想知道如何为四核allwinner h5启动core0以外的核心。C_RST_CTRL寄存器(也称为CPU2复位控制寄存器)底部有四位,表示它们是四个复位控制。lsbit是另外三个零中的一个,这意味着在其他内核上设置这些释放重置,但我没有看到这种情况发生(没有任何东西正在运行我在地址0处留下的代码),同时,将lsbit归零会停止core0,这意味着它是一个重置控件。所以我假设某处有时钟门,但我找不到它们

H5文档中未记录但位于sunxi wiki页面上的prcm寄存器显示的似乎是真实的PLL设置,但cpu启用寄存器仅标记为A31,并且未设置cpu0寄存器,因此这意味着您无法为该芯片启用包括0在内的任何cpu


我遗漏了什么?

C\u CPU\u STATUS STANDBY\u WFI=0x0E是否表示辅助内核位于WFI中

没有答案,我没有足够的代表发表评论,但我自己也在做同样的练习


另外,您是如何将代码放在地址0的?那不是布罗姆吗?我打算玩RVBARADDR寄存器。

C_CPU_STATUS STANDBY_WFI=0x0E是否表示辅助内核位于WFI中

没有答案,我没有足够的代表发表评论,但我自己也在做同样的练习


另外,您是如何将代码放在地址0的?那不是布罗姆吗?我打算玩RVBARADDR寄存器。

要想获得纯裸机解决方案,请查看的plat/sun50iw1p1目录中的sunxi\u cpu\u ops.c

您需要停用各种电源钳和时钟门

或者,包括Arm可信固件代码,并通过SMC调用启用core:

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

我现在已经确认这在H5上有效。

要获得纯裸机解决方案,请查看

您需要停用各种电源钳和时钟门

或者,包括Arm可信固件代码,并通过SMC调用启用core:

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

我现在已经确认这在H5上有效。

用户手册才是真正的具有注册规格的手册。太好了。非常感谢您典型的arm设计是在核心边缘有单独的时钟启用和重置,具体取决于供应商如何实现。arm通常不控制这些,也不应该控制它们,这是没有意义的。@PeterJ我现在正在读它,这些看起来像信号名,尽管它们看起来在arm的域中。但我看不到任何与这些名称相关的寄存器连接,因此目前存在信息缺口。@PeterJ我正在查看的TRM中的A.3节(附录A信号描述)例如,nCORERESET是芯片供应商提供的,因此假设这是上面的C_RST_CTRL引脚,但我敢打赌还有其他原因……例如,电源管理信号与您找到的信号或粗体字面寄存器/引脚/位不匹配。所以,关于你发现的信号是谁拥有的,以及它们在哪里,仍然存在差距。这是用户手册,是真正的手册与登记规格。太好了。非常感谢您典型的arm设计是在核心边缘有单独的时钟启用和重置,具体取决于供应商如何实现。arm通常不控制这些,也不应该控制它们,这是没有意义的。@PeterJ我现在正在读它,这些看起来像信号名,尽管它们看起来在arm的域中。但我看不到任何与这些名称相关的寄存器连接,因此目前存在信息缺口。@PeterJ我正在查看的TRM中的A.3节(附录A信号描述)例如,nCORERESET是芯片供应商提供的,因此假设这是上面的C_RST_CTRL引脚,但我敢打赌还有其他原因……例如,电源管理信号与您找到的信号或粗体字面寄存器/引脚/位不匹配。因此,对于您找到的信号的所有者以及它们的位置,仍然存在差距。我正在使用u-boot引导并在0x42000000处加载,还没有替换u-boot。我只是使用u-boot的SPL并从那里加载一个可执行文件。您是否设置了RVBARADDR?01700030000E0000是待机_WFI=0xEcould虽然在内核中插入中断,但它是否“简单”?017000A00001006017000A4 00000000我正在使用u-boot引导并在0x42000000处加载,尚未替换u-boot。我只是使用u-boot中的SPL并从那里加载一个可执行文件。您是否设置了RVBARADDR?01700030 000E0000是待机_WFI=0xE即使将中断插入到内核中也会如此“简单”?017000A00001006017000A4 00000000