1143|3

97

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

汽车功能安全之内存保护机制总结 [复制链接]

前言

功能安全(Functional Safety)是一项系统特性,由于基于功能安全的设计会影响到系统设计,所以从系统开发初始阶段就要进行考虑。

由于软件的复杂度会影响 到功能安全的设计,所以在AUTOSAR规范中,包含了部分与功能安全相关的需求,这些新技术和概念能够帮助降低功能安全相关组件的复杂度。

不过需要强调的是,AUTOSAR虽然通过提供安全措施和机制来支持基于功能安全产品开发,但这些独立的安全措施(Safety Measure)并不能形成整体的安全解决方案。

在功能安全标准(ISO 26262 2018, Part 6)中,提到了要避免软件相关元素之间干扰(Freedom from Interference between software elements)。

软件之间的相互干扰主要集中在软件的执行时间(Timing),软件间的死锁(Dead locks,Live locks),内存使用(Memory),信息交换(Information Exchange)。

本文主要介绍一下AUTOSAR规范中对于软件内存分区的保护措施。

1 失效模式

基于组件化设计的嵌入式系统中,通常会同时包含不同ASIL等级的功能安全相关组件(包括非功能安全相关的组件)。

低ASIL等级的软件组件有可能会以错误的方式读写高ASIL等级的软件组件。如果不同的软件组件能够在不同的内存分区中执行,则可以避免产生内存访问相关的影响。

这篇文章中介绍了AUTOSAR OS和RTE的部分功能,这些功能用于支持多个SWC在不同的内存分区中执行,用于避免内存异常访问。

根据ISO 26262 Part 6,内存相关的异常访问分类如下:

内容的破坏(Corruption of Contents)

读写其它组件的分配管理的内存空间

AUTOSAR中提供的内存分区(Memory Partitioning)机制通过限制访问内存及基于内存映射的硬件(如Flash,Register)等,支持内存使用的保护。

内存分区意味着把不同的OS-Application部署于不同的内存区域,这样,特别是代码执行时,一个分区内的代码无法修改另一个分区的内存数据。而且,内存分区还可以保护只读的区域(如代码段)。

AUTOSAR的内存分区和用户/特权机制相关的特性,可以支持软件组件之间的FFI,如SWC内存相关的错误不会扩散到其它的软件组件,同时,处于用户态的SWC也无法修改或重新配置CPU内部的寄存器。

 

2 内存分区机制介绍

内存分区是AUTOSAR OS和RTE的一个扩展机制,这在AUTOSAR相关的规范中有描述。在这篇文章中,会以在AUTOSAR方法论中提到的Runnable,Tasks,SWC和OS-Application之间上下文关系的形式介绍这个扩展机制。

2.1 应用程序(Application Software

在AUTOSAR架构中,应用程序位于RTE之上的,并且包含一组内部存在信息交换的软件组件(SWC),这些软件组件实现一系列的原子功能(不可拆分),组合在一起实现应用程序的功能。

AUTOSAR的SWC与硬件无关,所以这些SWC可以集成在任何ECU的硬件上。为了实现ECU内(Inter-)和ECU间(Intra-)通信,AUTOSAR SWC仅通过RTE进行通信(Exclusively)。

AUTOSAR SWC包含一系列的功能实现和变量定义,通过这些提供内部的功能实现。这些功能实现和变量定义对于外部是不可见的,仅能通过公布的RTE接口使用。

AUTOSAR SWC也提供了函数接口,但只能在运行时调用。这些C语言的函数在AUTOSAR中被叫做Runnable。Runnable不能主动执行,而是通过配置的形式,分配到某个位于操作系统中的可执行的实体上,比如,作为一个OS-Task调用的代码段。

Runnable以周期性执行或者以外部触发的形式在OS-Task的上下文中执行。从分配的角度来看,一个SWC可以由多个Runnable构成,一个OS-Task可以触发多个Runnable(同一个SWC内的Runnable可以在不同的OS-Task上执行),一个OS-Application可以管理多个OS-Task,而OS-Application和内存分区(Partition)之间,是一对一的关系。

2.2 OS-Application

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

操作系统内的在同一个OS-Application内的对象,可以分属于不同的SWC。RTE实现了一段内存空间,为这些在同一个OS-Application内的对象相互访问,提供了不受限的通信支持。

OS-Application可以分为2类:

受信任 (Trusted)的OS-Application可以不受那些运行时的监控 (Monitoring)或者保护 (Protection)特性的限制执行。这类应用可以不受限的访问内存和操作系统API。受信任的应用对于执行时间上也不受限制,同时也可以在任何支持的处理器上以特权模式执行。

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

2.3 通信与代码共享

一个OS-Application可以包含多个SWC及相关的Runnable。Runnable只允许直接访问SWC内部的变量和函数。内部的函数调用及变量访问对于其它SWC来说是不可见的,主要原因是这些函数及变量在SWC相关的头文件中根本就没有声明。

这也说明,AUTOSAR标准并不期望从其它的SWC中直接通过变量访问及直接的执行另一个SWC内部的代码。AUTOSAR中,SWC之间,仅允许基于RTE进行组件间的通信。

2.4 应用 (Application Software)内的内存分区

基于AUTOSAR开发的ECU内部可以包含功能安全相关与功能安全无关的SWC。ISO 26262要求不同的ASIL等级的软件组件之间要避免相互干扰 (Freedom from interference)。

AUTOSAR操作系统通过将OS-Application放置于独立的内存区域内,实现避免内存相关的干扰。这个机制叫做内存分区 (Memory Partitioning)。一个OS-Application不能直接修改另一个OS-Application的内部数据,从而实现相互之间的保护。

应用软件可以包含不同等级的SWC,但这些SWC不能分配到同一个OS-Application内。内存分区无法对位于同一个OS-Application内部的SWC提供保护。

操作系统也只能阻止OS-Application间的非法访问,无法阻止一个有故障的SWC访问位于同一个OS-Application内的其它SWC的数据。

2.5 SWC内部的内存分区

可能会有一些SWC有在内部包含不同ASIL等级的Runnable的需求,这就要求避免相互干扰的机制要在这些SWC之间进行。但在Runnable的设计上来说,是属于SWC的属性,但一个SWC只能分配到一个OS-Application上,所以基于OS-Application的内存分区机制无法保障一个SWC内部的不同等级的Runnable之间相互干扰。

这个特性就需要AUTOSAR操作系统支持Task之间的内存分区,因为Runnable是在某个Task上调用执行的。(目前还不确定是否有AUTOSAR OS支持这个特性)

2.6 实现内存分区

大量的系统及软件级的TSC (Technical Safety Concept)可以使用内存分区机制来实现。

通常BSW位于受信任 (Trusted)区域,部分SWC可以和BSW一样在受信任区域,以管理 (Supervisor)权限运行。其它的内存区域可以划分为多个内存分区,每个内存分区内可以有一个或多个SWC以用户态运行。

现代的安全相关的微处理器通常都在硬件级别上支持内存分区机制,这主要是通过内存保护单元 (Memory Protection Unit, MPU)来实现的。

在一个典型的MPU实现中,不受信的应用也可以配置为访问多个内存区域。访问的方式可以是读、写、执行及这些的组件。针对MPU的配置要用管理权限。

MPU的保护可以针对内存、Flash及外设进行。另外,使用内存分区的可能场景有如下几个:

SWC位于同一个内存分区中

  • 位于同一个内存分区中的SWC可以相互访问内部数据,进而可以造成内部数据破坏;

  •  标准定义SWC不能直接访问外设,因为处理器的架构对于SWC来说不透明。如果强行使用SWC访问外设,这会导致系统严重的安全风险;

 

SWC位于不同的内存分区中

  •  位于不同内存分区的的SWC不可以相互访问内部数据,也就不能破坏其它SWC的数据了;

  • 标准定义SWC不能直接访问外设,因为处理器的架构对于SWC来说不透明。如果强行使用SWC访问外设,这会导致系统严重的安全风险;

     

MCAL驱动程序

  •  MCAL驱动是一系列函数集合,如读、写及初始化等。这类接口必须在BSW或CDD中执行;

  • MCAL驱动可以访问外设空间,根据不同的处理器实现,可能会需要管理权限;

     

3 检测与响应

内存分区的安全机制通过限制访问内存及支持内存映射的外设的方法来实现保护。一块分区内的代码,无法修改另一个分区的数据。

内存分区也支持只读方式的访问,这个可以用来保护那些基于内存映射访问的硬件。SWC也可以被限定为禁止访问CPU的寄存器,如重新配置等。

在支持MPU或MMU的硬件上使用内存分区机制,操作系统要事先进行合理的配置来检测和阻止不正确的内存访问。

一旦出现了在非受信区域的内存访问或者执行了不合法的CPU指令,这些访问首先会被阻止,然后处理器硬件会产生一个异常 (Exception)。操作系统和RTE会处理这些异常,执行内存分区的关闭 (Shutdown),或重启分区内的所有SWC的动作。

4 限制条件

如果分区内的SWC都设置为相同的ASIL等级,则不需要按照ISO 26262中要求的FFI来设计安全机制。同时,对于OS-Application,可以包含多个SWC,但内存分区的关闭或重启机制是针对整个分区进行,所以即使状态正常的SWC也会受到影响

内存分区机制不适用于受信任的OS-Application,受信区域中的代码执行不会被保护机制监控。Task级的内存保护不是AUTOSAR的强制标准,所以OS-Application内部的FFI可能

内存分区会带来性能上的影响。由于增加了内存分区,会导致上下文的切换增多。

BSW的软件不支持内存分区,所以才会有Safe BSW的方案。

此帖出自汽车电子论坛

最新回复

不错的技术文章!  详情 回复 发表于 2024-3-17 13:43
点赞 关注

回复
举报

364

帖子

0

TA的资源

版主

沙发
 

学习了

此帖出自汽车电子论坛
 
 

回复

1582

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

谢谢分享,先赞再看

此帖出自汽车电子论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 

不错的技术文章!


此帖出自汽车电子论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
中国IPTV产业标准研讨会现场全景及实录

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 新浪科技讯 2005年11月24日,由中国计算机用户协会多媒体应用专业委员会主 ...

LPC1343学习笔记(连载中)--6月21日新增第十二篇

有幸拿到了EEWORLD论坛的LPC1343评估板,实在是一件意外而激励人心的事情。为感谢EEWORLD和NXP,特将学习过程与大家共同分享。也 ...

[DIY]再造二十四小时的感动【古典版II】 自制QS18-12辉光电子钟 附百图

前几天刚刚完成QS30-1管的辉光钟,有不少朋友在向我讨教如何制作。说实话,就个人而言,我更喜欢QS18-12辉光管。 QS30-1的辉光 ...

搭建开发环境和使用UBOOT【下】

本帖最后由 sjtitr 于 2014-7-24 09:26 编辑 搭建开发环境和使用UBOOT【下】 HELPER2416开发板助学计划 接下来是关于UBoo ...

4418之Android Eclipse导入应用程序在开发板上调试

由于在开发板上LEDtest 应用已经默认安装了,所以在开发板上调试已安装应用的时候,需要做一下处理才能够正常连接。 基于迅为iT ...

基于运算放大器和模拟集成电路的电路设计中3.2的德玻积分器传递函数怎样推导

505015麻烦各位高手,帮我推导一下这个积分电路的传递函数的,我推导了半天也不到极点p=-(1-k)/RC的传递函数?

CC2640R2F工程之间相互转换

在使用CC2640R2F的时候发现一个现象,就是在低版本的SDK中有一些工程,到了高版本中SDK就没有了,比如: simplelink_cc2640r2 ...

【拓普微智能显示模块】四:串口交互以及曲线、绘图板、动画控件的应用

本帖最后由 数码小叶 于 2021-11-21 12:00 编辑 上一篇已经使用SGTools产生了一个简单的界面,所以对于SGTools来说,简单使用 ...

先楫官方工程师干货:HPM6000系列PWM波尽在掌握(下)

概述 在进行电机类、电源类应用开发时,如何使用PWM定时器模块灵活、高效的实现所需 PWM波形的输出,是众多开发者关注的问题 ...

【先楫HPM6750EVK2测评】体验网络功能

【开发工具】RT-Thread Studio 【体验步骤】 1、根据【先楫HPM6750EVK2测评】体验RTT开发 - 国产芯片交流 - 电子工程世界- ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表