我正在i.MX53快速入门板上探索TrustZone(ARM 安全扩展) 。我成功地制作了一个裸机系统:一个安全的世界图像和一个正常的世界图像。我用u-boot将这两个映像加载到我的 ram 中,然后启动初始化监视器系统并将手交给正常世界映像的安全世界。
我想使用相同的系统。但是这次我不想使用普通的世界基本图像,而是使用Linux Kernel Image。当我在安全的世界中时,我做了一些我在 i.MX53 参考手册和 i.MX53 安全参考手册中找到的配置。配置是:
配置 CSU:
CSL0-31 to 0x00FF_00FF
配置 TZIC(中断)
TZIC_INTSEC0-3 to 0xFFFF_FFFF
,TZIC_PRIORITY0-31 to 0x1F1F_1F1F
以及TZIC_INTCTRL to 0x8001_0001
配置安全配置寄存器:
NS=0 IRQ=0 FIQ=0 EA=0 FW=1 AW=1 => 0x30
当我将手交给 linux 内核时,启动过程开始,这是输出的一部分:
调节器:核心版本 0.5
NET:已注册的协议族 16
i.MX IRAM 池:128 KB@0xec840000
未能释放 IRAM 分区
CPU 是 i.MX0 修订版 0.0
未处理的故障:在 0xec82c00c 的非线路取指 (0x1008) 上的外部中止
内部错误: : 1008 [#1] PREEMPT
最后一个 sysfs 文件:
链接的模块:
CPU:0 未污染 (2.6.35.3 #1)
PC 在 mxc_cpu_lp_set+0x1c/0x16c
LR 在 arch_idle+0x60/0x294
电脑:[<8003a958>] lr:[<8003ab08>] psr:60000093
sp:80835f78 ip:00000003 fp:8088fb68
……
正如您在输出中看到的那样,IRAM存在问题(因为通常它会显示 IRAM READY)并且数据中止。在显示与这些错误相关的信息后,Linux 内核启动过程停止。
关于如何解决这个问题的任何想法?我是否缺少任何配置?谢谢