有人可以向我解釋,在CPU進入安全模式後(監視程序設置爲NS = 0
),安全操作系統如何安排? 現在CPU是否處於安全模式,計時器滴答中斷將由安全操作系統處理,而不是非安全世界?ARM TrustZone - 安全和非安全操作系統中調度程序的行爲
回答
監視器模式設置NS=0
會將CP15寄存器設置爲從監視器模式可見。請參閱:monitor mode IFAR/IFSR...。當監控模式切換到另一模式和NS=0
,那麼該模式是安全世界版本;這意味着分區CP15寄存器是安全版本。 總線週期也清除NS
位。
如果NS=1
被設置,則當監視模式開關,編組CP15寄存器是正常版本;主要是正常世界MMU將被激活。此外,NS
位設置爲總線週期。 TZ vs hypervisor
如何安全OS被定?
監視模式執行此操作。所述SCR
(CP15 C1,C1,0)具有確定監視器向量表是否使用或位當前CPU世界(安全或正常)。如果您處於正常的世界並且您希望定時器打斷該世界,您需要監視器模式來處理它。
您可以設置監控模式在兩種可能的方式,
- 讓所有安全中斷爲
FIQ
。 - 捕獲所有要監視的中斷。
建議您首選。在這種模式下,顯示器的代碼必須確保SCR#FIQ
(位2)設置在正常的世界中,但在安全世界中清除。在運行安全操作系統時(如果想讓正常的中斷來中斷安全操作系統),將會設置SCR#IRQ
(位1),並在正常的世界中清除。
所以當安全定時器具有FIQ
中斷,它捕捉到監控模式,它做了世界開關REF1和運行安全的OS計時器代碼。這安全計時器可能會導致安全的世界重新安排。世界日程安排程序互相交互的方式取決於軟件。也就是說,沒有通用的答案。這取決於,
- 監控模式
- 的安全 OS。
- 該正常世界操作系統。
主要ARM的TrustZone本身並不處理安全的OS調度。你需要編寫使用提供的原語來實現這個功能的軟件。 ARM TrustZone僅有助於實現它的不同方式。 TrustZone Whitepaper
參見:How to develop programs for TrustZone的一些替代設置。
Ref1:A 世界開關保存/恢復所有通用CPU寄存器使用模式。即,正常到安全世界開關,R0-R15(和所有銀行拷貝)加上可能NEON/VFP必須保存到正常世界存儲。同樣,必須重新加載寄存器以用於安全世界。監視器模式sp
爲訪問這些世界範圍提供了良好的錨點。監視模式sp
應該在安全啓動期間在世界初始化之前被設置,在正常世界初始化之前。這很像傳統的OS上下文切換。 SCR#NS
(位0)被適當設置;您可以在寄存器切換之前或之後執行此操作,具體取決於您如何保存寄存器(即按模式開關或按srs
)。
- 1. Linux內核可以作爲ARM TrustZone安全操作系統運行嗎?
- 2. 在ZedBoard上運行ARM TrustZone安全/正常世界「示例
- 3. 安全地共享操作系統'
- 4. 安全策略和安全機制與操作系統有什麼區別
- 5. 重新定義線程安全的malloc在FreeRTOS操作系統
- 6. 安全字體的所有瀏覽器和操作系統
- 7. 檢查Windows操作系統是否以安全模式運行
- 8. 安全系統的優化
- 9. 混合安全和非安全頁面
- 10. 安全和非安全端口
- 11. 在Windows操作系統中的線程安全和原子讀取
- 12. PHP線程安全和非線程安全的Windows
- 13. 所有的系統調用都是非實時安全的嗎?
- 14. 在非線程安全類(Android Camera)中安全執行函數
- 15. C++系統調用安全問題
- 16. 實時操作系統調度程序
- 17. 系統安全拋出:SecurityException
- 18. 餅乾系統 - 安全
- 19. PHP用戶系統安全
- 20. PHP登錄系統。安全?
- 21. 製作投票系統安全Meteor.Methods
- 22. 在非事件調度線程中調用fireTableRowsUpdated()是否安全?
- 23. 操作系統是否有安全文本輸入的功能?
- 24. TrustZone內存分區
- 25. 切換到安全世界後,OP-TEE的Linux調度程序如何工作
- 26. 文件系統和安全(PHP)
- 27. SAP BASIS - 系統管理和安全
- 28. 不安全的操作
- 29. 如何在非Windows操作系統的WiX安裝程序中獲取操作系統名稱?
- 30. 安全錯誤操作在Firefox中是不安全的.stylesheets
以上關於通過Monitor將模式從NonSecure世界切換到Secure World的說明適用於兩個世界都運行在同一個物理內核上的情況。這種理解是否正確?如果是多核環境,如果我們有一個TEE專用內核(假設安全操作系統是非SMP),另一個是非安全世界的核心,那麼解釋中解釋的工作原理是否會發生變化?我閱讀了ARM的白皮書 - 「使用TZ構建安全系統」(第5.4節)。在非安全操作系統(在TEE以外的核心運行)中進行SMC呼叫時會發生什麼情況? – Souvik
當然可以。如果您的問題是如何在第二個核心上安排'安全操作系統',那麼這將毫無意義。這是你的問題嗎?在這種情況下,它與AMP(非對稱多處理)相同。不需要昂貴的TZ CPU,只需要支持TZ的CPU(Cortex-R等)。 –