exception - 树莓派 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 执行代码
我无法理解我忽略了什么?
解决方案
QEMU 的多功能 pb 板不支持 TrustZone:它创建了一个禁用该功能的 CPU。
其他 QEMU 板模型确实支持 TZ,如果您想使用它:例如 vexpress-a9、vexpress-a15 和 raspi2;如果您在 QEMU 命令行上传递 -machine secure=on 也是“virt”。
推荐阅读
- java - 测试 spring 批处理作业导致意外结果
- python - 如何从表 python 中刮取特定的 tr 或 td
- php - 注册后的laravel网站有时会卡在控制器中
- javascript - 如何在像 babylon.js-NulEngine 这样的节点服务器上设置无头版本的 three.js?
- firebase-cloud-messaging - Firebase 控制台云消息传递 - 服务器时间不是收件人
- python - 如何从创建的函数中打印参数?
- c# - 通过单击任务栏中的图标获取应用程序的进程ID
- node.js - 如何通过执行节点 js 文件生成 localhost URL?
- java - 在 intellij idea 中运行的 Apache Flink Google Pub/Sub 连接器抛出 NoClassDefFoundError
- c++ - 包含在词法转换中的 C++ 头文件