那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解MPU機制與實現方法

jf_EksNQtU6 ? 來源:談思實驗室 ? 2024-01-11 09:39 ? 次閱讀

01

MPU機制與實現詳解

1、freedom from interference

此概念來自ISO26262-1:absence of cascading failures (1.13) between two or more elements (1.32) that could lead to the violation of a safety requirement

多個元素之間沒有可能導致違反安全目標的級聯故障,稱之為免于干涉。

dfa6a82a-afa2-11ee-8b88-92fbcf53809c.png

在左側的設計中,ASIL A的軟件模塊不可能影響ASIL C的模塊,因此ASIL C模塊對ASIL A模塊免于干涉。

在右側的設計中,存在從ASIL A到ASIL C系統的數據/控制流。結果,至少在沒有任何進一步分析的情況下,ASIL C系統無法實現對于ASIL A軟件模塊的免于干涉。ASIL C系統可能會受到ASIL A系統的影響。在這種情況下,需要采取進一步的設計或驗證措施,以免受到干擾。例如,ASIL C系統可以首先檢查ASIL A系統數據的正確性。考慮到這一措施,ASIL C組件將實現免于干涉。

2、Separation in Memory

Vector 的MICROSAR OS將TASK ISR IOC等集合成OS Application,以便將不同的應用劃分到不同的內存區間。針對軟件進行的模塊化和分區可以提高軟件系統的康故障魯棒性。

同一安全等級的軟件或實現同一個安全目標的軟件劃分到同一個模塊或者OS Application。當故障發生時,可以很好的防止出現錯誤級聯,從而實現freedom form interference.

dfb8d068-afa2-11ee-8b88-92fbcf53809c.png

SC3 SafeContex OS中必須具備整個軟件中最高的 安全等級,例如軟件中最高等級的模塊位ASIL C,那么OS必須要具備ASIL C等級,才能保證軟件模塊的安全等級。

SC3 SafeContex OS會運行在Supervisor Mode,保證運行在系統的最高權限。通過Memory Partition,將各個模塊在內存訪問上的操作進行隔離。如果需要附加模塊之間的訪問安全機制,可以有效的達到各個不同安全等級模塊之間的freedom from interference.

3、Partitioning Options

Davinci 針對Memory Partitionning 有兩種解決方案:

1、 BSW運行在Non-Trusted,或者QM-partition,配合Safe WDG的時間監控(deadline)以及OS Scalability Class 3/4。這種情況適合與ECU Software中只有一小部分的軟件是功能安全目標實現模塊,另外較大一部分是QM。與底層的BSW交互較多。這種交互不需要跨越partition,SafeWDG作為有安全等級的模塊出現,且由于其功能是監控軟件運行,一般作為軟件中最高安全等級。

2、BSW所有模塊選擇safety 等級模塊,與ECU中safety等級的其他功能模塊安全等級一致。可以設置為最高安全等級或者QM的其他安全等級,最好與那些BSW交互較多的軟件模塊設置成一致的安全等級。這樣可以有效降低跨越partition所帶來的OS切換消耗時間。這種方案適合與有一大部分軟件模塊都是safe-related模塊的ECU。

除此之外,MCAL和外設模塊與BSW模塊之間的交互也需要評估,與BSW有交互的模塊需要劃分到BSW同級的模塊,并且需要具備該安全等級。

dfc7d3c4-afa2-11ee-8b88-92fbcf53809c.png

4、Memory Protection

Davinci Safe提供了針對software partition的memory protection,是實現同一個ECU中具備不同安全等級的軟件模塊時必須要實現的freedom form interference 方法。

02

Partition元素-MPU

1、MPU介紹

Memory Protection 的實現需要配合硬件MPU。通過MPU配置,各個軟件模塊將具備對不同memory區域的不同訪問權限,主要包括RAM ROM,以及外設寄存器的訪問權限。例如,配置低安全等級軟件模塊無法對高安全等級軟件模塊的flash RAM段進行訪問,(需要配合編譯器,將軟件模塊編譯到不同到區域)即可有效防止低安全等級的軟件模塊在故障產生時對高安全等級模塊發生級聯醒錯誤。

MPU的配置是通過設置多個MPU region來實現的,每個MPU region的可配置選項包括: 被保護的起始地址,訪問權限,所屬硬件MPU分類,Region Owner 以及有效ID等。

一般來講,MPU分為兩類,System Memory Protection Uint 和 Core Memory Protection Uint。SMPU主要存在與多核系統中,用于對各個BUS設定內存訪問權限。一般來講,SPMU由OS在啟動時設定好,在軟件運行過程中不會被重新設置,不會在軟件中動態的更改BUS對內存的訪問權限。

CMPU一般負責多核的內存保護,一般每個內核都具備一定數量的CMPU,可以為運行在該內核上的OS Application TASK ISR等分別設定不同的內存區域以及外設地址的訪問權限,從而實現軟件模塊的分區。

CMPU的訪問權限包括讀、寫、執行權限,可以根據內存區域存儲內容設定,CMPU在OS的運行過程中是可以更改權限的。當各個OS Application的權限被設定好之后,OS會在OS Application切換時對MPU相關寄存器進行重重新初始化,并設置位即將切換到的OS Application權限。當出現訪問超過MPU權限允許范圍時,MCU exception會被出發并進入其相應的OS 處理函數,用戶可以根據情況 Shutdown OS或者選擇進入安全模式,從而有效阻止了軟件訪問故障的發生。

在OS SC3/SC4中OS Application分為兩類,具備最高安全等級的OS Application設定位Tusted Application,其他不具備Trusted屬性的Application 屬于Non-Trusted Application,OS和Trusted Application 運行在Supervisor Mode下,Non-Trusted Application則運行在User模式下。推薦為Truesd Application 設定除Stack區域以外的所有地址方位的讀、寫、執行權限,包括外設地址。

為Non-Trusted Application設定屬于其私有的CFlash 和RAM段的訪問權限,以及共享數據區域的讀寫權限。

用戶可以根據ECU軟件各個模塊的安全等級情況,將軟件劃分的到多個OS Application 中,依據MCU資源設定MPU,進而實現不同安全等級的軟件模塊的協同工作,并把故障級聯的概率降到允許范圍內的需求。

2、SMPU和CMPU

2.1、SMPU特性

用于核之間的安全隔離,實現免于干涉SMPU限制核對某些內存空間或者MCU上通過總線訪問的外部資源,一般只限制寫權限在OS初始化時被初始化,運行過程不會改變。

配置步驟

dfdefb1c-afa2-11ee-8b88-92fbcf53809c.png

2.2、CMPU特性

同一核上OS Application Task ISR之間的安全隔離

在啟動代碼或者運行中設置,限制權限包括讀、寫、執行權限

配置步驟:

dfedcaa2-afa2-11ee-8b88-92fbcf53809c.png

2.3、Static MPU Regions特性

對MPU Regions不指定具體的Owner,對所有軟件模塊都生效

系統啟動時設定好,可以是SMPU 或者CMPU,運行過程中不會改變

2.4、Dynamic MPU Regions特性

對MPU Regions 指定Owner,Owner可以是OS Application TASK ISRS

根據Owner 運行與否,代碼運行過程中進行enable/disable

2.5、Optimized /Fast Core MPU Handing

利用Memory Protection Identifiers值的變化,選擇性使用MPU Regions,在不重新初始化MPU寄存器的情況下,OS切換到某線程,同時具備PID MPU Region ,實現Dynamic MPU切換。

3、MPU的配置

在常見的軟件設計中,由于將軟件整體開發到相同的ASIL等級會耗費大量的資源。一般情況下只有一部分軟件會開發生ASIL等級,其他模塊開發成相對較低的安全等級,為了達到freedom from inerference,需要限制低等級模塊對高等級模塊的訪問。下面舉例說明MPU配置的常見思路。

從Safety方面,高等級的軟件模塊可以訪問其Memroy以及安全等級較低的軟件模塊Memory。

從工具方面,MPU可以被配置為各個OS Application TASK ISR 分別獨立具備訪問范圍,工具并不會因為軟件模塊安全等級的高低而對OS RTE有區別配置,而只是采用模塊間的隔離策略。隔離機制不會生成在RTE中。

從系統角度,整體軟件至少需要一個Trusted部分(以OS Application為單位劃分),并且Trusted部分是安全等級最高的模塊,可以訪問其他模塊的Memory。

總結,使用MemMap機制,將各個OS Application所占用Code Data資源進行良好整齊的存放基礎上,MICROSAR 的推薦MPU配置為:

設置軟件中等級最高的軟件模塊為Trusted Os Application,同時設置位privilege。并設置Memory Region,允許該Application訪問呢所有Memory段和外設。

其他每個安全等級模塊各設定至少一個OS Applcaiton,并設置為Non-Trusted,針對其設定允許對整個Memory的讀權限,和模塊代碼的執行權限,以及Stack的寫權限,共享數據區域的讀或者讀寫權限。

關于Stack,不需要用戶自己設定,OS會占用一個Memory Region進行Stack設置,因此需要留一個Memory Region給到OS。

共同使用Static MPU 和Dynamic MPU,配合OsAppMemoryProtectionIdentifier的作用,盡量減少MPU在代碼運行過程中的重新初始化,這樣可以降低OS contex切換的時間。

e00354a8-afa2-11ee-8b88-92fbcf53809c.png

配置思路:

e0118aaa-afa2-11ee-8b88-92fbcf53809c.png

3.1、MPC MPU硬件特性及配置

以MPC5744 單核為例介紹,硬件資源如下:

16個SMPU,24個CMPU,12個data 6個instruction 6個 shared

2個supervisor ,3種訪問權限

6個可以選擇的SMPU訪問對象,即6個master ID,分別對應MCU總線上的外設單元

e02adca8-afa2-11ee-8b88-92fbcf53809c.png

在配置工具中查看硬件資源:

e03c867e-afa2-11ee-8b88-92fbcf53809c.png

針對OS Application /TASK /ISR設定Memory Region,依次設置其參數并關聯到需要生效的OS Application TASK ISR。根據需要對SMPU進行配置,如果所有MPU都沒有使用SMPU,OS會在初始化時禁止 Gloabl SMPU Control Bit,SMPU將不會生效。同理CMPU,即使OS 設定為SC3,不設置任何MPU Region,那么MPU會被disable。

MPU配置如下圖所示,其中被標注藍色框的選項是必須設置的選項:

e05bcf98-afa2-11ee-8b88-92fbcf53809c.png

MPC系列的特殊配置:

Memory Region Bus Master:設置允許訪問MPU設置地址的Master,僅針對SMPU有效

Memory Region Flag :訪問行為的屬性,可以參數硬件手冊

當出現MPU錯誤時,代碼會進入

Os_Hal_Exception_Machine_MCSRR

Os_Hal_Exception_Data

Os_Hal_Exception_Instrcution

03

Partition實現元素OSApplication

3.1、OS/OsApplication權限以及訪問的權限切換

硬件MCU支持兩種訪問模式,Privileded 和Non-privileded。其中前者具有比較高的權限,有一部分寄存器需要在前者模式下才能被訪問,詳細可以參考RM手冊。OS會運行在Privilege Mode,具有最高的訪問權限,可以訪問所有寄存器。

在采用不同的功能安全等級的軟件模塊協調工作的的系統軟件中,需要利用MPU單元防止低安全等級的模塊對硬件寄存器進行訪問,同時限制除最高安全等級模塊之外的其他軟件模塊的Memory訪問。

3.1.1、 OS/OsApplication權限

OS 具備最高權限 Privilege Mode Trusted

Trusted OS Application - Privileged Mode Trusted,一般將軟件按照安全等級劃分,并分別歸屬到不同的OsApplication中,其中安全等級最高的部分設置為Trusted,屬于可信度最高的模塊。目前建議Trusted OsApplication具備其他Application Stack的所有區域訪問權限。

3.1.2 MCAL模塊Protected Registers 訪問

系統初始化時,進行MPU初始化,在此之前MPU處于Disable狀態,一般在OS啟動初始化MCAL模塊,此時可以訪問Protected Register。在OS初始化以后,如果MCAL模塊需要在Privilege Mode運行時,基本可以分為以下幾類:

1、Vector Modules,例如CAN/LIN ETH等通訊模塊,一般CAN需要勾選CanUserPeripheralAccessApi,并根據PROTED AREA中的定義相應的OsApplication,CAN將會調用OS接口進行privilege權限的獲取。

e06dc3b0-afa2-11ee-8b88-92fbcf53809c.png

2、MCAL模塊一般需要開啟User Mode,例如FlsEnableUserModeSupport,勾選以后,MCAL會采用privilege Mode進行訪問。

3.1.3 OsShutdown的實現

AUTOSAR要求只有在Trusted OsApplication才可以進行OsShutdown,否則將無法shutdown成功。可以通過Event的方式通知Trusted Task調用OsShutdown Api。但是需要設置一個高優先級/不可搶占/拓展類的TASK,代碼示例如下:

e087d854-afa2-11ee-8b88-92fbcf53809c.png

在向FBL跳轉以及系統最后的Reset務必使用Mcu_PrefromReset,這樣才可以disable MPU,否則可以使用代碼disable MPU之后,在調用對應的API進行Reset操作。

3.2 、Trusted/Non-Trusted 配置舉例

不同等級的OsApplication之間互相調用時涉及到安全問題,需要做安全訪問的權限轉換。

1.Trusted Funtion

Trusted OS Application供給其他Application調用的函數,應在Privilege Mode下執行。用于Non-Trusted OsApplication調用Trusted OsApplication內部函數,舉例如下:

e08f1876-afa2-11ee-8b88-92fbcf53809c.png

e0a2ed1a-afa2-11ee-8b88-92fbcf53809c.png

e0b96ed2-afa2-11ee-8b88-92fbcf53809c.png

e0cafc60-afa2-11ee-8b88-92fbcf53809c.png

2.Non-Trusted Funtion

Non-Trusted OsApplication供給其他Application調用的函數,應在User Mode下執行,用于其他OsApplication調用Non-Trusted OsApplication 內部函數。配置方式與上面類似。

3.3、MemMap機制與OS數據的存放

MPU需要限制各個OsApplication Task ISR對各個地址的訪問權限,所以明確并整理好各個軟件模塊的代碼數據存放位置是關鍵。通過MemMap機制,和Link文件。可以將各個模塊的代碼和數據存放到指定的區域,從而實現MPU保護。如下圖,MemMap的作用。

e0e5bbfe-afa2-11ee-8b88-92fbcf53809c.png

當發生MPU錯誤時,OS會進入ProtectionHook,并返回E_OS_PROTECTION_MEMORY或者E_OS_PROTECTION_EXCEPTION。

04

Partition元素-RTE

RTE 作為動態配置的虛擬總線模塊,負責 OS application 之間的數據交互和訪問,在具備 Memory。

partition 的系統中, OS application 之間的訪問會存在跨越安全等級的情況, RET 具備一定的免于干擾的。

機制,分別針對各 OS application 產生代碼和變量,在后續的軟件分區過程中分別將 RET 生成的對應各。

OS application 的 memory 內容分別歸其所屬。由于大部分的機制由 RTE 自動完成,需要用戶設置的主要。

有以下幾點:

為 OS application 分別關聯 ECUC partition

生成代碼,按照 RTE 段的內容分別歸屬到相應的 OS application,并各自設置訪問權限的允許,

公共的 RTE code(如 RTE_START_SEC_CODE) 需要對所有的 OS application 開放訪問權限。

尤其針對跨越 OS application 的訪問,分別做好 runnable 的 task mapping,確保調用端和被調用端

分別 mapping 到對應 task。

RTE 端口盡量不要出現懸空狀態,或鏈接不處理數據的狀態







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121169
  • ROM
    ROM
    +關注

    關注

    4

    文章

    575

    瀏覽量

    85991
  • MPU
    MPU
    +關注

    關注

    0

    文章

    375

    瀏覽量

    48953
  • ISR
    ISR
    +關注

    關注

    0

    文章

    38

    瀏覽量

    14471
  • BSW
    BSW
    +關注

    關注

    0

    文章

    15

    瀏覽量

    3527

原文標題:MPU機制與實現詳解

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    詳解Linux內核搶占實現機制

    本文詳解了Linux內核搶占實現機制。首先介紹了內核搶占和用戶搶占的概念和區別,接著分析了不可搶占內核的特點及實時系統中實現內核搶占的必要性。然后分析了禁止內核搶占的情況和內核搶占的時
    發表于 08-06 06:16

    虛擬示波器觸發機制實現方法

    由于源程序有些看不懂!虛擬示波器觸發機制實現方法。。以及屏幕波形的穩定。實現方法
    發表于 10-25 08:45

    MPU9255英手冊

    MPU9255英手冊
    發表于 10-24 11:07 ?25次下載

    詳解藍牙模塊原理與結構

    電子發燒友網站提供《詳解藍牙模塊原理與結構.pdf》資料免費下載
    發表于 11-26 16:40 ?94次下載

    詳解精密封裝技術

    詳解精密封裝技術
    的頭像 發表于 12-30 15:41 ?1710次閱讀

    詳解分立元件門電路

    詳解分立元件門電路
    的頭像 發表于 03-27 17:44 ?3376次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b>分立元件門電路

    詳解pcb和smt的區別

    詳解pcb和smt的區別
    的頭像 發表于 10-08 09:31 ?3475次閱讀

    詳解pcb地孔的作用

    詳解pcb地孔的作用
    的頭像 發表于 10-30 16:02 ?1751次閱讀

    詳解TVS二極管

    詳解TVS二極管
    的頭像 發表于 11-29 15:10 ?1717次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b>TVS二極管

    詳解pcb不良分析

    詳解pcb不良分析
    的頭像 發表于 11-29 17:12 ?1237次閱讀

    詳解PCB半成品類型

    詳解PCB半成品類型
    的頭像 發表于 12-11 15:41 ?1496次閱讀

    詳解pcb的msl等級

    詳解pcb的msl等級
    的頭像 發表于 12-13 16:52 ?1w次閱讀

    詳解pcb微帶線設計

    詳解pcb微帶線設計
    的頭像 發表于 12-14 10:38 ?3663次閱讀

    詳解pcb的組成和作用

    詳解pcb的組成和作用
    的頭像 發表于 12-18 10:48 ?1674次閱讀

    詳解pcb回流焊溫度選擇與調整

    詳解pcb回流焊溫度選擇與調整
    的頭像 發表于 12-29 10:20 ?1824次閱讀
    老虎机干扰器| 百家乐官网网站建设| 滨海湾百家乐娱乐城| 优博国际娱乐城| 玩百家乐新太阳城| 百家乐官网斗视频游戏| 免佣百家乐规则| 百家乐官网扑克发牌器| 百家乐试玩| 百家乐官网玩牌| 百乐门娱乐城注册| 百家乐h游戏怎么玩| 百家乐官网玩法与规则| 百家乐德州| 棋牌百家乐官网有稳赚的方法吗 | 百家乐视频中国象棋| 博狗百家乐官网现场| 百家乐那里信誉好| 百家乐官网博弈指| 开江县| 送彩金百家乐的玩法技巧和规则| 二代百家乐官网破解| 棋牌评测网站| 百家乐投注很不错| 百家乐官网记牌器| 博彩旅游业| 7人百家乐中号桌布| 百家乐官网高手心得| 棋牌类单机游戏下载| 百家乐在线投注顺势法| 百家乐官网棋牌辅助| 六合彩报码聊天室| 百家乐前四手下注之观点| 网上百家乐官网大赢家筹码| 娱乐城网址| 至尊百家乐娱乐平台| 百家乐官网乐翻天| 凯时百家乐官网技巧| 麻将二八杠技巧| 百家乐能赚大钱吗| 百家乐官网槛|