TUumlV北德功能安全论谈第十七期

小孩子得白癜风的原因 https://m-mip.39.net/nk/mipso_4537947.html
每月26日:TüV北德功能安全日

当下,功能安全与汽车开放系统架构(AUTOSAR:AutomotiveOpenSystemArchitecture)是汽车领域最热门的话题,亦是众多OEM和零部件供应商研究的热点。这两个新领域引入了众多的新概念:汽车功能安全继承工业功能安全要求,结合汽车的最佳实践,给身处其中的工程师们带来了巨大的挑战;而AUTOSAR以其面面俱到的规范文件给工程师们带来了繁杂的工作。对于未曾同时接触过功能安全或AUTOSAR相关话题的工程师而言,试图弄清楚两者之间的关系就更加困难了。

TüV北德是AUTOSAR联盟成员之一。在功能安全与AUTOSAR系列文章中,TüV北德专家郑威将全面解读二者的关系,帮助工程师们实现两个领域各自的要求。

系列文章概要

在功能安全标准(ISO-,Part6)附录D中,要求避免软件相关元素之间的干扰。软件之间的相互干扰主要集中在软件的内存使用,信息交换,时序和执行时间。针对这些要求,从AUTOSARV4.0版本的规范开始,支持了功能安全以上方面的要求,主要包括:

对内存(Memory)的要求主要由内存分区(MemoryPartition)和内存保护(MemoryProtection)两种机制来实现;

对信息交互的保护主要由E2E(End-to-EndCommunicationProtection)机制来实现;

对执行时间的保护要求一般是由wdgM(WatchdogManager)的时间监控和操作系统OS的时间保护来满足。

本文主要描述内存分区机制。

功能安全软件组件间的FFI要求

ISOPart6中对内存分区(MemoryPartition)的要求为:如果软件分区是用于实现软件组件间的FFI,则应确保以下内容:

1

共享资源使用时需利用软件分区来确保FFI,这意味着:

在软件分区内的任务不会彼此之间相互干扰;

一个软件分区不能更改其他软件分区的代码或数据,也不能控制其他分区上的非共享资源;

来自于一个分区的共享资源服务不能受另一个软件分区的影响,这包括在访问资源时对性能和调度延时等方面造成的负面影响。

2

软件分区由专用硬件特性或等效手段予以支持(适用于ASILD)

3

实现软件分区的软件应遵循相同或高于最高ASIL等级要求

基于组件化设计的嵌入式系统中,通常会同时包含不同ASIL等级的功能安全相关组件(包括非功能安全相关的组件)。低ASIL等级的软件组件有可能会以错误的方式读写高ASIL等级的软件组件。如果不同的软件组件能够在不同的内存分区中执行,则可以避免产生内存访问相关的影响。

AUTOSAR内存分区机制分类

为实现上述功能安全对分区隔离的要求,AUTOSAR提供了内存分区(MemoryPartition)机制。内存分区可将两个软件组件映射到不同的内存空间上,从而避免它们之间的相互干扰,即在一个SWC上内存空间的失效,不会引起另一个SWC的崩溃。

应用(ApplicationSoftware)内的内存分区

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

应用软件可以包含不同等级的SWC,但这些SWC不能分配到同一个OS-Application内。内存分区无法对位于同一个OS-Application内部的SWC提供保护。操作系统也只能阻止OS-Application间的非法访问,无法阻止一个有故障的SWC访问位于同一个OS-Application内的其它SWC的数据。

SWC内部的内存分区

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

AUTOSAR内存分区机制实现

软件内存分区是OS及RTE功能的扩展,是通过OS中的OS-Application来实现的。OS-Application可用作一个独立的错误控制区域,将SWC和相关资源可映射到OS-Application上。将几个SWC组成一个分组并将这些分组运行于不同的内存区间上,从而避免它们之间的相互影响。通过这种方式能够确保某一个SWC相关的内存空间错误不会影响到其他的SWC,一旦检测到OS-Application错误,应用程序可以在运行时终止或重新启动,同时也可为每一个OS-Application单独设定恢复(Recovery)策略。

AUTOSAR中提供的内存分区(MemoryPartitioning)机制通过限制访问内存及基于内存映射的硬件(如Flash,Register)等,支持内存使用的保护。内存分区意味着把不同的OS-Application部署于不同的内存区域,这样特别是代码执行时,一个分区内的代码无法修改另一个分区的内存数据,而且,内存分区还可以保护只读的区域(如代码段)。

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

作者结语

因为有了不同的ASIL等级,所以就有了不同ASIL等级之间需要隔离这个概念,需要避免低等级的任务修改高等级任务的数据,造成高等级任务使用了不可信的数据,从而影响安全功能。在软件架构设计(SoftwareArchitecturalDesign)阶段,完成静态架构和动态架构设计之后,需要做软件独立性分析,这里重点就是分析FFI等以上内容,分析结果有可能会影响不同模块ASIL等级的要求。

参考文献01

AUTOSAR



转载请注明地址:http://www.cangshue.com/cstp/8240.html
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章