您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
功能安全之多核软件架构及部署
 
作者:欧阳梓彤
   次浏览      
 2024-6-13
 
编辑推荐:
本文主要介绍了AUTOSAR多核操作系统、软件分区和任务调度以及软件部署和核间通信三个方面。希望对你的学习有帮助。
本文来自于微信公众号焉知汽车,由火龙果软件Linda编辑、推荐。

软件架构设计是功能安全软件开发过程中的关键阶段,作为实现软件安全需求和软件需求的载体,它定义了软件架构要素并将其细化到能够识别出软件单元的程度。

ISO26262 Part6 Clause7中要求:软件架构设计应描述软件架构要素的静态设计方面和动态设计方面。接下来,我们将通过“功能安全之软件架构设计”专题分别从功能安全软件静态架构设计、动态架构设计、多核和部署三个方面进行介绍。

本文中,我们将从AUTOSAR多核操作系统、软件分区和任务调度以及软件部署和核间通信三个方面进行介绍。关于功能安全软件静态架构设计和软件动态架构设计,可以参考功能安全之软件架构设计

01 AUTOSAR多核操作系统

在介绍AUTOSAR多核操作系统之前,我们先来简单了解下AUTOSAR操作系统的基础知识。

AUTOSAR操作系统是在OSEK操作系统的基础上进行修改和扩展的。OSEK OS的主要功能包括Task、Interrupt、Event、Resource、Alarm和System function等,AUTOSAR OS新增了Software Free Running Timer、Schedule Table、Stack Monitor、OS-Application、Multi-Core和IOC等。

AUTOSAR OS 的可裁剪类(Scalability Class)包括SC1~SC4;任务类型包括基本任务和扩展任务;一致类包括BCC1、BCC2、ECC1和ECC2;任务的抢占属性包括可抢占任务和不可抢占任务;系统调度策略包括完全可抢占型、不可抢占型和混合型三类;中断包括一类中断和二类中断;Alarm包括相对报警和绝对报警;OS-Application包括可信应用集和不可信应用集。

Task的相关特性参数和调度时序如下图所示:

图1 “VCU扭矩计算”的Task特性和调度时序

AUTOSAR Multi-Core OS是由AUTOSAR OS演化而来,其区别主要包括:

a. Multi-Core OS支持不同核的独立调度,不同核上的任务可实现并行处理;

b. Multi-Core OS需要考虑不同核之间的任务同步;

c. 内核的启动方式不同,Multi-Core一般分为主核和从核,主核由硬件启动,从核由软件启动;

d. Multi-Core OS通过Spinlock实现核间资源互斥;

e. AUTOSAR对Multi-Core提供了两种关闭方式,即单独关闭和同时关闭。

02 软件分区和任务调度

为了帮助大家更好的理解上述内容,我们继续使用功能安全之软件架构设计里面的项目案例进行讲解。

功能安全要求不同的软件组件之间要实现免干扰(Freedom From Interfrence, FFI),这就要求QM的软件组件和ASILs的软件组件以及低ASIL的软件组件和高ASIL的软件组件之间不能存在级联失效。针对由于内存所导致的级联失效问题,可以通过适当的软件分区来避免。

在AUTOSAR架构中,软件分区是通过OS-Application实现的,不同的OS-Applications会映射到不同的Partitions。OS-Appication中包含Task、ISRs、Schedule Tables、Counter和Alarm,如下图所示。

图2 OS-Application示意图

OS-Application可分为Trusted OS-Application和Non-Trusted OS-Application两类。Trusted OS-Application不仅可以在没有任何监控或保护特征禁能的情况下运行,并且能够不受限制的访问内存资源和操作系统的API。如果芯片本身支持特权模式,Trusted OS-Application允许在特权模式下运行。Non-Trusted OS-Application必须在监控或保护特征使能的情况下运行,并且访问内存资源和操作系统的API时有严格限制。即使芯片本身支持特权模式,Non-Trusted OS-Application也不允许在特权模式下运行。

此外,在使用AUTOSAR OS实现MPU保护和软件分区时存在如下限制:

a. 同一个OS-Application内部的SWC之间无法做到免干扰;

b. 内存分区不适用于Trusted OS-Application;

c. 内存分区不支持Task层级;

d. 内存分区会牺牲部分性能;

e. 基础软件不支持内存分区。

基于以上信息,可以将项目案例中的软件组件和runnables划分为4个Task,如下图所示:

图3 软件分区项目案例

AUTOSAR OS同一个内核中,Task的调度顺序是基于优先级确定的,优先级相同的情况下其调度顺序取决于Task的激活顺序。与单核处理器不同的是,多核处理器上不同的Task是并行运行的,任务的调度互不影响。AUTOSAR多核操作系统中任务的调度示意图如下图所示:

图4 AUTOSAR多核OS任务调度示意图

03 软件部署和核间通信

针对软件部署:如果MCU支持分核,在满足Safety Manual中的Assumption of Use & System Integration Requirement & Safety Mechanism的情况下,通常建议将Safety related代码部署在Lockstep Core,将Non-Safety related代码部署在Non-Lockstep Core;如果MCU不支持分核,需要基于内核中不同Task的优先级、ASIL等级、调度周期、执行时间和内存分区等方面确保QM和ASILs以及Low ASIL和High ASIL软件之间实现免干扰。项目案例的软件部署如下图所示:

图5 软件部署项目案例

核间通信主要是为了避免读写共享数据时所导致的数据侵蚀。通常情况下,核间通信不涉及Spinlock的多次调用,可以采用Minilock对共享数据进行保护;Minilock执行时间比Spinlock更短,可以减少核间通信的时间。AUTOSAR操作系统提供了Inter OS Application Communication(IOC)的通信方式,IOC包括IOC without notification和IOC with notification两种通信方式。

不带通知的1:1 Sender/Receiver IOC通信如下图所示:

图6 不带通知的IOC通信

当一个核中的SWC将数据发送给另一个核中的SWC时,接收端的runnable被周期性调用并从RTE接收数据,发送端的代码为:

{

Rte_Send_<port>_<item> (…, <data>)

}

该函数调用IOC发送函数:

{

IocSend_<Id> (<data>)

}

IOC将该数据写入共享内存区域的缓存中,接收端的runnable被周期性调用,代码如下:

{

Rte_Receive_<port>_<item> (…, <data>)

}

该函数会调用IOC接收函数:

{

IocReceive_<Id> (<data>)

}

 

不带通知的IOC通信方式适用于以下情况:

a. Sender/Receiver 通信;

b. 队列或非队列通信;

c. 1:1通信。

带通知的N:1 Client/Server IOC通信如下图所示:

图7 带通知的IOC通信

当一个核中的SWC请求另一个核中SWC的服务时,接收端的一个runnable被激活。RTE将Client/Server调用转换为Sender/Receiver,发送端的代码为:

{

Rte_Call_<port>_<op> (…, <data>)

}

该函数调用IOC发送函数:

{

IocSend_<Id> (<data>)

}

IOC将该数据写入内部队列缓存后,Rte_Call()函数使用OS调用激活接收核中的服务Task来通知接收端。

带通知的IOC通信方式适用于以下情况:

a. 带通知的Sender/Receiver 通信;

b. Client/Server通信,队列或非队列通信;

c. N:1通信或接收端非周期性调用的1:1通信。

 
   
次浏览       
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
SysML和EA系统设计与建模 7-26[特惠]
Python、数据分析与机器学习 8-23[特惠]
软件架构设计方法、案例与实践 8-23[特惠]
嵌入式软件架构设计 8-22[线上]
Linux内核编程及设备驱动 7-25[北京]
 
 
最新文章
中央计算的软件定义汽车架构设计方案解析
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
智能汽车车用基础软件的内核和中间件
最新课程
Auto SAR原理与实践
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发(域控模式)
人工智能助力汽车行业升级
基于UML和EA进行系统分析设计
SysML和EA进行系统设计建模
更多...   
成功案例
奇瑞商用车 购买建模工具EA完全版
航空发动机研究院 购买建模工具EA完全版
联创汽车 购买建模工具EA完全版
江淮汽车 购买建模工具EA
更多...