AUTOSAR进阶图解==>AUTOSAR_EXP_BSWDistributionGuide
AUTOSAR BSW分布指南
目录
- 1. 简介
- 2. 多核系统中的BSW分布
- 2.1 概述
- 2.2 BSW模块的并行执行
- 2.3 用于并行BSW执行的SchM接口
- 2.5 MCAL分布
- 3. 安全系统中的BSW分布
- 3.1 安全概述
- 3.2 AUTOSAR中的安全解决方案
- 4. 未来AUTOSAR版本展望
- 5. 术语表
1. 简介
本文档是AUTOSAR系统中BSW分布的通用介绍。它包含两个部分,一部分专注于多核情况下的BSW分布,另一部分专注于安全情况下的分布。
第2章指导AUTOSAR兼容多核系统软件的开发和配置。自4.1版本起,它主要处理AUTOSAR BSW模块在多核系统上的分区分配及其交互。将BSW模块分配到不同的BSW分区可以同时提高功能安全性和性能。
第3章描述了安全情况下的BSW分布。自4.2版本起,AUTOSAR允许将BSW模块映射到不同的分区,并保护这些分区彼此之间的安全。
2. 多核系统中的BSW分布
2.1 概述
为了提高分布在多个核心上的系统性能并减少资源消耗,可能需要将BSW模块的功能集群分配到不同的核心。
BSW多核分布架构图展示了如何将不同的BSW功能模块分配到不同核心上的分区中,以及它们之间的通信关系。
2.1.1 支持的场景
可以将BSW模块的功能集群(“BSW功能集群”)分配到不同的BSW分区,用于安全或性能原因。这些功能集群被应用程序用于访问总线、非易失性存储器、I/O通道和看门狗。BSW模块的集群目前尚未标准化。除MCAL外,在不同分区中并行使用相同类型的功能集群(“复制”)通常不受支持,但通过使用主/从方法是可能的。
在任何情况下,都有以下限制:
- 一个BSW功能集群可在所有分区中提供所有接口
- 一个BSW功能集群只在一个分区中可用
- 一个BSW功能集群分布在多个分区上,可能具有特定于分区的功能子集,以允许高度并发
- 目前每个核心最多有一个QM BSW分区
2.2 BSW模块的并行执行
2.2.1 核心依赖分支
BSW模块的并行执行可以通过在运行时确定当前执行核心并相应地分支执行来实现。这种方法适用于简单情况,但对于更复杂的场景,推荐使用主/从方法。
/* 核心依赖分支示例 */
void BswFunction(void) {CoreIdType coreId = GetCoreID();switch(coreId) {case CORE_ID_0:/* 核心0特定功能 */Core0_SpecificFunction();break;case CORE_ID_1:/* 核心1特定功能 */Core1_SpecificFunction();break;default:/* 默认行为 */break;}
}
2.2.2 主/从方法
主/从架构图展示了主BSW模块和从BSW模块之间的结构和通信关系。
主/从方法是一种更结构化的BSW分布方法。它定义了以下角色:
-
Master(主):
- 集中式配置管理
- 负责全局协调
- 处理核心业务逻辑
- 通常部署在主核心上
-
Satellite(从):
- 执行Master分配的任务
- 本地处理功能
- 依赖Master进行协调
- 部署在辅助核心上
主要特点:
- 模块的主实体通常保留完整的内部数据结构
- 从实体通常只保留执行其分配任务所需的数据子集
- 主实体负责协调所有从实体的行为
- 跨分区通信机制用于主从之间的同步
对于COM
和NvM
等模块,主模块负责协调整体行为,而从模块处理特定的本地任务。系统服务如EcuM
、BswM
和SchM
也按照类似的主从结构组织。
2.2.3 使用BSW调度器进行分区间通信
BSW调度器(SchM
)可用于协调不同分区上BSW模块之间的通信。它提供了一种结构化的方式来安排跨分区通信,确保正确的时序和同步。
/* 使用SchM进行分区间通信 */
void SchM_PartitionCommunication(void) {/* 主分区代码 */if (GetPartitionId() == PARTITION_MASTER) {SchM_Enter_BSW_EXCLUSIVE_AREA_0(); /* 进入临界区 *//* 更新共享数据 */SharedData = CalculatedValue;SchM_Exit_BSW_EXCLUSIVE_AREA_0(); /* 退出临界区 *//* 通知从分区 */SchM_Trigger_Event(PARTITION_SATELLITE, EVENT_DATA_READY);}/* 从分区代码 */if (GetPartitionId() == PARTITION_SATELLITE) {SchM_Wait_Event(EVENT_DATA_READY);SchM_Enter_BSW_EXCLUSIVE_AREA_0(); /* 进入临界区 *//* 读取共享数据 */LocalCopy = SharedData;SchM_Exit_BSW_EXCLUSIVE_AREA_0(); /* 退出临界区 *//* 处理数据 */ProcessData(LocalCopy);}
}
2.2.4 使用共享缓冲区(在没有内存保护的系统中)
在没有内存保护的系统中,可以使用共享缓冲区进行BSW模块之间的通信。这提供了一种高效的数据交换方式,但需要小心处理同步问题。
2.2.5 访问硬件/驱动程序
BSW分区需要高效访问硬件抽象和驱动程序。在多核系统中,必须考虑硬件资源的分配和访问模式,以避免冲突和提高性能。
2.2.6 模块的并发安全实现
BSW模块必须以并发安全的方式实现,以支持多核系统中的并行执行。这包括适当的同步机制和资源保护策略。
2.3 用于并行BSW执行的SchM接口
调度管理器(SchM
)提供接口,支持BSW模块的并行执行。这些接口帮助协调不同核心上的BSW活动,确保正确的执行顺序和同步。
2.5 MCAL分布
2.5.1 介绍
MCAL(微控制器抽象层)分布是多核系统中BSW分布的关键方面。它处理微控制器特定功能的抽象和分配,确保不同核心能够适当访问硬件资源。
2.5.6 MCAL多核类型定义
MCAL多核类型图展示了不同类型的MCAL模块根据其多核能力的分类。
MCAL模块根据其多核能力可分为四种类型:
-
Type 1: 单核访问
- 模块被配置为仅由一个核访问
- 不支持多核并行访问
- 不需要额外同步机制
- 示例:某些
FlexRay
控制器
-
Type 2: 并发访问(Concurrent)
- 支持多核并发访问不同通道
- 外设有独立通道供不同核使用
- 不同核访问不同通道,相互独立
- 示例:多个
ADC
转换器、CAN
控制器
-
Type 3: 共享访问(Shared)
- 多核共享同一外设
- 需要软件级同步机制
- 可能包含硬件级互斥支持
- 示例:
DIO
、MCU
控制模块
-
Type 4: 复合型
- 混合Type 2和Type 3特性
- 部分通道可并发独立访问
- 部分功能需要共享访问
- 需要混合同步机制
- 示例:
GPT
模块
这种分类有助于确定适当的同步策略和资源分配方法,以支持高效的多核操作。
3. 安全系统中的BSW分布
3.1 安全概述
功能安全是汽车电子系统的关键要求。AUTOSAR支持根据ISO 26262标准实现不同的安全完整性级别(ASIL)。
AUTOSAR安全分区架构图展示了ASIL和QM分区的组织结构及其相互保护机制。
3.2 AUTOSAR中的安全解决方案
AUTOSAR提供了多种机制来支持功能安全要求:
- 分区保护:将不同ASIL级别的软件隔离在不同分区中
- 内存保护:防止未授权的内存访问
- 时间保护:确保时间关键任务不受干扰
- 服务保护:控制对关键系统服务的访问
3.2.1 必须始终为ASIL的模块
某些模块,如OS
、EcuM
和WdgM
,始终必须具有最高安全级别,因为它们提供关键的系统服务。
3.2.2 整体配置
安全系统的配置需要考虑所有组件之间的交互,确保安全属性在整个系统中保持一致。
3.2.3 跨分区边界
跨分区通信序列图展示了ASIL和QM分区之间的通信流程和保护机制。
跨分区通信是安全系统中的关键考虑因素。当不同安全级别的分区需要通信时,必须实现适当的保护机制:
-
ASIL → QM通信:
- 参数验证
- 合法性检查
- 可能的数据转换
-
QM → ASIL通信:
- 严格参数验证
- 额外安全检查
- 可能的防护操作
通信序列包括:
- 初始化阶段:设置内存保护和通信通道
- 正常通信:通过OS服务和RTE进行跨核IPC
- 错误处理:检测和处理非法参数和异常情况
/* ASIL到QM通信示例 */
Std_ReturnType ASIL_To_QM_Communication(void) {Std_ReturnType result;SafetyData_Type safeData;/* 在ASIL侧准备数据 */safeData.value = CalculateSafeValue();safeData.checksum = CalculateChecksum(&safeData.value, sizeof(safeData.value));/* 跨分区通信 */result = OS_SendCrossPartitionMessage(PARTITION_QM, &safeData, sizeof(SafetyData_Type));return result;
}/* QM到ASIL通信示例 */
Std_ReturnType QM_To_ASIL_Communication(uint32 parameter) {Std_ReturnType result;/* 参数检查(在QM侧) */if (parameter > MAX_ALLOWED_VALUE) {return E_SAFETY_ERROR;}/* 跨分区通信 */result = OS_SendCrossPartitionMessage(PARTITION_ASIL, ¶meter, sizeof(uint32));return result;
}/* ASIL侧接收处理 */
void ASIL_ReceiveHandler(void* data, uint32 size) {uint32* parameter = (uint32*)data;/* 再次验证(在ASIL侧) */if (*parameter > MAX_ALLOWED_VALUE || size != sizeof(uint32)) {ReportSafetyViolation();return;}/* 安全处理参数 */ProcessSafeParameter(*parameter);
}
3.2.4 访问外设/硬件
安全系统中的硬件访问需要特殊考虑,确保关键硬件资源不被非安全软件误用或干扰。
3.2.5 启动、关闭和休眠/唤醒
这些转换状态是安全系统中的关键点,需要特别注意确保系统始终处于安全状态。
3.2.6 错误处理
错误处理是安全系统的核心组成部分,包括错误检测、报告和安全响应策略。
3.2.7 时间保护
时间保护确保关键任务获得所需的执行时间,不受其他任务干扰。
3.2.8 结合安全和多核
结合安全和多核要求带来额外的复杂性,需要综合考虑并发性和安全隔离。
4. 未来AUTOSAR版本展望
4.1 已知限制
当前BSW分布实现存在一些限制,可能在未来版本中解决。
4.2 分布式BSW中的BSW模块间调用
改进分布式环境中BSW模块之间的通信是未来版本的重点。
4.3 标准化BSW功能集群
标准化BSW功能集群将有助于提高不同实现之间的互操作性和一致性。
5. 术语表
5.1 缩写和术语
- ASIL: Automotive Safety Integrity Level (汽车安全完整性等级)
- BSW: Basic Software (基础软件)
- MCAL: Microcontroller Abstraction Layer (微控制器抽象层)
- QM: Quality Management (质量管理)
- RTE: Runtime Environment (运行时环境)
- SchM: Scheduler Manager (调度管理器)