色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

AUTOSAR內存分區和MPU關系簡述

汽車ECU開發 ? 來源:AutomotiveSoftwareEngineer ? 2024-03-18 11:15 ? 次閱讀

MPU的功能

wKgaomX3spuAIr-1AAB0LYdjRW0563.jpg

MPU功能簡述

MPU保護與當前執行的代碼“不相關“的所有數據。

“不相關”是相關內存地址的權限受限制,或者是程序訪問內存地址的范圍于其無關,阻止關鍵數據被破壞,使嵌入式系統更加健壯與安全。

MPU作用主要有兩個方面:

為兩個保護,一個檢測

1)MPU的保護作用

指訪問區域的保護和讀寫區域的保護。

① 訪問區域的保護。

可以將內存區域劃為特權區域和普通區域,特權區域只有特權用戶才能訪問,普通用戶被禁止訪問,以此來保護特定的數據。

常見的應用場景:

1> 對帶系統的來說,可以設置數據,以防止用戶應用程序破壞操作系統使用過程中的數據。

2> 隔離任務,以防止一個任務訪問其他任務的數據。

3> 將SRAM或者RAM空間定義為不可執行,防止代碼注入。

② 讀寫區域的保護。

設置指定的區域為只讀,可以有效的防止比較關鍵的數據被錯誤修改。

2)MPU的檢測功能

指可以檢測堆和棧的溢出情況及數組有沒有越界。

功能安全中對內存分區MPU的相關描述

汽車ECU軟件是高度模塊化的嵌入式軟件,其功能實現是可以為非功能安全,和功能安全的SWC組合,它們分別擁有不同的ASIL安全等級。

wKgaomX3spuAM8-FAAD_AF1j25A516.jpg

根據ISO26262,如果嵌入式軟件包含不同ASIL等級的SWC,要么整個軟件工程都需要基于最高安全等級的要求進行開發,需要保證擁有更高安全等級的SWC的操作不會受到其他SWC的干擾,也即需要做到FFI(Freedom from interference)的設計。

基于更低安全等級要求開發的SWC,可能會出現錯誤地訪問到更高安全等級SWC的內存區域,產生干擾。

為此,SWC需要運行在不同的內存區域,或者不同的內存分區,來防止類似的內存訪問違例。

wKgZomX3spuAK_H2AAEUuQ7-yaI262.jpg

ISO26262中,以下內存相關的故障影響被視為SWC之間產生干擾的原因:

內容損壞

讀寫區域屬于另一個SWC

數據不一致

棧溢出或棧下溢

要滿足上述定義,是MPU內存保護的目標,也可以通過限制對于內存以及內存對應的硬件的訪問。

這里的內存分區意味著:

各OS Application運行在相互保護(不干涉)的內存區域,在某一個分區上運行的代碼,無法修改另一個分區的內存。

內存分區也可以保護只讀內存段(例如代碼執行)以及內存對應的硬件。

內存分區和用戶/特權模式可以保證SWC之前互不干擾——即使某一個SWC出現了內存相關的故障,也不會對其他軟件模塊有影響。

如果一個SWC運行在用戶模式,那么它對CPU資源/指令的訪問也是受限制的。

MPU的微控制器有專用的硬件

即內存保護單元(MPU),來支持內存分區。

wKgZomX3spuAV2evAABGB8Zm_xE658.jpg

若想深入理解上述的MPU描述,得先來看下,內存分區和MPU的基礎知識。

計算機程序執行的基礎簡介

內存

計算機的主要作用是對輸入數據進行處理和運算后輸出,CPU處理器主要完成數據的處理運算,但輸入輸出數據包括處理過程中的臨時數據需要有一個空間去存放,這個臨時存放數據供處理器和外設使用的地方就是內存。

wKgaomX3spuAV7RuAABnBrStZBE939.jpg

如上圖,為了提高效率把存放程序(也即控制指令)和數據(也即操作數)的空間分開,同時把訪問指令與訪問數據的總線分開,使取指令和執行指令能夠重疊(處理器的流水線)。

內存尋址

wKgZomX3spuAEbAgAACsXxyhfJY935.jpg

處理器與內存之間有地址總線用于尋址,有數據總線用于傳輸數據,當然也有相應的控制線來讀寫操作。

wKgaomX3spuASCcBAAIFx9TNW5k653.jpg

存儲器地址的映射簡介

wKgaomX3spuAJsYQAAS_VxC0iTA783.jpg

存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,如圖所示,給存儲器分配地址的過程稱為存儲器映射。

如果內核整體可以尋址的 0 到 2^32 -1 共計 4GB 的尋址空間。功能部件RAM, Flash,外設等共同排列在一個4GB的地址空間內。

地址分配

程序C語言通過這些地址可以訪 問 RAM、Flash、外設等,進行讀寫操作。

C編譯的程序占用的內存分為以下幾個部分:

wKgZomX3spuAZ98xAACXKaK0p4w862.jpg

棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。

堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表。

全局區(靜態區)(static)—全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。

文字常量區(.const)—常量字符串就是放在這里的。

程序代碼區(.text)—存放函數體的二進制代碼。

棧:只要棧的剩余空間大于所申請空間,系統將為程序提供內存,否則將報異常提示棧溢出。MPU也支持堆棧溢出檢測,簡單如下圖。

wKgZomX3spuAExeKAAA7Nz-KGd4060.jpg

代碼例子

wKgaomX3spuAEL-iAAFP6IaP8H4378.jpg

inta=0;//全局初始化區
int a = 0; //全局初始化區
char *p1; //全局未初始化區
main() {
int b; //棧
char s[] = "abc"; //棧
char *p2; //棧
char *p3 = "123456"; //123456?在常量區,p3在棧上。
static int c = 0; //全局(靜態)初始化區
    p1 = (char *)malloc(10);
    p2 = (char *)malloc(20);
//分配得來得10和20字節的區域就在堆區。
strcpy(p1, "123456"); //123456?放在常量區,編譯器可能會將它與p3所指向的"123456"優化成一個地方。
}

MPU內存保護單元

Memory Protection Unit

上文描述的內存區,堆棧區,數據區,代碼區都可以被MPU保護,安全相關的微處理器通常都在硬件級別上支持內存分區保護,MPU主要是通過內存映射的地址范圍限制,和監控非受信區域的內存訪問來實現的。

wKgaomX3staAYDmPAADRYBF8LkQ452.jpg

MPU可以保護的區域為內存映射區memory map,可以設置不同存儲區域的存儲器訪問特性(如只支持特權訪問或全訪問)和存儲器屬性(如可緩存、可緩沖、可共享),對存儲器(主要是內存和外設)提供保護,保護可執行程序的(data、code和stack)區域。

MPU 的Region區域

是可編程保護區域(需要控制器硬件支持),如下圖

wKgZomX3staAYErPAADVW2HyLQg573.jpg

wKgZomX3steAVnDwAADdh7eBgy0792.jpg

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

wKgZomX3staAYEeTAABc-R9FvWU751.jpg

MPU在執行其功能時,也是以“region區域”為單位的。

通過上述的MPU配置,各個軟件模塊將具備對不同memory區域的不同訪問權限。

如圖,一個region上述配置的一段連續的地址,它們的位置和范圍都要滿足一些限制。

MPU是可以管理所有的存儲空間(如圖 4G),可以劃分不同的Region內存區域,并為每個Region設置訪問權限與規則,不同的Region允許相互重疊,重疊區域受多重訪問規則的限制。

Link命令對于內存的設置

編譯器關聯的,可參考下面TI的解釋

https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

特權模式與用戶模式

是內核的執行模式。

當代碼運行在特權模式下,代碼擁有所有的訪問許可;

而代碼運行在用戶模式,則訪問權限受限制。

也是MPU中所定義的內存訪問規則。

AUTOSAR中的定義

內存分區的定義

wKgaomX3staALuhYAAGS7b0Zu-Y658.jpg

如上圖,一般來說,

BSW模塊運行在授信模式/監控者模式內存分區當中。

部分SWC分組并放置到非授信/用戶模式內存分區當中。

個別SWC也運行在授信/監控者模式內存分區當中。

項目中可以有多個非授信/用戶分區,每個分區都可以包含一個或多個SWC。

上圖中,分區是以應用軟件OS-Application為對象定義的,OS-Application和內存分區(Partition)之間,是一對一的關系。

如何理解OS-Application?

下文簡述

如下圖中,應用程序內的 AUTOSAR SWC

wKgaomX3syOAXsBZAABizeS-lKU542.jpg

在AUTOSAR架構中,應用程序位于RTE之上的,基于應用功能邏輯定義,內部包含一組存在信息交換的軟件組件(SWC)。

軟件組件SWC是實現一系列的原子功能(最小單元不可拆分),SWC包含一系列的功能實現和變量定義,這些功能實現和變量定義對于外部是不可見的,僅能通過公布的RTE接口使用。

SWC以周期性執行或者以外部觸發的runnable中執行。

從分配的角度來看,一個SWC可以由多個Runnable構成,一個OS-Task可以觸發多個Runnable(同一個SWC內的Runnable可以在不同的OS-Task上執行),一個OS-Application可以管理多個OS-Task。

AUTOSAR OS-Application

wKgaomX3steAIR9EAACTN05oCzs270.jpg

AUTOSAR的OS-Application是操作系統對象的集合體,其中包括任務(Tasks),中斷服務程序 (ISRs),調度表 (Schedule Tables),計數器 (Counters)和警報 (Alarms),這些對象構成一個內聚的功能單元。

OS-Application可以分為2類:

受信任 (Trusted)的OS-Application

可以不受那些運行時的監控 (Monitoring)或者保護 (Protection)特性的限制執行。

這類應用可以不受限的訪問內存和操作系統API。受信任的應用對于執行時間上也不受限制,同時也可以在任何支持的處理器上以特權模式執行。

不受信任 (Non-trusted)的OS-Application

不可以在運行時監控及保護機制關閉的時候執行。這類應用在訪問內存、操作系統API時都有限制,同時也不允許以特權模式執行。

AUTOSAT Memory Mapping

AUTOSAR有memory mapping的特性可支持上述內存分區Memory

Partitioning,從而提供MPU需要的Non-trusted 和Trusted的內存分配區域設置。

wKgZomX3steAWHEqAABp2IxsNUY035.jpg

詳細見AUTOSAR_SWS_MemoryMapping.pdf

MPU的限制規則

內存分區Memory Partitioning的限制

wKgaomX3steAfKDnAAHadi3TSC4049.jpg

在同一個OS-Application內的對象相互訪問,提供了不受限的通信支持。

在一個OS-Application內的各個對象可以互相訪問,可以分屬于不同的SWC。

MPU工作的過程

wKgZomX3steATe9VAAS_OlEHQfQ712.jpg

操作系統要事先根據功能,和軟件架構,定義軟件分區,進行MPU region配置,

任務運行時,操作系統根據MPU的配置,檢測和阻止不正確的內存訪問,若出現了在非受信區域的內存訪問或者執行了不合法的CPU指令,這些訪問首先會被阻止,然后處理器硬件會產生一個異常 (Exception),記錄故障碼DTC。

操作系統和RTE會處理這些異常:執行內存分區的關閉 (Shutdown),或重啟分區內的所有SWC的動作。

總結語

AUTOSAR中提供的內存分區機制,通過SWC,RTE,Mem映射實現,限制訪問內存,支持內存保護。而內存分區的定義(trust/un trust)和限制規則由控制器的系統設計決定。



審核編輯:劉清

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

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136685
  • MPU
    MPU
    +關注

    關注

    0

    文章

    357

    瀏覽量

    48775
  • AUTOSAR
    +關注

    關注

    10

    文章

    360

    瀏覽量

    21553
  • SRAM芯片
    +關注

    關注

    0

    文章

    65

    瀏覽量

    12059

原文標題:AUTOSAR 內存分區和MPU關系講解

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Autosar軟件開發技術概述

    AUTOSAR是由全球汽車制造商、部件供應商及其他電子、半導體和軟件系統公司聯合建立,各成員保持開發合作伙伴關系。自2003年起,各伙伴公司攜手合作,致力于為汽車工業開發一個開放的、標準化的軟件架構
    發表于 12-26 10:34

    AUTOSAR的工作原理是什么?為什么需要AUTOSAR

    AUTOSAR的工作原理是什么?為什么需要AUTOSAR
    發表于 05-17 06:44

    AUTOSAR是什么

    一、AUTOSAR是什么AUTOSAR組織自己的介紹是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    發表于 11-10 07:47

    介紹AUTOSAR支持的四種功能安全機制

    1、AUTOSAR的四種功能安全機制雖然AUTOSAR不是一個完整的安全解決方案,但它提供了一些安全機制用于支持安全關鍵系統的開發。本文用于介紹AUTOSAR支持的四種功能安全機制:內存
    發表于 06-10 17:33

    AUTOSAR功能安全機制之內存分區與實現

    1、AUTOSAR功能安全機制之內存分區與實現  在AUTOSAR架構中,應用軟件位于RTE上方,由互連的AUTOSAR SWC組成,這些組
    發表于 09-19 15:55

    基于迭代填充的內存計算框架分區映射算法

    針對內存計算框架Spark在作業Shuffle階段一次分區產生的數據傾斜問題,提出一種內存計算框架的迭代填充分區映射算法(IFPM)。首先,分析Spark作業的執行機制,建立作業效率模
    發表于 12-05 16:32 ?0次下載
    基于迭代填充的<b class='flag-5'>內存</b>計算框架<b class='flag-5'>分區</b>映射算法

    簡單剖析虛擬內存與交換分區

    很多朋友會把虛擬內存認為就是交換分區。其實,虛擬內存并非真正存在的物理空間,它僅僅是一個虛擬的東西。
    的頭像 發表于 02-09 08:44 ?6272次閱讀

    存儲器的分區內存管理與分區存儲管理

    內存固定地劃分為若干個大小不等的分區供各個程序使用,每個分區的大小和位置都固定,系統運行期間不再重新劃分。
    發表于 05-26 10:28 ?3131次閱讀
    存儲器的<b class='flag-5'>分區內存</b>管理與<b class='flag-5'>分區</b>存儲管理

    Cortex-M內核的MPU內存保護單元

    講講Cortex-M內核的MPU內存保護單元
    的頭像 發表于 03-04 11:17 ?3673次閱讀
    Cortex-M內核的<b class='flag-5'>MPU</b><b class='flag-5'>內存</b>保護單元

    為什么要使用MPUMPU如何實現內存保護?

    如果你開發的嵌入式項目,因內存溢出,或者內存故障等一些原因,造成了重大經濟損失,或者造成了重大事故,你就能體會為什么要使用內存保護單元(MPU)了。
    的頭像 發表于 07-05 17:38 ?6707次閱讀
    為什么要使用<b class='flag-5'>MPU</b>?<b class='flag-5'>MPU</b>如何實現<b class='flag-5'>內存</b>保護?

    AUTOSAR SWC內存分區與實現

    AUTOSAR架構中,應用軟件位于RTE上方,由互連的AUTOSAR SWC組成,這些組件以原子方式封裝了應用軟件功能的各個組成部分。
    發表于 10-08 11:58 ?2585次閱讀
    <b class='flag-5'>AUTOSAR</b> SWC<b class='flag-5'>內存</b><b class='flag-5'>分區</b>與實現

    AUTOSAR架構之內存分區與實現

    AUTOSAR SWC獨立于硬件,因此可以集成到任何可用的ECU硬件上。為了便于ECU內部和內部的信息交換,AUTOSAR SWC僅通過RTE進行通信。
    發表于 11-11 11:49 ?1239次閱讀

    為什么要使用MPUMPU如何實現內存保護?

    如果你開發的嵌入式項目,因內存溢出,或者內存故障等一些原因,造成了重大經濟損失,或者造成了重大事故,你就能體會為什么要使用內存保護單元(MPU)了。
    的頭像 發表于 02-24 11:59 ?2671次閱讀

    什么是MPUMPU在哪些方面保護內存安全?

    內存保護單元(MPU)是一種硬件機制,通過只允許代碼訪問需要的內存和外設來提高嵌入式設備的安全性。
    的頭像 發表于 06-12 09:06 ?1.1w次閱讀
    什么是<b class='flag-5'>MPU</b>?<b class='flag-5'>MPU</b>在哪些方面保護<b class='flag-5'>內存</b>安全?

    AUTOSAR通信與CAN協議的關系

    AUTOSAR通信模型: AUTOSAR定義了一個分層的軟件架構,其中包括應用層、基礎軟件層和微控制器抽象層。在這些層中,通信模型是實現ECU之間通信的關鍵部分。AUTOSAR通信模型基于事件和信號
    的頭像 發表于 12-17 14:57 ?131次閱讀
    主站蜘蛛池模板: 亚洲呦女专区| 国产在线午夜| 亚洲中文无码亚洲人在线观看-| 免费乱理伦片在线观看夜| 国产高清亚洲日韩字幕一区| 18国产精品白浆在线观看免费| 偷窥欧美wc经典tv| 欧美尤物射精集锦| 久久久久综合网久久| 国产午夜精品理论片免费观看| 99免费视频观看| 伊人大香线蕉影院在线播放| 日本一区精品久久久久影院| 美女的jj| 久久久无码精品无码国产人妻丝瓜| 国产精品18久久久久久白浆.| 99在线播放| 中文字幕无码亚洲视频| 亚洲精品一二三| 香蕉尹人综合精品| 撕开美女的衣服2| 人曽交Z00Z0OA片| 妺妺窝人体色WWW偷窥女厕| 九九夜夜妹子| 果冻传媒在线观看网站| 高H各种PLAY全肉NP| xfplay 无码专区 亚洲| 18 japanese宾馆直播| 永久adc视频| 一二三四在线视频社区| 亚洲日韩精品AV中文字幕| 午夜勾魂曲| 午夜片无码区在线观看| 翁公与小莹在客厅激情| 天天看片视频免费观看| 少妇厨房愉情理9伦片视频| 日本 一二三 不卡 免费| 全文都是肉高h文| 全球真实小U女视频合集| 欧美亚洲日韩一道免费观看| 欧美日韩中文国产一区发布|