功能安全中的軟體隔離(二)
01-24
上篇說到ASIL等級的問題,因為有了不同的ASIL等級,所以就有了不同ASIL等級之間需要隔離(Partition)這個概念,需要避免低等級的任務修改高等級的數據,造成高等級使用了不可信的數據,影響安全功能。在軟體架構設計(Software architectural design)階段,完成靜態架構和動態架構之後,需要做軟體獨立性分析,這裡重點就是分析這部分內容,分析結果有可能影響不同模塊ASIL等級的調整。
在ISO26262中,總結了一下,關於軟體隔離,有以下要求:
重點如下:
1,共享資源的使用方式應確保軟體分區免於干擾: 一個軟體分區內的任務彼此之間不能免於干擾; 一個軟體分區不能改變其它軟體分區的代碼或數據,也不能訪問其它軟體分區的非共享資源;一個軟體分區從共享資源獲取的服務不能被另一個軟體分區影響。這包括相關資源的性能,以及計劃訪問資源的使用率、延遲、抖動和持續時間。
2,由專用的硬體功能或等效方法來支持軟體分區(該要求適用於 ASIL D,按照 4.3)3,執行軟體分區的軟體部分,按照分配給軟體分區要求的相同 ASIL 等級進行開發,或按照比分配給軟體分區要求的最高 ASIL 等級更高的一個 ASIL 等級進行開發; 註: 一般來說操作系統提供或支持軟體分區。,4,在軟體集成和測試(按照第 10 章)過程中執行軟體分區的驗證。簡單的說,基本上要求硬體上最好具備隔離功能,軟體上在task和內存使用上需要隔離
另外,在PART6中隔離額外還提了對Freedom from interference between software elements 要求,見 這裡具體對下面幾點提了要求(見標準PART6 Annex D)*Achievement of freedom from interference*Timing and execution
*Memory*Exchange of information下面個人談一談工程中如何實現。從AUTOSAR角度在軟硬體上粗略說一下。
*硬體上如果使用兩塊MCU實現系統功能,則不管是在CPU還是內存上已完成物理性獨立,則隔離相對容易做到,重點問題則放在了兩塊MCU的同步性上。我們討論一下一塊MCU的情況下如何做到。做功能安全一般會專門選取已有功能安全設計概念的MCU,現在各大晶元廠商為了爭奪這塊市場,都已經推出了最高到ASIL D等級功能安全的MCU。例如飛思卡爾MPC5643L,英飛凌的AURIX系列,TI的TMS570晶元等(一般還會搭載自己的電源晶元,綁定出售)。這些晶元的配置都有一些共同之處。例如都具備內核鎖步(lockstep)工作模式(一個內核工作的同時另一個內核進行監測)。具有內存保護模塊(MPU),具有故障處理模塊,具備地址訪問和內存數據的ECC校驗等。*軟體上硬體上軟體隔離最相關的是MPU(Memory Protection Unit),MPU簡單的說是可以給不同的ASIL等級分配不同的內存空間,這些內存空間互相訪問有限制,同時定址的路徑也是互相隔離的。避免了低等級的任務修改了高等級的數據問題。
從AUTOSAR的實現來看,軟體隔離主要通過OS和RTE實現。硬體上提供的內存保護單元,實際上就是依賴於OS的OS Application的Trusted和Non-Trusted設置,以及RTE中不同的OS Applications見的IOC (InterOS-Application Communicator)介面通訊來實現的。在AUTOSAR的AUTOSAR_SRS_OS.pdf這個文檔中有下面這條是對隔離提的主要要求 The operating system shall prevent an OS Application from modifying the memory of other OS-Applications。 需要提供防止OS Applications互相修改內存數據的功能,具體描述如下:*其中,OS Application的概念如下:(The OS shall provide a higher-level abstraction to allow the user to group existing OS objects (tasks, ISRs etc.) so that objects in the group can be manipulated only by objects in the same group. Such a group is called an OS-Application.)簡單的說,OS中不同的OS Applications互相訪問是有許可權的。可設置不允許訪問,或訪問報警等,這樣可以根據要求得到軟體隔離的效果。
這條需求實現是基於OS中的Trusted和Non-Trusted的OS-Application做到的。兩個區域之間的訪問對於read,write,excution等限制做了配置和處理,一旦限制訪問,就觸發回調函數進入報警或處理。如此,實現軟體隔離。認識所限,編排醜陋,如有錯誤,請指正。推薦閱讀:
※軟考中級的軟體設計師難考嗎?
※請問軟體開發與編程對電腦有什麼要求嗎?
※有哪些硬體限制對軟體設計造成影響的例子?
※為什麼 Windows 環境下不能刪除被載入內存的磁碟文件?