在與從事功能安全開(kāi)發(fā)行業(yè)的同事以及SASETECH 社區(qū)的成員討論時(shí),筆者經(jīng)常被問(wèn)及有關(guān)芯片內(nèi)存保護(hù)單元(MPU)的問(wèn)題。ISO 26262的第6部分和第11部分都提及了MPU,但并未詳細(xì)描述MPU在功能安全開(kāi)發(fā)中的具體要求。因此,本文旨在討論以下問(wèn)題:什么是MPU?MPU解決哪些問(wèn)題?功能安全開(kāi)發(fā)對(duì)MPU的功能安全需求有哪些?
01.
MPU簡(jiǎn)述
微處理器單元內(nèi)的內(nèi)存保護(hù)單元(Memory Protection Unit,簡(jiǎn)稱(chēng)MPU)是執(zhí)行內(nèi)存訪問(wèn)控制和隔離的硬件機(jī)制。其核心功能是確保系統(tǒng)中的每個(gè)程序或進(jìn)程只能訪問(wèn)其被分配的內(nèi)存區(qū)域。這一機(jī)制有效防止了非法內(nèi)存訪問(wèn),保護(hù)系統(tǒng)不受惡意軟件攻擊及數(shù)據(jù)損壞的威脅。此外,它還支持多任務(wù)環(huán)境下的上下文切換,確保了任務(wù)間的獨(dú)立性及系統(tǒng)整體的穩(wěn)定性。
幾乎所有具備功能安全等級(jí)的芯片均集成了MPU,例如英飛凌(Infineon)的AURIX系列、瑞薩(Renesas)的RH850系列以及恩智浦(NXP)的S32K系列等。
在功能安全相關(guān)產(chǎn)品開(kāi)發(fā)的背景下,MPU的主要目標(biāo)可概括為以下幾點(diǎn):
● 代碼訪問(wèn)保護(hù):通過(guò)定義存儲(chǔ)器區(qū)域之間的訪問(wèn)規(guī)則,確保數(shù)據(jù)安全和系統(tǒng)穩(wěn)定。
●內(nèi)存或外設(shè)保護(hù):為不同的存儲(chǔ)區(qū)域配置存儲(chǔ)器訪問(wèn)權(quán)限,這包括指令/數(shù)據(jù)緩存(I/D Cache)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)以及外設(shè)存儲(chǔ)。
MPU主要防御的故障模式包括:
●數(shù)據(jù)完整性破壞:防止用戶應(yīng)用程序破壞操作系統(tǒng)所依賴(lài)的數(shù)據(jù)。
●任務(wù)隔離:避免一個(gè)任務(wù)異常地訪問(wèn)另一個(gè)任務(wù)的數(shù)據(jù)區(qū)域,確保任務(wù)之間的隔離。
●意外存儲(chǔ)訪問(wèn):防止諸如堆棧溢出或數(shù)組越界等意外的存儲(chǔ)訪問(wèn)行為。
●關(guān)鍵數(shù)據(jù)保護(hù):通過(guò)將不可寫(xiě)的關(guān)鍵數(shù)據(jù)區(qū)域設(shè)為只讀,防止對(duì)該區(qū)域數(shù)據(jù)的錯(cuò)誤篡改。
02.
MPU工作原理
MPU負(fù)責(zé)實(shí)現(xiàn)一系列內(nèi)存保護(hù)功能,其工作原理主要包括以下幾個(gè)方面:
●內(nèi)存區(qū)域定義:MPU可以定義多個(gè)內(nèi)存區(qū)域,通常能夠保護(hù)多達(dá)16個(gè)不同的內(nèi)存區(qū)域。
●訪問(wèn)權(quán)限設(shè)置:操作系統(tǒng)(OS)可以根據(jù)安全策略為每個(gè)內(nèi)存區(qū)域配置特定的訪問(wèn)權(quán)限。這意味著可以指定哪些進(jìn)程或任務(wù)有權(quán)讀取、寫(xiě)入或執(zhí)行內(nèi)存中的數(shù)據(jù)。例如,可以設(shè)定Region A僅允許執(zhí)行任務(wù)Task X,而Region B僅允許執(zhí)行任務(wù)Task Y。如果一個(gè)屬于Task X的4字節(jié)指令“DCBA”被放置在Region A中,并且該指令的一部分延伸到了不允許執(zhí)行的Region B,則該指令將無(wú)法執(zhí)行。

●地址映射與檢查:MPU與內(nèi)存管理單元(Memory Management Unit,MMU)協(xié)同工作,負(fù)責(zé)將虛擬地址映射到物理地址。在映射過(guò)程中,MPU會(huì)檢查每個(gè)內(nèi)存訪問(wèn)請(qǐng)求的權(quán)限,確保其與內(nèi)存區(qū)域的訪問(wèn)設(shè)置相匹配。
●異常生成:一旦檢測(cè)到違反內(nèi)存區(qū)域訪問(wèn)權(quán)限的請(qǐng)求,MPU將觸發(fā)一個(gè)異常或中斷,以阻止非法訪問(wèn)。這會(huì)通知操作系統(tǒng),操作系統(tǒng)隨后可以采取措施,如終止非法訪問(wèn)進(jìn)程或記錄安全事件以供后續(xù)分析。以英飛凌(Infineon)的AURIX系列芯片為例,當(dāng)MPU激活時(shí),任何未包含在活動(dòng)保護(hù)集選擇的MPU范圍內(nèi)的指令或數(shù)據(jù)訪問(wèn)都將立即導(dǎo)致CPU陷入陷阱(trap),并可向安全管理單元(Safety Management Unit,SMU)發(fā)出警報(bào)。
作為硬件組件,MPU的執(zhí)行速度通常優(yōu)于軟件實(shí)現(xiàn)的內(nèi)存保護(hù)機(jī)制,這使得它能夠高效地處理大量的內(nèi)存訪問(wèn)請(qǐng)求,同時(shí)保持系統(tǒng)的響應(yīng)性。MPU是現(xiàn)代計(jì)算機(jī)系統(tǒng)中的一個(gè)關(guān)鍵部分,它為操作系統(tǒng)提供了一種強(qiáng)有力的方法來(lái)隔離任務(wù)、保護(hù)數(shù)據(jù),并防御惡意軟件攻擊。通過(guò)這種方式,MPU有助于維護(hù)整個(gè)系統(tǒng)的穩(wěn)定性和安全性。
03.
功能安全開(kāi)發(fā)中對(duì)于MPU的要求
在功能安全開(kāi)發(fā)中,MPU扮演著至關(guān)重要的角色。其核心要求主要遵循ISO 26262這一國(guó)際功能安全標(biāo)準(zhǔn)。對(duì)于不同功能安全完整性等級(jí)要求的軟件組件,必須滿足要素共存的設(shè)計(jì)原則。對(duì)于沒(méi)有安全相關(guān)功能的軟件組件,其安全要求遵循無(wú)干擾原則,確保:
◆ 安全的內(nèi)存訪問(wèn)
◆正確的時(shí)間執(zhí)行
◆安全的數(shù)據(jù)交換
以操作系統(tǒng)(OS)為例,MPU可用于實(shí)現(xiàn)空間隔離保護(hù),以防止內(nèi)存錯(cuò)誤。在這種情況下,MPU的目的是確保:
●同一軟件分區(qū)內(nèi)的任務(wù)(Task)之間不會(huì)相互干擾。一個(gè)軟件分區(qū)不能修改其他分區(qū)的代碼或數(shù)據(jù),也不能控制其他分區(qū)的非共享資源。如下圖所示。

●在操作系統(tǒng)切換正在運(yùn)行的任務(wù)或中斷服務(wù)例程時(shí),執(zhí)行上下文切換。此時(shí),上下文數(shù)據(jù)被存儲(chǔ),MPU重新配置,僅激活當(dāng)前任務(wù)或中斷服務(wù)例程所需的內(nèi)存分區(qū)。這可以保護(hù)任務(wù)Task1和Task2免受應(yīng)用程序Application B的未授權(quán)訪問(wèn)。如下圖所示。

在功能安全開(kāi)發(fā)過(guò)程中,MPU主要保護(hù)的對(duì)象包括安全相關(guān)的應(yīng)用程序數(shù)據(jù)、寄存器數(shù)據(jù)和堆棧數(shù)據(jù)等。
04.
總結(jié)
通常,在功能安全開(kāi)發(fā)過(guò)程中,MPU主要用于確保不同ASIL(Automotive Safety Integrity Level)等級(jí)的任務(wù)或不同執(zhí)行任務(wù)之間的獨(dú)立性。通過(guò)進(jìn)行故障模式與影響分析(FMEA)和獨(dú)立性故障分析(DFA),我們可以確定分區(qū)保護(hù)的軟件安全需求。

作者
邊俊
磐時(shí)創(chuàng)始人/首席安全專(zhuān)家
汽車(chē)安全社區(qū)SASETECH發(fā)起人;智能網(wǎng)聯(lián)預(yù)期功能安全工作組核心成員;國(guó)內(nèi)最早從事汽車(chē)功能安全、預(yù)期功能安全的專(zhuān)家之一
-
微處理器
+關(guān)注
關(guān)注
11文章
2431瀏覽量
85835 -
MPU
+關(guān)注
關(guān)注
0文章
454瀏覽量
51319 -
功能安全
+關(guān)注
關(guān)注
2文章
199瀏覽量
6185
發(fā)布評(píng)論請(qǐng)先 登錄
大唐恩智浦啟動(dòng)首個(gè)ISO 26262功能安全開(kāi)發(fā)流程認(rèn)證項(xiàng)目
動(dòng)力電池bms功能安全開(kāi)發(fā)過(guò)程包括哪些內(nèi)容
Android安全開(kāi)發(fā)之WebView中的地雷
STM32安全框架助力客戶應(yīng)對(duì)安全挑戰(zhàn)
嵌入式開(kāi)發(fā)系列課程五:Windows CE安全開(kāi)發(fā)
電子功能安全開(kāi)發(fā)及汽車(chē)EPS電機(jī)控制設(shè)計(jì)
什么是SEooC?SEooC和正常功能安全開(kāi)發(fā)有什么不同?
貿(mào)澤開(kāi)售面向安全應(yīng)用的英飛凌OPTIGA Trust M物聯(lián)網(wǎng)安全開(kāi)發(fā)套件
傾倒安全開(kāi)關(guān)的作用
智能網(wǎng)聯(lián)汽車(chē)ISO 26262?功能安全開(kāi)發(fā)解決方案
功能安全開(kāi)發(fā)的“降本利器”:高效平臺(tái)化工具鏈實(shí)戰(zhàn)
邊聊安全 | ASPICE與功能安全流程體系融合
邊聊安全 | 智能駕駛時(shí)代的新挑戰(zhàn):AI功能安全
邊聊安全 | 預(yù)期功能安全接受準(zhǔn)則
邊聊安全 | 人機(jī)交互對(duì)功能安全的影響
邊聊安全 | 功能安全開(kāi)發(fā)之MPU
評(píng)論