Raspberry Pi上的Trust Zone意外行为?

时间:2014-11-09 06:52:51

标签: assembly arm raspberry-pi trust-zone

我正在使用带有ARM1176JZF-S处理器的raspberry pi B +上的信任区域扩展。根据arm11上的给定文档,将有3个异常向量表,每个用于安全世界,非安全(NS)世界和监视器模式。并且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

这是我的代码:https://github.com/avk7vk/arm_bare_metal/tree/master/trustzone-smc

请告诉我这里的问题。

1 个答案:

答案 0 :(得分:1)

向量基址寄存器(VBAR)的前五位定义为“res0”,这意味着它们将被忽略并视为零。因此,矢量表必须是32字节对齐的。达到:

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