我试图在启用了TrustZone的开发板(Samsung exynos 4412)上运行Linux内核作为安全操作系统。虽然有人会说安全操作系统应该小而简单。但我只想尝试。如果可能的话,那么将Trustlet应用程序编写或移植到此安全操作系统将很容易,特别是对于具有UI(可信UI)的应用程序。Linux内核可以作为ARM TrustZone安全操作系统运行吗?
我买了一个基于Xv6的可运行安全操作系统的开发板,正常的操作系统是Android(Android版本4.2.2,内核版本3.0.15)。我试图用android的Linux内核来替换简单的安全操作系统,也就是用一个小的汇编代码,例如清除SCR寄存器的NS位,直接调用Linux内核条目(带有必要的内核标记列表传入) 。
内核未压缩代码被正确执行,内核的第一个C函数start_kernel()也被执行。除了运行到calibrate_delay()之外,几乎所有初始化函数都运行良好。该功能将等待的jiffies改变:
/* wait for "start of" clock tick */
ticks = jiffies;
while (ticks == jiffies);
我想原因是没有时钟产生的中断(我在打印中时钟中断回调函数日志,他们从未得到)。我在local_irq_enable()函数之前和之后检查了CPSR状态。 IRQ和FIQ位设置正确。我还在中断向量表中定义的Linux内核的IRQ处理程序中打印一些日志。没有记录。
我知道安全世界和非安全世界之间的中断系统可能存在一些差异。但我无法找到任何文档中的差异。有人可以指出他们吗?最重要的问题是,由于Linux是一个非常复杂的操作系统,Linux内核可以作为TrustZone安全操作系统运行吗?
我是Linux内核和ARM TrustZone的新手。请帮帮我。
内核被编译为'真正'的硬件,而不是硬件TrustZone(驱动程序甚至不可能存在)。 – 2014-09-02 10:23:36
感谢您的回复。但是我已经看到了几个可以做很多事情的trustzone实现,比如UI显示和触摸屏。你可以看到Genode的实现。 [文档](http://genode.org/documentation/articles/trustzone)[视频](https://www.youtube.com/watch?v=voFV1W4yyY8) – 2014-09-02 12:29:14
你的问题似乎有点不清楚。检出标签[tag:trust-zone]中的所有问题,尤其是[如何开发用于arm信任区的程序]问题(http://stackoverflow.com/questions/15455011/how-to-develop-programs-for -arm信任区)。你**不需要安全的操作系统才能拥有安全的* trustlet *;只需安全启动,带有启动锁的分区检查器和带有Secure API的监视器表。 – 2014-09-02 16:40:20