功能安全中的軟體隔離(二)
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 要求,見
*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中不同的OS Applications互相訪問是有許可權的。可設置不允許訪問,或訪問報警等,這樣可以根據要求得到軟體隔離的效果。
這條需求實現是基於OS中的Trusted和Non-Trusted的OS-Application做到的。兩個區域之間的訪問對於read,write,excution等限制做了配置和處理,一旦限制訪問,就觸發回調函數進入報警或處理。
推薦閱讀:
※軟考中級的軟體設計師難考嗎?
※請問軟體開發與編程對電腦有什麼要求嗎?
※有哪些硬體限制對軟體設計造成影響的例子?
※為什麼 Windows 環境下不能刪除被載入內存的磁碟文件?
