Assembly 树莓皮意外行为的信任区?

Assembly 树莓皮意外行为的信任区?,assembly,arm,raspberry-pi,trust-zone,Assembly,Arm,Raspberry Pi,Trust Zone,我正在研究raspberry pi B+上的信任区扩展,它具有ARM1176JZF-S处理器。根据给定的arm11文档,安全世界、非安全(NS)世界和监视模式各有3个异常向量表。c12寄存器将保存安全和NS世界异常向量表基址的基址 我将这两个地址添加到c12寄存器的相应世界(Secure/NS)中。我在两个世界都试过SWI(svc)。我发现它在安全世界中工作得很好,但在NS世界中,控制转到SWI的NS重置处理程序,而不是SWI处理程序。 我使用了以下命令: For secure world :

我正在研究raspberry pi B+上的信任区扩展,它具有ARM1176JZF-S处理器。根据给定的arm11文档,安全世界、非安全(NS)世界和监视模式各有3个异常向量表。c12寄存器将保存安全和NS世界异常向量表基址的基址

我将这两个地址添加到c12寄存器的相应世界(Secure/NS)中。我在两个世界都试过SWI(svc)。我发现它在安全世界中工作得很好,但在NS世界中,控制转到SWI的NS重置处理程序,而不是SWI处理程序。 我使用了以下命令:

For secure world :
    LDR r0, =_start //_start - base address of secure vector table
    MCR p15, 0, r0, c12, c0, 0
For Non-secure World :
    LDR r0, =_ns_start //ns_start - base address of non-secure vector table
    MCR p15, 0, r0, c12, c0, 0
这是我的密码:


请告诉我这里的问题。

矢量基址寄存器(VBAR)的底部五位定义为“res0”,这意味着它们将被忽略并视为零。因此,向量表必须是32字节对齐的。通过以下方式实现:

    .align 5
_ns_start:
    ldr pc, ns_Reset
    ...

向量基址寄存器的底部5位被忽略,因此需要确保向量表是32字节对齐的。