【问题标题】:Trust Zone on Raspberry Pi unexpected behaviour?Raspberry Pi 上的信任区意外行为?
【发布时间】:2014-11-09 06:52:50
【问题描述】:

我正在开发具有 ARM1176JZF-S 处理器的树莓派 B+ 上的信任区扩展。根据 arm11 上的给定文档,安全世界、非安全(NS)世界和监控模式分别有 3 个异常向量表。 c12 寄存器将保存安全和 NS 世界异常向量表基地址的基地址。

我将这两个地址都添加到了相应世界(安全/NS)中的 c12 寄存器中。我在两个世界中都尝试了 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

请在这里告诉我问题。

【问题讨论】:

  • 向量基地址寄存器的低5位被忽略,所以需要保证向量表是32字节对齐的。

标签: assembly arm raspberry-pi trust-zone


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多