【发布时间】: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