[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_总目录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装遇到问题:curl: (7) Failed to connect to download.docker.com port 443: 拒绝连接

问题描述 首先,完全按照Docker官方文档进行安装: Install Docker Engine on Ubuntu | Docker Docs 在第1步:Set up Dockers apt repository,执行如下指令: sudo curl -fsSL https://download.docker.com/linux/ubu…

超赞的8款生活APP推荐!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/每天都会有几十个应用程序发布,一款用得好的应用程序可以极大地丰富您的生活。对于那些不知道哪个应用程序适合您以及您需要哪个应用程…

将excel表格转换为element table(下)

在‘将excel表格转换为element table(上)’我们把excel 转换后通过数据重构绑定到了element table上,现在要做的就是根据源文件进行行列进行合并操作 先看看最终处理的结果 这里在一步步分析实现步骤。 先分析一下合并的逻辑 大致思路理理如上。 思路有了接下来…

微信小程序的农产品商城-计算机毕业设计源码46732

摘 要 随着社会经济的发展和人们消费观念的升级,农产品电商行业逐渐壮大。但传统的农产品销售模式存在信息不透明、中间环节复杂等问题,而微信小程序作为一种便捷的移动应用平台,为农产品商城的建设提供了新的可能性。通过微信小程序的设计与…

上位机图像处理和嵌入式模块部署(mcu项目1:用户手册)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 一个完整的产品,除了上位机软件、固件、硬件、包装之外,一般还需要一个用户手册。好的用户手册应该能够兼顾到大多数人的认…

开发个人Go-ChatGPT--1 项目介绍

开发个人Go-ChatGPT--1 项目介绍 开发个人Go-ChatGPT--1 项目介绍知识点大纲文章目录项目地址 开发个人Go-ChatGPT–1 项目介绍 本文将以一个使用Ollama部署的ChatGPT为背景,主要还是介绍和学习使用 go-zero 框架,开发个人Go-ChatGPT的服务器后端&#x…

电脑为什么会提示丢失msvcp140.dll?怎么修复msvcp140.dll文件会靠谱点

电脑为什么会提示丢失msvcp140.dll?其实只要你的msvcp140.dll文件一损坏,然而你的电脑程序需要运用到这个msvcp140.dll文件的时候,就回提示你丢失了msvcp140.dll文件!因为没有这个文件,你的很多程序都用不了的。今天我…

Redis基础教程(十三):Redis lua脚本

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

[240706] 史蒂夫·乔布斯近40年前就预言了苹果智能 | Globalping 用于网络诊断和性能测试的命令行工具

目录 史蒂夫.乔布斯近40年前就预言了苹果智能Globalping 用于网络诊断和性能测试的命令行工具功能1. Ping2. Traceroute3. DNS 查询4. HTTP 请求 使用场景1. 网络性能监测2. 故障排除3. 网站性能优化4. 服务可用性监控 优势1. [全球覆盖](https://www.jsdelivr.com/network)2. …

[Vite]Vite插件生命周期了解

[Vite]Vite插件生命周期了解 Chunk和Bundle的概念 Chunk: 在 Vite 中,chunk 通常指的是应用程序中的一个代码片段,它是通过 Rollup 或其他打包工具在构建过程中生成的。每个 chunk 通常包含应用程序的一部分逻辑,可能是一个路由视…

5个实用的文章生成器,高效输出优质文章

在自媒体时代,优质内容的持续输出是吸引读者、提升影响力的关键。然而,对于许多自媒体创作者来说,频繁的创作难免会遭遇灵感枯竭、创作不出文章的困扰。此时,文章生成器便成为了得力的助手。文章生成器的优势能够快速自动生成高质…

C++怎么解决不支持字符串枚举?

首先,有两种方法:使用命名空间和字符串常量与使用 enum class 和辅助函数。 表格直观展示 特性使用命名空间和字符串常量使用 enum class 和辅助函数类型安全性低 - 编译器无法检查字符串有效性,运行时发现错误高 - 编译期类型检查&#xf…

SCI论文发表:构建清晰论文框架的10个原则 (附思维导图,建议收藏)

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 论文框架是什么?对我们完成一篇论文有哪些作用? 之前娜姐分享过一篇深圳湾实验室周耀旗教授关于论文写作的文章,他提出的第一个重要原则就…

Linux笔记之二

Linux笔记之二 一、文件属性学习二、软链接和硬链接1.软链接2.硬链接 三、Vim编辑器四、账号管理总结 一、文件属性学习 Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同…

前后端分离系统

前后端分离是一种现代软件架构模式,特别适用于Web应用开发,它强调将用户界面(前端)与服务器端应用逻辑(后端)相分离。两者通过API接口进行数据交互。这种架构模式的主要优势在于提高开发效率、维护性和可扩…

【LInux】从动态库的加载深入理解页表机制

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Xilinx FPGA:vivado关于同步fifo的两个小实验

一、实验一:在同步fifo里写一个读一个(写入是8个位宽,读出是16个位宽) 程序: timescale 1ns / 1ps //要求写一个读一个 //读写时钟一致,写是8个位宽,读是16个位宽 module sync_fifo_test(inpu…

Nuxt框架中内置组件详解及使用指南(一)

title: Nuxt框架中内置组件详解及使用指南(一) date: 2024/7/6 updated: 2024/7/6 author: cmdragon excerpt: 本文详细介绍了Nuxt框架中的两个内置组件和的使用方法与功能。确保包裹的内容仅在客户端渲染,适用于处理浏览器特定功能或异步…

ubuntu 22 安装 lua 环境 编译lua cjson 模块

在 windows 下使用 cygwin 编译 lua 和 cjson 简直就是灾难,最后还是到 ubuntu 下完成了。 1、下载lua源码(我下载的 5.1 版本,后面还有一个小插曲), 直接解压编译,遇到一个 readline.h not found 的问题,需要安装 re…

MySQL篇三:数据类型

文章目录 前言1. 数值类型1.1 tinyint类型1.2 bit类型1.3 小数类型1.3.1 float1.3.2 decimal 2. 字符串类型2.1 char2.2 varchar2.3 char和varchar比较 3. 日期类型4. enum和set 前言 数据类型分类: 1. 数值类型 1.1 tinyint类型 在MySQL中,整型可以指…