汽车功能安全之软件架构设计

谈思汽车 2024-02-02 11:35

 智能汽车安全新媒体 

01

什么是软件架构设计?

在20世纪60年代,戴克斯特拉这位上古大神就已经提出软件架构这个概念了,但软件架构真正流行却是从20世纪90年代开始的,由于在Rational和Microsoft内部的相关活动,软件架构的概念开始越来越流行了。

卡内基·梅隆大学的玛丽·肖(Mary Shaw)和戴维·加兰(David Garlan)对软件架构做了很多研究,他们在1994年的一篇文章《软件架构介绍》(An Introduction to Software Architecture)中写到:

“When systems are constructed from many components, the organization of the overall system-the software architecture-presents a new set of design problems.”

简单翻译一下:随着软件系统规模的增加,计算相关的算法和数据结构不再构成主要的设计问题;当系统由许多部分组成时,整个系统的组织,也就是所说的“软件架构”,导致了一系列新的设计问题。

这段话很好地解释了“软件架构”为何先在Rational或者Microsoft这样的大公司开始逐步流行起来。因为只有大公司开发的软件系统才具备较大规模,而只有规模较大的软件系统才会面临软件架构相关的问题,例如:

  • 系统规模庞大,内部耦合严重,开发效率低;

  • 系统耦合严重,牵一发动全身,后续修改和扩展困难;

  • 系统逻辑复杂,容易出问题,出问题后很难排查和修复。

而在功能安全标准中的定义——软件架构设计是指全部软件组件及其在层次结构中的交互。静态方面,如所有软件组件间的接口和数据路径;动态方面,如进程顺序和定时行为,都得到描述。

软件架构设计不必局限于某个微控制器或电控单元,它关系到技术安全概念和系统设计。软件架构设计并不是功能安全独有的要求,只是功能安全在原有的基础上叠加了很多安全方面的设计和考量标准,这使得软件架构设计变得更全面更安全,同时为开发既实现软件安全要求又实现非安全要求的软件架构设计,通常来说安全和非安全性要求应在同一开发过程中处理。软件架构设计提供了实施软件安全要求和管理软件开发复杂性的方法。

02

软件架构设计依赖关系

03

软件架构设计要求和建议

软件架构设计描述方法

为确保软件架构设计获取必要信息以允许后续开发活动得到正确且有效的执行,下表列出的软件架构设计的标记法,对软件架构设计进行恰当抽象层级的描述。

解释:

  • 自然语言:可以补充符号的使用,例如,一些主题更容易用自然语言表达,或者为符号中捕获的决策提供解释和理由,使抽象的设计更容易被理解。

  • 非正式标记法:通常不作为标准的标记方法,描述上比较模糊。

  • 半正式标记法:包括伪代码或使用UML、SysML、Simulink或Stateflow建模。

  • 正式标记法:包括数学或物理学表达式,通常是被证明过的严谨的表达式

软件架构设计必要的性质

软件架构设计的可验证性;(这表明软件架构设计和软件安全要求之间的双向可追溯性)

可配置软件的适用性;

软件单元设计和实现的可行性;

软件集成测试中,软件架构的可测性;

软件架构设计的可维护性。

避免高度复杂性原则

为避免因高度复杂性导致的失效,应遵循下表列出的原则设计软件架构:

1a.软件需要采用分层架构,分层架构比较清晰

1b.每个软件模块或组件都不要太大,太大了不好维护,容易出bug

1c.接口的数量不要太多,降低软件组件间的依赖关系

1d.1e.软件尽量模块化,这个颗粒度需要自己根据实际的产品把握

1f.调度合理,没啥可说的,必须要合理

1g.少使用中断,如果用中断必须定义优先级

1h.内存分区隔离保护

1i.适用于共享硬件资源以及共存情况下的共享软件资源。这种资源管理可以以软件或硬件来实现,并且包括防止对共享资源的冲突访问的安全机制和/或过程措施以及检测和处理对共享资源的冲突访问的机制。

其实原则很很简单,就是尽量避免高复杂性,高复杂性包括:

  1. 高度分支的控制或数据流;

  2. 分配给单一设计元素的需求数量过多;

  3. 一个设计元素的接口数量过多或设计元素之间的交互数量过多;

  4. 类型复杂或参数数量过多;

  5. 全局变量数量过多;

  6. 难以提供错误检测和处理的适用性和完整性的证据;

  7. 难以达到所需的测试覆盖率

  8. 只有少数专家或项目参与者才能理解。

软件架构设计描述

为确定动态行为(如任务、时间片和中断),需要考虑不同的运行状态(如开机、关机、正常运行、标定和诊断)并且定义通讯关系和所分配的系统硬件(如 CPU 和通讯通道)。

软件分区

  1. 共享资源的使用方式应确保软件分区免于干扰;

  2. 一个软件分区内的任务彼此之间不能免于干扰。

  3. 一个软件分区不能改变其它软件分区的代码或数据,也不能访问其它软件分区的非共享资源。

  4. 一个软件分区从共享资源获取的服务不能被另一个软件分区影响。这包括相关资源的性能,以及计划访问资源的使用率、延迟、抖动和持续时间。

  5. 由专用的硬件功能或等效方法来支持软件分区(该要求适用于 ASIL D)

  6. 执行软件分区的软件部分,按照分配给软件分区要求的相同 ASIL等级进行开发,或按照比分配给软件分区要求的最高 ASIL等级更高的一个ASIL等级进行开发;且一般来说操作系统提供支持软件分区。

  7. 在软件集成和测试过程中执行软件分区的验证。

软件组件

每个与安全相关的软件组件应被归类为下述之一:

  • 新开发的,需要按照功能安全标准开发。

  • 修改后使用的,需要按照功能安全标准修改。

  • 未经修改复用的。,对未经修改重用的安全相关软件组件进行鉴定。

如果在新的设计中引入了新的危害没有被现有的安全目标覆盖,应按照的变更管理流程在危害分析和风险评估中对它们进行介绍和评估。

未体现在安全目标中的新识别危害,通常是非功能性危害。如果这些非功能性危害超出了本标准的范畴,那么建议在危害分析和风险评估中用以下声明“因不属于功能安全的范畴,而未对该危害分配 ASIL”来标注它们,然而,为了参考,允许对其分配一个 ASIL 等级。

功能安全等级

应将软件安全要求分配给软件组件。因此,每个软件组件应按照分配给它的要求中最高的 ASIL等级来进行开发。根据这一分配,进一步细化软件安全要求可能是必要的。

如果嵌入式软件不得不实现不同 ASIL等级的软件组件,或实现安全相关及非安全相关的软件组件,除非软件组件符合功能安全标准中定义的兼容性准则,否则全部嵌入式软件必须按照最高 ASIL等级来处理。

如果在新的设计中引入了新的危害没有被现有的安全目标覆盖,应按照的变更管理流程在危害分析和风险评估中对它们进行介绍和评估。

未体现在安全目标中的新识别危害,通常是非功能性危害。如果这些非功能性危害超出了本标准的范畴,那么建议在危害分析和风险评估中用以下声明“因不属于功能安全的范畴,而未对该危害分配 ASIL”来标注它们,然而,为了参考,允许对其分配一个 ASIL 等级。

安全机制

  1. 当分配给软件的技术安全要求没有对软件安全机制的使用进行直接要求时,那么应在系统层面对软件安全机制的使用进行评审,以分析对系统行为的潜在影响。

  2. 输入和输出数据的范围检查;

  3. 合理性检查(例如,使用所需行为的参考模型、断言检查或比较来自不同来源的信号);

  4. 数据错误检测(例如错误检测代码和多重数据存储);

  5. 通过外部元件(例如 ASIC 或其他软件元件)监控程序执行执行看门狗功能。监控可以是逻辑监控或时间监控或两者兼而有之;

  6. 程序执行的时间监控;

  7. 设计中存在多种冗余;

  8. 在与授予或拒绝对安全相关共享资源的访问有关的软件或硬件中实现的访问冲突控制机制。

故障处理机制

  1. 静态恢复机制(例如恢复块、向后恢复、向前恢复和重复恢复);

  2. 通过优先考虑功能来实现降级,以尽量减少潜在故障对功能安全的不利影响;

  3. 设计中的同质冗余,主要侧重于控制执行类似软件的硬件中的瞬态故障或随机故障的影响(例如软件的时间冗余执行);

  4. 设计中的多样化冗余意味着每个并行路径中的软件不同,并且主要侧重于预防或控制软件中的系统故障;

  5. 数据纠错码;

  6. 在与授予或拒绝对安全相关共享资源的访问有关的软件或硬件中实施的访问权限管理。

可以在系统层面对软件安全机制(包括通用鲁棒性机制)进行审查,分析对系统行为的潜在影响以及与技术安全要求的一致性。

资源上限

应该对嵌入式软件所需资源进行上限预估:

  • 执行时间,例如函数运行的时间,操作写入的时间;

  • 存储空间,例如用于存储堆和栈的 RAM,用于存储程序和非易失数据的 FLASH;

  • 通讯资源。例如SPI、SCI、CAN通信等。

验证方法

04

常用的安全机制

各位同学还记得安全机制的定义吧,这里简单回顾一下:

  • 安全机制是检测/避免/控制失效或者减轻其有害影响的技术解决方案;

  • 安全机制是由E/E功能、元件或其他技术实现的;

  • 安全机制是能够将相关项维持在安全状态或者提醒驾驶员去控制失效的影响。

从定义中可以判断,很多安全机制是基于产品来进行定义的,譬如电机控制器的转矩安全、高压安全,DCDC的输出电压安全等等,但总有些安全机制是通用的,不按照产品区分的,今天在这里大概的整理一下,如有遗漏请各位朋友帮忙补充。

应用层常用的安全机制

应用层的安全机制通常是依赖于功能安全需求和技术安全需求,并且需要技术安全概念去明确定义的。

底层常用的安全机制

底层安全机制指的是与芯片功能安全的相关的特性,通常是由半导体厂商推荐的安全机制。

安全的设计方法

安全的设计方法也属于安全机制的一部分,这些方法可以在一定程度上避免失效或错误的发生。

05

结语

关于软件架构设计是一个很复杂的主题,这次的分享只是宏观的去介绍软件架构设计应该包括哪些内容,有哪些要求。但实际上每个安全机制都是值得去深入研究的,而且每个研究都可以是一个独立的主题,具体的安全机制的技术细节我都会在功能安全技术的专栏去详细拆解分析。

内容来源:

https://zhuanlan.zhihu.com/p/671821514

-  THE END  -


 精品活动推荐 


因文章部分文字及图片涉及到引用,如有侵权,请及时联系17316577586,我们将删除内容以保证您的权益。

谈思汽车 智能汽车安全新媒体
评论
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 66浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 95浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 37浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 70浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 86浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 83浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 65浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 70浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 51浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 41浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 106浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 102浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦