Assembly Allwinner H3上的多核组装

Assembly Allwinner H3上的多核组装,assembly,arm,smp,nanopi,Assembly,Arm,Smp,Nanopi,我使用的是NanoPi Neo Air,我发现不可能在任何其他内核上运行任何代码。我没有使用任何操作系统。演示如何在Raspberry Pi上运行多核代码。尽管如此,我还没有找到任何关于NanoPi等效代码的信息,除了。我曾尝试在ARM汇编中编写一个与smp_boot_辅助函数等效的函数,但这不起作用 LDR r0, =multicore_start @ Func ptr MOVW r11, #0x1DA4 @ Set ptr MOVT r11, #0x01F0 STR r0, [r11]

我使用的是NanoPi Neo Air,我发现不可能在任何其他内核上运行任何代码。我没有使用任何操作系统。演示如何在Raspberry Pi上运行多核代码。尽管如此,我还没有找到任何关于NanoPi等效代码的信息,除了。我曾尝试在ARM汇编中编写一个与smp_boot_辅助函数等效的函数,但这不起作用

LDR  r0, =multicore_start @ Func ptr
MOVW r11, #0x1DA4 @ Set ptr
MOVT r11, #0x01F0
STR  r0, [r11]

MOVW r1, #0x1C80
MOVT r1, #0x01F0
MOV  r11, #0      @ Reset core
STR  r11, [r1]

MOVW r2, #0x0003 @ Mask to reset L1 for CORE1
MOVT r2, #0x0000

MOVW r11, #0x1D84 @ Turn off L1
MOVT r11, #0x01F0
LDR  r10, [r11]
BIC  r10, r10, r2
STR  r10, [r11]

MOVW r11, #0x1500 @ Clear power off
MOVT r11, #0x01F0
LDR  r10, [r11]
BIC  r10, r10, r2
STR  r10, [r11]

MOVW r11, #0x1C80
MOVT r11, #0x01F0
MOV r11, #3       @ Power up the core
STR r11, [r1]

我是不是走错了路?

sunxi有一个数据表,您可以下载,在该数据表中显示了每个cpu重置控制寄存器。我写了你发布的代码,raspberry pi要么没有单独的重置控件,要么它没有文档记录,因为GPU无论如何都会调出arm内核。ARM在核心边缘提供单独的控制。芯片供应商选择如何处理这些信号。您应该检查这些寄存器,看看核心是否已启用,如果未启用,则可能需要调整引导代码并启用一个,然后将其引导到其代码或静止位置。与raspi一样,应该有一个cpuid寄存器(这是arm中的一组寄存器,而不仅仅是一个)您可以使用它来区分一个核心和另一个核心,并引导他们找到自己的代码或等待他们运行某个东西的等待区。