首页 > 解决方案 > 树莓派 1B 安全配置寄存器

问题描述

现在我为 RPi 制作低级裸机工具。我需要获得安全配置寄存器值。我写了以下说明mrc p15, 0, r0, c1, c1, 0来获取它。但是 CPU 进入Undefined Exception Mode并且CPSR值为0x600001DB

读取 SCR 值的指令是 CPU 执行的第一条指令。

我已经阅读了ARM1176JZF-S TRM r0p7几次,但除了在Secure Privileged Mode 下作为 CPU 之外,我没有发现使用 SCR 读取指令的任何限制,但根据 TRM,这个 CPU 从Secure Privileged Mode开始。如果更具体地说,初始模式是Secure Supervisor Mode

我使用以下命令使用 QEMU qemu-system-arm -cpu arm1176 -M compatiblepb -m 256 -nographic -kernel start.elf -s -S -monitor stdio 执行代码

我无法理解我忽略了什么?

标签: exceptionqemubare-metalarmv6

解决方案


QEMU 的多功能 pb 板不支持 TrustZone:它创建了一个禁用该功能的 CPU。

其他 QEMU 板模型确实支持 TZ,如果您想使用它:例如 vexpress-a9、vexpress-a15 和 raspi2;如果您在 QEMU 命令行上传递 -machine secure=on 也是“virt”。


推荐阅读