2014-10-20 66 views
1

如果我在啓用了TZ的設備上有單個核心CPU,並且有兩個進程在運行:一個在安全領域,一個在非安全領域,是否有可能擁有調度程序以先發制人的方式管理它們,以便每個進程都被分配一定的時間片?TrustZone:從兩個世界調度進程

回答

0

TZ通常在單線程中執行,所以每當有來自非安全端的請求運行一些安全的應用程序。它將經歷監視模式,然後上下文切換將發生從非安全世界到安全世界,然後安全應用程序將在一個線程的安全世界中開始執行。所以那個核心將會在那個時候在安全的世界中運行,但是如果來自no sec世界的任何中斷,則執行將停止並且上下文將從安全切換到非安全以處理中斷,在處理它之後將再次切換到安全的世界和這一次安全的世界可以安排到另一個核心。

所以作爲回答你的問題是不可能的。到目前爲止,TZ運行在單核上,一次只能有一個核心執行。

只是爲了更加明確,如果安全的應用程序需要執行一些文件操作(如TZ沒有它使用了一些監聽到非安全方面執行該操作然後再上下文切換將發生文件系統)

2

實際上,這是可能的,但只能圍繞一種方式。您不能使用單個調度程序來處理在完全獨立的執行環境中執行的兩個獨立任務。你可以做的是使用FIQ爲你做時間切片。如果將FIQ設置爲SW異常,則可以將其設置爲定期觸發,例如每隔50ms觸發一次。發生這種情況時,執行將被強制進入軟件並且您的進程可以在那裏運行。然後,您可以讓流程運行指定的時間段,然後放棄控制回到NW,在離開前重置FIQ計時器。 NW然後可以運行,直到FIQ再次觸發。如上所述,這不是一個處理SW和NW進程的單個調度程序,但它是一種執行您正在嘗試執行的操作的潛在方式。儘管如此,你仍然需要考慮其他中斷,所以記住這一點。