[CP_AUTOSAR]_分层软件架构_内容详解

目录

  • 1、软件分层内容
    • 1.1、Microcontroller Abstraction Layer
    • 1.2、ECU Abstraction Layer
      • 1.2.1、I/O HW Abstraction
      • 1.2.2、Communication Hardware Abstraction
      • 1.2.3、Memory Hardware Abstraction
      • 1.2.4、Onboard Device Abstraction
      • 1.2.5、Crypto Hardware Abstraction
    • 1.3、Services Layer
      • 1.3.1、System Services
      • 1.3.2、Memory Services
      • 1.3.3、Communication Services
      • 1.3.4、Crypto Services
    • 1.4、Complex Drivers
  • 2、多核上软件结构
    • 2.1、BSW模块的分布
    • 2.2、BSW OS BswM EcuM的分布
    • 2.3、多核的System Services
  • 3、混合的关键性系统架构内容
    • 3.1、AUTOSAR safety handling总览
    • 3.2、 BSW模块分配
  • 4、模块总览
    • 4.1、模块总览

1、软件分层内容

  在前面 章节(点击跳转)中,我们简要介绍了CP_AUTOSAR分层软件的架构,其主要分为应用层,运行时环境(RTE)以及基础软件层(BSW),软件分层架构如下图所示。而BSW作为连接硬件和上层软件的核心组件,在CP_AUTOSAR架构中起到了桥梁作用,它不仅提供了硬件抽象,还负责资源管理、错误处理、性能优化等关键功能,对于构建稳定、高效、安全的汽车电子系统至关重要,本文将详细介绍BSW模块内容。
软件分层架构

1.1、Microcontroller Abstraction Layer

  Microcontroller Abstraction Layer,即MCAL在CP_AUTOSAR架构中BSW模块扮演着关键角色,它通过提供对微控制器硬件的抽象访问,极大地简化了上层软件的开发和维护工作,同时确保了软件的性能、稳定性和可移植性。
  MCAL一些特性说明:
  1、硬件抽象:MCAL屏蔽了不同微控制器之间的硬件差异,向上层软件提供了统一的接口。这意味着上层软件可以使用相同的API来访问诸如GPIO、ADC、定时器等硬件资源,而无需关注这些资源在不同微控制器上的具体实现。
  2、初始化和配置:MCAL负责初始化微控制器的硬件资源,如配置寄存器、设置中断等。它提供了配置文件,允许用户根据具体的应用需求来配置硬件资源的初始状态。
  3、驱动程序:MCAL包含了针对微控制器特定外设的驱动程序,如CAN、LIN、FlexRay等通信接口的驱动。这些驱动程序遵循AUTOSAR标准,提供了标准化的接口,使得上层软件可以使用一致的方法来访问和控制这些外设。
  4、可配置性和可移植性:MCAL的标准化接口和配置机制使得软件具有良好的可配置性和可移植性。软件开发者可以通过调整配置参数,轻松地将软件从一种微控制器移植到另一种微控制器上,而无需对软件代码进行大量修改。
  MCAL由如下模块组构成:
  1、Microcontroller Drivers
    内部外设的驱动程序(如,看门狗,通用计时器);
    具有直接访问μC的功能(例如Core测试);
  2、Communication Drivers
    ECU板间或者与车辆之间的通信驱动(如,SPI/CAN);
    OSI层:部分的数据链路层;
  3、Memory Drivers
    片上内存设备的驱动(如,内部EEPROM和Flash),外部内存设备;
  4、I/O Drivers
    模拟量和数字量的输入输出的驱动(如,ADC,PWM,DIO);
  5、Crypto Drivers
    片上加密模块(如,SHE(Security Hardware Extension),HSM(Hardware Security Module)),SHE通常集成在微控制器中,适用于嵌入式系统的安全需求;而HSM作为独立的安全模块,适用于需要更高安全等级和更强大加密性能的场景;
  6、Wireless Communication Drivers
    无线网络系统的驱动;

  MCAL的软件架构如下图所示:
在这里插入图片描述
  SPIHandlerDriver
  以SPIHandlerDriver为例子,SPIHandlerDriver是用于控制和管理SPI(Serial Peripheral Interface)总线通信的驱动程序,可以允许多个客户端去访问SPI总线。
  SPIHandlerDriver模块应该完全负责SPI通信中用于芯片选择的专用引脚的控制,而不是把这些引脚作为通用的数字I/O引脚来对待。这是因为Chip Select信号是SPI通信中一个关键的控制信号,用于选择与微控制器通信的具体SPI外设。将这些引脚直接交给SPIHandlerDriver处理,可以确保SPI通信的正确性和效率,避免与其他I/O操作发生冲突或引起不必要的延迟。
  因此,在设计和配置AUTOSAR MCAL架构时,应当确保用于Chip Select的SPI引脚仅由SPIHandlerDriver模块控制,而不应该被DIO Driver(数字I/O驱动)所管理,以此来保证SPI通信的专一性和高效性。
  比如,下面这个架构案例:
在这里插入图片描述

1.2、ECU Abstraction Layer

1.2.1、I/O HW Abstraction

  I/O Hardware Abstraction包括了一组软件模块,它们是根据外设所处的位置(片上或者板上),ECU硬件分布(μC引脚连接和信号电平反转)抽象而来。
  比如,下面这个架构案例:
在这里插入图片描述

1.2.2、Communication Hardware Abstraction

  Communication Hardware Abstraction包括了一组软件模块,它们是根据通讯控制器位置,ECU硬件布置抽象而来。每一个通讯系统,都需要抽象出来(如CAN,LIN,FlexRay)。比如,一个ECU的微控制器有2路内部CAN通道,一个带有4个CAN控制器的板上ASIC(Application-Specific Integrated Circuit,为CAN定制的集成电路,通常有更高的性能、更低的功耗和更小的尺寸),CAN-ASIC通过SPI总线连接到总线上。
  而访问通讯驱动只能通过总线接口层,如访问CAN驱动,只能通过CAN Interface。
  比如,下面这个架构案例:
在这里插入图片描述

1.2.3、Memory Hardware Abstraction

  Memory Hardware Abstraction包括了一组软件模块,它们是根据外设内存设备的位置(片上或者板上),ECU硬件布置抽象而来。比如,片上和外部的EEPROM都通过同一套机制访问。
  内存指定的抽象/模拟模块(如EEPROM抽象)才能去访问内存驱动模块;
  比如,下面这个架构案例:
在这里插入图片描述

1.2.4、Onboard Device Abstraction

  Onboard Device Abstraction包含了那些ECU板上的设备的驱动,而这些设备不能被看作成传感器或者执行器,像内部看门狗或者外部看门狗。这些驱动能够通过MCAL来访问ECU板上的设备。
  比如,下面这个架构案例:
在这里插入图片描述

1.2.5、Crypto Hardware Abstraction

  Onboard Device Abstraction包括了一组软件模块,它们从加密原语(内外部软硬件或者基于软件)中抽象出来。比如,AES(Advanced Encryption Standard,高级加密标准)通过专用的安全硬件模块(SHE)完成的。
  比如,下面这个架构案例:
在这里插入图片描述

1.3、Services Layer

1.3.1、System Services

  System Services包括了一组软件模块,可以被所有层的模块所使用,比如说RTOS。
  比如,下面这个架构案例:
在这里插入图片描述

1.3.2、Memory Services

  Memory Services由一个模块构成,即NVRAM Manager(负责管理非易失性存储)。
  比如,下面这个架构案例:
在这里插入图片描述

1.3.3、Communication Services

  Communication Services是由一组适用于车载网络通信的软件模块(如CAN,LIN,FlexRay 和 Ethernet)构成,它们通过通讯硬件抽象层于驱动层通信。
  有如下软件模块组成:
在这里插入图片描述

1.3.4、Crypto Services

  Crypto Services有3个模块构成:
    1、Crypto Service Manager,负责管理加密工作;
    2、Key Manager,与提供密钥的一方进行交互,并管理证书链的存储和验证
    3、Intrusion Detection System Manager,入侵检测系统管理,负责处理BSW和SWC模块汇报的安全事件;

1.4、Complex Drivers

  Complex Drivers,复杂驱动层是用来实施非标准功能的模块,比如说通过中断/复杂的外设(PCP,Performance Computing Platform,高性能计算平台、TPU(Tensor Processing Unit),AI加速器)直接访问μC来实现传感器的估值或者执行器的控制等。
    Injection control,发动机喷射控制;
    Electric valve control,电磁阀控制;
    Incremental Position Detection(增量位置检测),用于测量物体移动距离和位置变化的技术,尤其适用于需要高精度定位的场合,如自动驾驶汽车中的运动控制、转向系统、传动系统等。
  比如,下面这个架构案例:
在这里插入图片描述

2、多核上软件结构

  假设ECU上有2个核,多核微控制器的分层软件架构的案例如下:
在这里插入图片描述

2.1、BSW模块的分布

  1、BSW模块可以分布在几个core 或者 partition上,所有的partition共享同一份代码;
  2、模块可以在每个分区上完全相同,如图中I/O堆栈外的DIO驱动程序所示;
  3、作为替代方案,它们可以使用相互依赖的分支来实现不同的行为。Com服务和PWM驱动使用主从通信机制来处理从机对于主机的调用。主从通信机制并非标准的,例如还可以使用共享内存或者BSW调度表来实现核间通信。
  4、箭头指示在处理服务调用的过程中,涉及了哪些组件,具体取决于分发方法和调用的来源。
在这里插入图片描述

2.2、BSW OS BswM EcuM的分布

  1、在每一个partition的Basic Software Mode Manager (BswM)运行了BSW模块;
  2、每个Core上面都只有一个EcuM模块;
  3、通过BootLoader启动的那个Core上的EcuM,是主EcuM;
在这里插入图片描述

2.3、多核的System Services

  1、下图中出现的IOC,可以提供通讯服务,可以被客户端访问,;
  2、BSW模块可以在多个核上去执行,例如图中的ComM模块;负责执行服务的核,会在运行时决定;
  3、每个核运行一个ECU状态管理;
在这里插入图片描述

3、混合的关键性系统架构内容

3.1、AUTOSAR safety handling总览

  AUTOSAR 提供了2种灵活的方法来支持安全相关的ECU:
  1、允许所有的BSW模块根据需要的ASIL等级去开发;
  2、选择一些模块根据ASIL等级去开发;带有ASIL等级的和没有ASIL等级分在不同的部分;ASIL(Automotive Safety Integrity Level,汽车安全完整性等级)是汽车行业中用于评估和分类车辆系统安全风险的标准。
    ASIL A:最低的ASIL等级,适用于那些即使发生故障也不会导致严重后果的情况。例如,某些舒适性或信息娱乐系统可能被归类为ASIL A。
    ASIL B:适用于可能导致轻微伤害或不适的情况,例如,某些辅助驾驶功能或车身控制系统。
    ASIL C:适用于可能导致严重伤害或死亡的系统,但事故发生的可能性较低。例如,防抱死制动系统(ABS)或电子稳定程序(ESP)。
    ASIL D:最高安全完整性等级,适用于可能导致严重伤害或死亡,且事故发生的可能性较高的系统。例如,动力转向、制动系统或自动驾驶系统的关键部分。
  下图为方法1的使用案例:
在这里插入图片描述

3.2、 BSW模块分配

  使用不同的BSW部分案例如下:
  1、看门狗协议栈放置在ASIL BSW部分;
  2、带有ASIL 和 non-ASIL的SWC可以用过RTE去访问WdgM;
  3、其余的BSW被放置在 non-ASIL BSW部分;
  补充:QM Application通常指的是Quality Management Application,即质量管理应用。
  下图为方法2的使用案例:
在这里插入图片描述

4、模块总览

4.1、模块总览

  下图展示AUTOSAR基础软件层模块的map:
在这里插入图片描述
   更多内容可点击返回参考 CP_AUTOSAR_总目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1473833.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Seata分布式事务启用Nacos做配置中心

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Seata分布式事务启用Nacos做配置中心 Seata分布式事务启用Nacos做配置中心 项目地址 本文作…

便携式气象站:探索自然的智慧伙伴

在探索自然奥秘、追求科学真理的道路上,气象数据始终是我们不可或缺的指引。然而,传统的气象站往往庞大而笨重,难以在偏远地区或移动环境中灵活部署。 便携式气象站,顾名思义,是一种小巧轻便、易于携带和安装的气象观测…

VitePress美化

参考资料: https://blog.csdn.net/weixin_44803753/article/details/130903396 https://blog.csdn.net/qq_30678861/category_12467776.html 站点信息修改 首页部分的修改基本都在.vitepress/config.mts,这个文件内修改。 title 站点名称 description 描述 top…

Vben:表格的表头和表格的内容对不齐,以及解决方法

文章目录 一、问题描述二、解决方法 一、问题描述 基于Vue-Vbne-admin框架进行前端开发的时候,调用表格useTable函数实现表格之后,发现表格的表头和表格的内容对不齐。如下图所示。针对这种情况,本文记录了解决方法。 调用的模块如下&#x…

【力扣 - 每日一题】3099. 哈沙德数 | 模拟 (Go/C++)

题目内容 如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x 。如果 x 是 哈沙德数 ,则返回 x 各个数位上的数字之和,否则,返回 -1 。 示例 1&#xff1…

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天,有个房间湿度很大,而我需要远程查看温湿度,所以无所谓有没有显示屏,某宝上的温湿度计都是带屏的,如果连WIFI查看温湿度操作也比较麻烦,还需要换电池,实在不能满足我的需求&#xff0…

SpringBoot新手快速入门系列教程四:创建第一个SringBoot的API

首先我们用IDEA新建一个项目,请将这些关键位置按照我的设置设置一下 接下来我将要带着你一步一步创建一个Get请求和Post请求,通过客户端请求的参数,以json格式返回该参数{“message”:"Hello"} 1,先在IDE左上角把这里改为文件模式…

笔记:SpringBoot+Vue全栈开发

笔记:SpringBootVue全栈开发 1. 开发环境热部署2. SpringBoot RestController的使用3. SpringBoot实现文件上传4. 配置拦截器5. Restful服务Swagger6. 使用MyBatis-Plus进行数据库操作7. 多表查询、条件查询及分页查询 1. 开发环境热部署 使用spring-boot-devtools…

泛微开发修炼之旅--31海康威视综合安防管理系统组织机构同步代码方案及源码

31海康威视综合安防管理系统组织机构同步代码方案及源码 一、使用场景 我们在一个项目中有一个和海康威视综合安防管理系统进行组织机构同步接口,接下来我们看下实现的源码 31海康威视综合安防管理系统组织机构同步代码方案及源码

【qt】如何获取本机的IP地址?

需要用到这个类QHostInfo和pro里面添加network模块 用这个类的静态函数forName()来获取该主机名的信息 返回的就是这个类 这个QHostInfo类就包括主机的IP地址信息 用静态函数addresses()来获取 返回的是一个QHostAddress的容器 QList<QHostAddress>addrList hostIn…

【车载开发系列】GIT安装详细教程

【车载开发系列】GIT安装详细教程 【车载开发系列】GIT安装详细教程 【车载开发系列】GIT安装详细教程一. GIT软件概念二. GIT安装步骤三. GIT安装确认三. GIT功能使用1&#xff09;Git Bash2&#xff09;Git CMD3&#xff09;Git FAQs4&#xff09;Git GUI 一. GIT软件概念 G…

[CTF]-PWN:House of Banana堆块题型综合分析

搭配largebin attack&#xff1a; 例题&#xff08;ISCC2024 heapheap)&#xff1a; 版本&#xff1a;glibc2.31 知识点&#xff1a;largebin attack、house of banana、uaf 查看保护 查看ida delete存在uaf漏洞 largebin attack手法&#xff1a; #创建4个堆块&#xff0…

Django学习第六天

启动项目命令 python manage.py runserver 取消模态框功能 js实现列表数据删除 第二种实现思路 使用jquery修改模态框标题 编辑页面拿到数据库数据显示默认数据功能实现 想要去数据库中获取数据时&#xff1a;对象/字典 三种不同的数据类型 使用Ajax传入数据实现表单编辑&…

星辰宇宙动态页面vue版,超好看的前端页面。附源码与应用教程(若依)

本代码的html版本&#xff0c;来源自“山羊の前端小窝”作者&#xff0c;我对此进行了vue版本转换以及相关应用。特此与大家一起分享~ 1、直接上效果图&#xff1a; 带文字版&#xff1a;文字呼吸式缩放。 纯净版&#xff1a; 默认展示效果&#xff1a; 缩放与旋转后&#xf…

anaconda中下载压缩包并用conda安装包

有时直接conda安装包时会出错&#xff1b;报错PackagesNotFoundError: The following packages are not available from current channels 比如 conda install -y bioconda::ucsc-gtftogenepred #直接安装报错 #直接下载压缩包安装https://blog.csdn.net/weixin_45552562/ar…

02:C语言数据类型

C语言数据类型 1、整型变量2、浮点型变量3、字符型变量4、有符号数和无符号数 1、整型变量 #include <stdio.h>int main(void) { /* int a; //定义一个整型变量aint b; //定义一个整型变量bint c; //定义一个整型变量c */ /* int a,b,c; //也可以这样定义a 25;b 6; *…

liunx文件系统,日志分析

文章目录 1.inode与block1.1 inode与block概述1.2 inode的内容1.3 文件存储1.4 inode的大小1.5 inode的特殊作用 2.硬链接与软链接2.1链接文件分类 3.恢复误删除的文件3.1 案例:恢复EXT类型的文件3.2 案例:恢复XFS类型的文件3.2.1 xfsdump使用限制 4.分析日志文件4.1日志文件4.…

Windows如何查看端口是否占用,并结束端口进程

需求与问题&#xff1a;前后端配置了跨域操作&#xff0c;但是仍然报错&#xff0c;可以考虑端口被两个程序占用&#xff0c;找不到正确端口或者后端接口书写是否规范&#xff0c;特别是利用Python Flask书写时要保证缩进是否正确&#xff01; Windows操作系统中&#xff0c;查…

Linux多进程和多线程(六)进程间通信-共享内存

多进程(六) 共享内存共享内存的创建 示例: 共享内存删除 共享内存映射 共享内存映射的创建解除共享内存映射示例:写入和读取共享内存中的数据 写入: ### 读取: 大致操作流程: 多进程(六) 共享内存 共享内存是将分配的物理空间直接映射到进程的⽤户虚拟地址空间中, 减少数据在…

ubuntu22 sshd设置

专栏总目录 一、安装sshd服务 sudo apt updatesudo apt install -y openssh-server 二、配置sshd 使用文本编辑器打开/etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config &#xff08;一&#xff09;配置sshd服务的侦听端口 建议将ssh的侦听端口改为7000以上的端口&#…