我正在研究具有 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
请让我知道这里的问题。