AUTOSAR内存分区和MPU关系讲解

谈思实验室 2024-09-16 17:54

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

01

MPU的功能

02

MPU功能简述

MPU保护与当前执行的代码“不相关“的所有数据。

“不相关”是相关内存地址的权限受限制,或者是程序访问内存地址的范围于其无关,阻止关键数据被破坏,使嵌入式系统更加健壮与安全。  

03

MPU作用主要有两个方面

为两个保护,一个检测。

1)MPU的保护作用

指访问区域的保护和读写区域的保护。

① 访问区域的保护。

可以将内存区域划为特权区域和普通区域,特权区域只有特权用户才能访问,普通用户被禁止访问,以此来保护特定的数据。

常见的应用场景:

1> 对带系统的来说,可以设置数据,以防止用户应用程序破坏操作系统使用过程中的数据。

2> 隔离任务,以防止一个任务访问其他任务的数据。

3> 将SRAM或者RAM空间定义为不可执行,防止代码注入。

② 读写区域的保护。

设置指定的区域为只读,可以有效的防止比较关键的数据被错误修改。

2)MPU的检测功能

指可以检测堆和栈的溢出情况及数组有没有越界。

04

功能安全中对内存分区MPU的相关描述

汽车ECU软件是高度模块化的嵌入式软件,其功能实现是可以为非功能安全,和功能安全的SWC组合,它们分别拥有不同的ASIL安全等级。

根据ISO26262,如果嵌入式软件包含不同ASIL等级的SWC,要么整个软件工程都需要基于最高安全等级的要求进行开发,需要保证拥有更高安全等级的SWC的操作不会受到其他SWC的干扰,也即需要做到FFI(Freedom from interference)的设计。

基于更低安全等级要求开发的SWC,可能会出现错误地访问到更高安全等级SWC的内存区域,产生干扰。

为此,SWC需要运行在不同的内存区域,或者不同的内存分区,来防止类似的内存访问违例。

ISO26262中,以下内存相关的故障影响被视为SWC之间产生干扰的原因:

  • 内容损坏

  • 读写区域属于另一个SWC

  • 数据不一致

  • 栈溢出或栈下溢

要满足上述定义,是MPU内存保护的目标,也可以通过限制对于内存以及内存对应的硬件的访问。

这里的内存分区意味着:

各OS Application运行在相互保护(不干涉)的内存区域,在某一个分区上运行的代码,无法修改另一个分区的内存。

内存分区也可以保护只读内存段(例如代码执行)以及内存对应的硬件。

内存分区和用户/特权模式可以保证SWC之前互不干扰——即使某一个SWC出现了内存相关的故障,也不会对其他软件模块有影响。

如果一个SWC运行在用户模式,那么它对CPU资源/指令的访问也是受限制的。

05

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

即内存保护单元(MPU),来支持内存分区。

若想深入理解上述的MPU描述,得先来看下,内存分区和MPU的基础知识。

06

计算机程序执行的基础简介

内存

计算机的主要作用是对输入数据进行处理和运算后输出,CPU处理器主要完成数据的处理运算,但输入输出数据包括处理过程中的临时数据需要有一个空间去存放,这个临时存放数据供处理器和外设使用的地方就是内存。

如上图,为了提高效率把存放程序(也即控制指令)和数据(也即操作数)的空间分开,同时把访问指令与访问数据的总线分开,使取指令和执行指令能够重叠(处理器的流水线)。

内存寻址

处理器与内存之间有地址总线用于寻址,有数据总线用于传输数据,当然也有相应的控制线来读写操作。

存储器地址的映射简介

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,如图所示,给存储器分配地址的过程称为存储器映射。

如果内核整体可以寻址的 0 到 2^32 -1 共计 4GB 的寻址空间。功能部件RAM, Flash,外设等共同排列在一个4GB的地址空间内。

地址分配

程序C语言通过这些地址可以访 问 RAM、Flash、外设等,进行读写操作。

C编译的程序占用的内存分为以下几个部分:

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

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

程序代码区(.text)—存放函数体的二进制代码。

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。MPU也支持堆栈溢出检测,简单如下图。

代码例子

int a = 0//全局初始化区int a = 0; //全局初始化区char *p1; //全局未初始化区main() {int b; //栈char s[] = "abc"; //栈char *p2; //栈char *p3 = "123456"; //123456\0在常量区,p3在栈上。static int c = 0; //全局(静态)初始化区    p1 = (char *)malloc(10);    p2 = (char *)malloc(20);//分配得来得10和20字节的区域就在堆区。strcpy(p1, "123456"); //123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。}

07

MPU内存保护单元

Memory Protection Unit

上文描述的内存区,堆栈区,数据区,代码区都可以被MPU保护,安全相关的微处理器通常都在硬件级别上支持内存分区保护,MPU主要是通过内存映射的地址范围限制,和监控非受信区域的内存访问来实现的。

MPU可以保护的区域为内存映射区memory map,可以设置不同存储区域的存储器访问特性(如只支持特权访问或全访问)和存储器属性(如可缓存、可缓冲、可共享),对存储器(主要是内存和外设)提供保护,保护可执行程序的(data、code和stack)区域。

08

MPU 的Region区域

是可编程保护区域(需要控制器硬件支持),如下图

MPU的配置是通过设置多个MPU寄存器,定义多个MPU region,每个MPU region的可配置选项包括: 被保护的起始地址,大小size,访问权限,所属硬件MPU分类,Region Owner 以及有效ID等。

MPU在执行其功能时,也是以“region区域”为单位的。

通过上述的MPU配置,各个软件模块将具备对不同memory区域的不同访问权限。

如图,一个region上述配置的一段连续的地址,它们的位置和范围都要满足一些限制。

MPU是可以管理所有的存储空间(如图 4G),可以划分不同的Region内存区域,并为每个Region设置访问权限与规则,不同的Region允许相互重叠,重叠区域受多重访问规则的限制。

09

Link命令对于内存的设置

编译器关联的,可参考下面TI的解释

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

10

特权模式与用户模式

是内核的执行模式。

当代码运行在特权模式下,代码拥有所有的访问许可;

而代码运行在用户模式,则访问权限受限制。

也是MPU中所定义的内存访问规则。

11

AUTOSAR中的定义

内存分区的定义

如上图,一般来说

  • BSW模块运行在授信模式/监控者模式内存分区当中。

  • 部分SWC分组并放置到非授信/用户模式内存分区当中。

  • 个别SWC也运行在授信/监控者模式内存分区当中。

项目中可以有多个非授信/用户分区,每个分区都可以包含一个或多个SWC。

上图中,分区是以应用软件OS-Application为对象定义的,OS-Application和内存分区(Partition)之间,是一对一的关系。

12

如何理解OS-Application?

如下图中,应用程序内的 AUTOSAR SWC

在AUTOSAR架构中,应用程序位于RTE之上的,基于应用功能逻辑定义,内部包含一组存在信息交换的软件组件(SWC)。

软件组件SWC是实现一系列的原子功能(最小单元不可拆分),SWC包含一系列的功能实现和变量定义,这些功能实现和变量定义对于外部是不可见的,仅能通过公布的RTE接口使用。

SWC以周期性执行或者以外部触发的runnable中执行。

从分配的角度来看,一个SWC可以由多个Runnable构成,一个OS-Task可以触发多个Runnable(同一个SWC内的Runnable可以在不同的OS-Task上执行),一个OS-Application可以管理多个OS-Task。

13

AUTOSAR OS-Application

AUTOSAR的OS-Application是操作系统对象的集合体,其中包括任务 (Tasks),中断服务程序 (ISRs),调度表 (Schedule Tables),计数器 (Counters)和警报 (Alarms),这些对象构成一个内聚的功能单元。

OS-Application可以分为2类:

受信任 (Trusted)的OS-Application

可以不受那些运行时的监控 (Monitoring)或者保护 (Protection)特性的限制执行。

这类应用可以不受限的访问内存和操作系统API。受信任的应用对于执行时间上也不受限制,同时也可以在任何支持的处理器上以特权模式执行。

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

不可以在运行时监控及保护机制关闭的时候执行。这类应用在访问内存、操作系统API时都有限制,同时也不允许以特权模式执行。

14

AUTOSAT Memory Mapping

AUTOSAR有memory mapping的特性可支持上述内存分区Memory Partitioning,从而提供MPU需要的Non-trusted 和Trusted的内存分配区域设置。

15

MPU的限制规则

内存分区Memory Partitioning的限制

在同一个OS-Application内的对象相互访问,提供了不受限的通信支持。

在一个OS-Application内的各个对象可以互相访问,可以分属于不同的SWC。

16

MPU工作的过程

操作系统要事先根据功能,和软件架构,定义软件分区,进行MPU region配置

任务运行时,操作系统根据MPU的配置,检测和阻止不正确的内存访问,若出现了在非受信区域的内存访问或者执行了不合法的CPU指令,这些访问首先会被阻止,然后处理器硬件会产生一个异常 (Exception),记录故障码DTC。

操作系统和RTE会处理这些异常:执行内存分区的关闭 (Shutdown),或重启分区内的所有SWC的动作。

17

总结语

AUTOSAR中提供的内存分区机制,通过SWC,RTE,Mem映射实现,限制访问内存,支持内存保护。而内存分区的定义(trust/un trust)和限制规则由控制器的系统设计决定。

来源:AutomotiveSoftwareEngineer

 end 

 专业社群 

部分入群专家来自:

新势力车企:

特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯......

外资传统主流车企代表:

大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚......

内资传统主流车企:

吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用......

全球领先一级供应商:

博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、......

二级供应商(500+以上):

Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学......

人员占比


公司类型占比


更多文章

关于涉嫌仿冒AutoSec会议品牌的律师声明

一文带你了解智能汽车车载网络通信安全架构

网络安全:TARA方法、工具与案例

汽车数据安全合规重点分析

浅析汽车芯片信息安全之安全启动

域集中式架构的汽车车载通信安全方案探究

系统安全架构之车辆网络安全架构

车联网中的隐私保护问题

智能网联汽车网络安全技术研究

AUTOSAR 信息安全框架和关键技术分析

AUTOSAR 信息安全机制有哪些?

信息安全的底层机制

汽车网络安全

Autosar硬件安全模块HSM的使用

首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议

谈思实验室 深入专注智能汽车网络安全与数据安全技术,专属汽车网络安全圈的头部学习交流平台和社区。平台定期会通过线上线下等形式进行一手干货内容输出,并依托丰富产业及专家资源,深化上下游供需对接,逐步壮大我国汽车安全文化及产业生态圈。
评论
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 89浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 171浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 97浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 75浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 85浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 193浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 111浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 71浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 79浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 48浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 181浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 122浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 166浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 94浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦