2014-10-20 65 views
1

如果我在启用了TZ的设备上有单个核心CPU,并且有两个进程在运行:一个在安全领域,一个在非安全领域,是否有可能拥有调度程序以先发制人的方式管理它们,以便每个进程都被分配一定的时间片?TrustZone:从两个世界调度进程

回答

0

TZ通常在单线程中执行,所以每当有来自非安全端的请求运行一些安全的应用程序。它将经历监视模式,然后上下文切换将发生从非安全世界到安全世界,然后安全应用程序将在一个线程的安全世界中开始执行。所以那个核心将会在那个时候在安全的世界中运行,但是如果来自no sec世界的任何中断,则执行将停止并且上下文将从安全切换到非安全以处理中断,在处理它之后将再次切换到安全的世界和这一次安全的世界可以安排到另一个核心。

所以作为回答你的问题是不可能的。到目前为止,TZ运行在单核上,一次只能有一个核心执行。

只是为了更加明确,如果安全的应用程序需要执行一些文件操作(如TZ没有它使用了一些监听到非安全方面执行该操作然后再上下文切换将发生文件系统)

2

实际上,这是可能的,但只能围绕一种方式。您不能使用单个调度程序来处理在完全独立的执行环境中执行的两个独立任务。你可以做的是使用FIQ为你做时间切片。如果将FIQ设置为SW异常,则可以将其设置为定期触发,例如每隔50ms触发一次。发生这种情况时,执行将被强制进入软件并且您的进程可以在那里运行。然后,您可以让流程运行指定的时间段,然后放弃控制回到NW,在离开前重置FIQ计时器。 NW然后可以运行,直到FIQ再次触发。如上所述,这不是一个处理SW和NW进程的单个调度程序,但它是一种执行您正在尝试执行的操作的潜在方式。尽管如此,你仍然需要考虑其他中断,所以记住这一点。