1

我正在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_FFFFTZIC_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 内核启动过程停止。

关于如何解决这个问题的任何想法?我是否缺少任何配置?谢谢

4

1 回答 1

0

你在飞思卡尔论坛上看过这篇文章吗?

这似乎与您遇到的问题完全相同。基本上,它可能试图访问一个位于0xec82c00c虚拟地址的寄存器,该地址默认配置为不可Normal world访问。

于 2015-09-08T12:26:45.407 回答