0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在AUTOSAR系统中如何将BSW模块分配到不同的分区和内核呢?

冬至子 来源:汽车电子与软件 作者:践行者 2023-11-16 17:49 次阅读

本文主要讨论在 AUTOSAR 系统中如何将 BSW 模块分配到不同的分区(Partition)和内核。主要解决了以下问题:

  • 如何修改 BSW 模块以支持多核并行执行
  • 如何配置将 BSW 模块分配到不同分区
  • MCAL(微控制器抽象层)模块的多核支持方式
  • 通信栈(Com-Stack)的分配方案
  • 加密服务(Crypto-Stack)的分配方案
  • 在安全关键系统中进行 BSW 分配的方式

相比单核系统,多核 BSW 分配需要解决的主要问题是:

  • 并行执行带来的数据一致性问题
  • 跨分区调用的内存访问权限问题
  • 如何分配核心的硬件资源访问权
  • 启动/关闭时对安全性的影响
  • 由分区引入的新的错误场景

AUTOSAR 提供了一系列机制来解决这些问题,支持高效、安全的 BSW 多核分配。

BSW 在多核系统中的分配

支持的分配场景

AUTOSAR 支持将 BSW 功能相关的模块分配到不同的分区,这既可以提升性能,也可以增强安全性。每种功能集群包含一组相关的 BSW 模块,可以包含通信、存储、IO、看门狗等等。同一类型的功能集群可以存在于多个分区中。

为支持分区分配,BSW 模块实体分为主模块和从模块,可以分配到不同分区中,主模块与从模块通过非标准化的 AUTOSAR 接口进行跨分区通信。

AUTOSAR 支持下列分配场景:

将 BSW 功能集群分配到一个分区,提高性能

将 BSW 功能集群的子集分配到多个分区,提高并发性

可以将主从模块实体分配到多个分区

性能优化场景

通过将 BSW 模块分配到多个分区和内核,可以提升系统性能,减少资源占用。主要的性能优化场景包括:

将通信相关的模块集群分配到一个内核,将 I/O 相关的模块集群分配到另一个内核。

如果硬件资源只能被一个内核访问,则将对应的 BSW 用户、服务和驱动都部署在该内核上可以提高性能。

实现多个通信集群之间的信号网关功能,需要在不同内核上同步不同的通信模块。

技术实现概览

AUTOSAR 定义了一些新概念,并扩展了部分模块,来支持多核BSW分配:

BSW 功能集群:一组功能相关的 BSW 模块,包含通信、存储、IO、看门狗等模块组。

分区间通信:使用调度器(SchM)提供的函数实现跨分区调用。

服务执行定位:通过事件到任务的映射来确定服务执行的分区。

主从模块:将模块拆分为主模块和从模块,分配到不同分区并通过非标准化接口通信,如下图所示:

image.png

要点是,模块之间的接口保持不变,分区分配引起的变化主要内藏在模块内部。

BSW 模块的并行执行

为支持多核并行执行,BSW 模块需要实现以下机制:

基于核 ID 进行执行代码,实现定制的核相关行为。

使用主从模块设计模式,主模块负责协调从模块。

使用 SchM 提供的跨分区函数实现模块间通信。

在无内存保护的系统中,允许直接跨分区调用,但需要用互斥区保护共享数据。

每个分区使用本地的驱动访问硬件资源

BSW 分区配置

为管理分区中的 BSW 模块,需要进行如下配置:

为每个 BSW 分区配置一个 OsApplication。

在 EcuC 中配置分区以及模块到分区的映射。

为每个 BSW 分区单独配置 BswM。

每个内核一个 EcuM 实例。

跨分区调用处理

当 BSW 模块分配到不同分区后,最重要的问题是如何处理跨分区调用。主要的处理手段包括:

使用激活 Task 或设置 Event 的方式,转至被调用分区执行实际调用。

调用方使用 CallTrustedFunction 进入被调用分区。

若被调用函数不访问本地数据,则可直接调用。

参数在分区间传递需要使用复制或特殊硬件机制来保证无干扰。

启动、关闭和睡眠/唤醒处理

在启动阶段,内存保护是未启用的,此时需要注意避免重要数据被覆盖。

在关闭阶段,内存保护已经启用,可以检测问题。

睡眠和唤醒处理也需要考虑安全需求。

错误处理

引入分区后,一些新的错误场景需要检测和处理:

分区内代码引发的内存错误。

分区内代码执行超时引起的定时错误。

尝试访问没有权限的硬件资源。

可以配置分区延迟上报的时间,避免过早引发系统重启。

MCAL及协议栈分配

MCAL 模块的多核支持

AUTOSAR 定义了 5 种多核支持类型,用于指明 MCAL 模块的多核处理方式:

Type I:MCAL 模块仅在单核上可用,不可全局使用,如 FLS、FEE 模块

Type II:MCAL 模块可按核执行,作用于独立的硬件元素,如 CAN、FlexRay等

Type III:可作用于全局可用的硬件元素,如 Dio Driver

Type IV:可在任何核上使用模块的接口,但仅通过一个核来访问映射元素,如 ADC、PWM、ICU 和 OCU

Type V:可在任何核上使用模块的接口,通过相应的核单独访问可映射元素

不同类型采用不同的资源分离策略,例如硬件级分离或软件级互斥保护。

各类 MCAL 模块可以分配为上述 5 种类型中的一种,以指明其多核支持方式。配合多核类型,开发者需要定义可映射的硬件元素,以及元素到内核的映射关系,作为多核支持的基础。

通信协议栈分配

通信栈(Com-Stack)可以分配到不同的分区中,以提高负载分配效率。分配方式包括:

根据网络类型,将 I-PDU 分配到不同的 MainFunction 中。

PduR 负责处理不同网络之间的分区通信。

状态、模式和网络管理由 ComM和Nm 集中处理。

加密服务分配

加密服务栈(Crypto-Stack)也可以分配到不同分区中,每个分区部署一个 MainFunction。Csm 模块与 SecOC 模块需要分配到同一分区,避免分区切换开销。

为处理新鲜度值,可以采用如下手段:

保留一个跨分区的新鲜度管理 SWC

每个分区一个新鲜度 SWC

使用 SecOC 的可配置 C 语言 API

安全关键系统中的 BSW 分配

概述

AUTOSAR 支持通过分区隔离来构建安全关键系统。最高 ASIL 级别的 BSW 模块被放入专用分区,低 ASIL 级别的模块放入公共分区,从而最小化软件开发的代码量。

AUTOSAR 安全分配的主要机制包括:

使用多个分区,进行空间隔离。

对执行实体进行监控,防止阻塞或顺序错误。

端到端保护,避免通信数据被修改。

特定模块提供额外的安全机制。

跨分区调用

分区调用需要检查是否符合 Safety 要求。可以使用 Stub 函数封装被调用的功能,处理分区切换问题。

具体来说,分区调用可以有如下情况:

QM 调用 ASIL:使用 Stub 函数进入 ASIL 分区,如下图所示。

image.png

ASIL 调用 QM:使用包装函数进入QM 分区,如下图所示。

image.png
ASIL 调用 ASIL:类似地需要 Stub 函数或包装函数。

参数传递需要使用复制或特殊硬件机制来保证安全。

启动/关闭和睡眠/唤醒

启动阶段需要注意数据隔离。

关闭时可以检测隔离问题。

睡眠/唤醒处理也需要考虑安全需求。

错误处理

分区调用可能产生新的错误场景,需要检测内存溢出、超时等问题。

可以配置分区的 Timing 保护,避免过早重启。

性能考量

分区隔离会增加调用开销。可以通过减少分区数量、优化模块映射和 calls 来获得最佳平衡。

未来的 AUTOSAR 版本

未来 AUTOSAR 可能进行如下改进:

标准化 BSW 功能集群及其接口,如下图所示。

image.png

支持更高效的分区间调用

支持用例分区提升安全性

等等

注意事项

BSW模块设计

对共享数据的访问需要加互斥保护

调用其他模块接口前需获取分区 ID,根据 ID 区分主从代码

主模块负责协调从模块,可监控和过滤请求

主从模块间使用非标准化接口通信

多核场景下接口需要支持异步调用

BSW配置

每个 BSW 分区需配置一个 OS 应用程序

需要配置 BSW 模块到分区的映射

需要配置每个分区的 BswM 实例

需要配置核心的 EcuM 实例

需要配置分区的 BSW 启动/关闭顺序

跨分区调用

使用激活任务或事件切换调用上下文

调用方使用 CallTrustedFunction 进入被调方分区

检查直接调用是否安全

小心处理参数传递的内存访问权限

安全系统相关

启动阶段内存保护尚未启动,需谨慎操作

最小化启动前执行的代码量

安全相关机制只在必要分区上实现

检查分区调用是否被符合 Safety 要求

准确配置调用的 Stub 函数或包装函数

谨慎处理睡眠唤醒的安全需求

检测由分区引入的新错误场景

平衡分区数量和性能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147662
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70257
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21138
  • BSW
    BSW
    +关注

    关注

    0

    文章

    15

    浏览量

    3478
  • 调度器
    +关注

    关注

    0

    文章

    95

    浏览量

    5161
收藏 人收藏

    评论

    相关推荐

    STM32H743如何让malloc自动分配到外部RAM

    本人试过进入main之前修改启动文件,增加SDRAM的初始化,并且栈空间指定在内部防止初始化错误,程序还是死Hardfault_Handler。还有什么办法可以malloc自动
    发表于 03-13 07:14

    DCS系统I/O分配原则及I/O分配方法

    、关位置反馈,远程控制开关,水泵故障)。这些相关的点应该分配到一个控制器。这样调试维修过程便于寻找同一个设备的所有点。另外,应该根据电缆清单对I/O分配进行调整,避免
    发表于 02-22 13:18

    【设计技巧】基于AUTOSAR的电机驱动系统报告

    AUTOSAR 代表的层次化、模块化、平台化技术则是汽车电子软件开发的重要趋势。电动汽车的三大电控系统(电机控制、电池管理、整车控制)
    发表于 07-27 08:00

    如何将分区划分为可读分区

    ,然后USB侧将它们作为单独的逻辑单元枚举。定义了Cyfxxsibx分区(2)。如果我已经增加到4,它显示了4个分区4个分区
    发表于 09-27 14:22

    为什么使用AUTOSAR

    文章目录一、总概述1 为什么使用AUTOSAR?1.1 AUTOSAR出现之前的行业现状1.2 AUTOSAR出现之后可以实现如下目标2、AUTOSAR总概述二、各层分别概述1、
    发表于 12-09 07:50

    AUTOSAR基础软件层是由哪些部分组成的

    AUTOSAR基础软件层即BSW(Basic Software)层,与应用层、运行环境层共同搭建了AUTOSAR的软件体系。三个层从上而下,层层递进,实现了从人机交互到底层硬件的联系。AUTO
    发表于 02-17 08:00

    介绍一种适配RT-Thread内核autosar操作系统

    目是基于autosar3.1的开源代码arctic core,在此基础上,完成n32g45x上的mcal驱动,适配RT-Thread内核autosar的操作
    发表于 05-19 15:40

    基于RT-Thread内核AUTOSARn32g上的实现方案

    的操作系统。目前已完成mcal的mcu驱动,autosar的osek操作系统已经能在n32g45x上正常调度,移植rtthread到arctic core,但是适配OSEK/VDX的
    发表于 07-27 14:30

    AUTOSAR功能安全机制之内存分区与实现

    1、AUTOSAR功能安全机制之内存分区与实现  AUTOSAR架构,应用软件位于RTE上方,由互连的
    发表于 09-19 15:55

    如何将ROM校准保存在分区的D-Flash

    FlexNVM 被擦除,即使是不会用于 EEPROM 备份的扇区所以我的第一个问题是:如何将我的 ROM 校准保存在我分区的 D-Flash ?因为它们被删除了。我尝试 RAM
    发表于 03-15 06:34

    如何将交换机的接口分配到vlan中

    本文档的主要内容详细介绍的是如何将交换机的接口分配到vlan中。
    发表于 11-20 08:00 5次下载
    <b class='flag-5'>如何将</b>交换机的接口<b class='flag-5'>分配到</b>vlan中

    关于AUTOSAR-DEM模块的简要介绍和几点思考

    DEM全称“Diagnostic Event Management”,该模块作为AUTOSAR架构中的BSW模块之一,对于ECU软件开发也是必需的软件
    的头像 发表于 04-15 17:12 2426次阅读

    一文入门AUTOSAR OS

    Autosar Os 在Autosar 框架中上至RTE 下至驱动,中间可以和BSW 基础模块进行交互。是整个autosar 框架下最重要的
    的头像 发表于 06-29 10:34 2636次阅读
    一文入门<b class='flag-5'>AUTOSAR</b> OS

    AUTOSAR BSW层介绍

    上一篇文章提到了基础软件层BSW包含微处理器抽象层(MCAL)、ECU抽象层、服务层以及复杂驱动,而每一层按照功能模块可以进一步划分,如下图所示。
    的头像 发表于 07-08 17:30 799次阅读
    <b class='flag-5'>AUTOSAR</b> <b class='flag-5'>BSW</b>层介绍

    AUTOSAR经典平台介绍

    了汽车电子系统的软件组件、运行时环境和通信机制,以实现模块化、可重用和可扩展的系统开发。 在AUTOSAR CP中,软件组件被分为应用软件组件(SWC)和基础软件组件(
    的头像 发表于 10-27 15:30 929次阅读
    <b class='flag-5'>AUTOSAR</b>经典平台介绍