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

news2024/11/17 5:23:44

目录

  • 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.coloradmin.cn/o/1900745.html

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

相关文章

基于机器学习(霍特林统计量,高斯混合模型,支持向量机)的工业数据异常检测(MATLAB R2021B)

近年来,隨着集散控制系统、工业物联网、智能仪表等信息技术在现代工业生产系统中的应用,生产过程的运行状态能够以大量数据的形式被感知和记录。基于数据的故障诊断方法以过程数据为基础,采用统计分析、统计学习、信号处理等方法,…

100+大屏模板,基于Vue 国产开源 IoT 物联网 Web 组态可视化 BI 数据分析工具

项目源码,文末联系小编 01 DataEase 可视化大屏 DataEase 是一个国产开源的数据可视化分析工具(BI工具),旨在帮助用户快速分析数据并洞察业务趋势,以实现业务的改进与优化。它支持丰富的数据源连接,包括OLTP和OLAP数据库、数据仓库…

【Python文件】操作终极指南:高效管理和处理文件系统的必备技能

目录 ​编辑 1. 文件的基础操作 1.1 打开/关闭文件 ​编辑 示例代码 文件对象 使用with语句打开文件 2. 读文件 2.1 使用read方法读取文件 2.2 使用readline方法读取文件 2.3 使用readlines方法读取文件 2.4 使用for循环读取文件 3. 写文件 3.1 使用write方法写文…

蓝桥杯web组国三选手题纲解析和备赛技巧--经验分享

蓝桥杯web组赛题解析和杯赛技巧 **🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏&am…

论文辅导 | 基于多尺度分解的LSTM⁃ARIMA锂电池寿命预测

辅导文章 模型描述 锂电池剩余使用寿命(Remaining useful life,RUL)预测是锂电池研究的一个重要方向,通过对RUL的准确预测,可以更好地管理和维护电池,延长电池使用寿命。为了能够准确预测锂电池的RUL&…

华为仓颉可以取代 Java 吗?

大家好,我是君哥。 在最近的华为开发者大会上,华为亮相了仓颉编程语言,这是华为历经 5 年,投入大量研发成本沉淀的一门编程语言。 1 仓颉简介 按照官方报告,仓颉编程语言是一款面向全场景智能的新一代编程语言&#…

2024年618已购好物分享(天猫京东小米有品)

2024年618年中购物节已经结束了,这里先给大家分享下2024年618购买的好物以作参考,并附上订单截图和商品二维码,大伙如有心仪的商品可直接扫码下单或先收藏本页。 2024618天猫好物分享 1、蜂花洗发水450ml 超市自营,国民老品牌&a…

CTFShow的RE题(一)

RE2 1.中文字符的显示 2.对文件的读取操作 3.RC4加密 (有一点是魔改的) 4.enflag.txt文件里面的密文是ASCII编码之后的数据(可以放ida中) 也可以放到 010 里(推荐) encDH~mqqvqxB^||zllJq~jkwpmvez{ key for i in enc:keychr…

最新-基于Python的理财和记账系统

博主介绍:👉全网个人号和企业号粉丝40W,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈 ⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到 &am…

C语言之常用内存函数以及模拟实现

目录 前言 一、memcpy的使用和模拟实现 二、memmove的使用和模拟实现 三、memset的使用和模拟实现 四、memcmp的使用和模拟实现 总结 前言 本文主要讲述C语言中常用的内存函数:memcpy、memmove、memset、memcmp。内容不多,除了了解如何使用&#x…

【C++】指针的点运算与箭头运算(->)的奥秘与应用

在编程的世界里,指针作为连接程序与内存之间的桥梁,扮演着至关重要的角色。对于使用C、C等语言进行开发的程序员而言,理解并掌握指针的使用技巧是提升编程能力的必经之路。其中,指针的点运算(.)和箭头运算&…

性价比蓝牙耳机排行榜前十名有哪些?十大性价比蓝牙耳机榜单盘点

作为使用真无线蓝牙耳机长达5-6年的资深爱好者,我始终对音频技术和产品的创新保持着浓厚的兴趣,最近,我投入了一笔不小的资金,超过大几千元,用于深入测试和评估市面上多款来自各大品牌的真无线蓝牙耳机(包括…

【实战项目】:电商网站数据抓取分析||电商API数据采集

导语:在电商行业,了解市场动态和竞争对手的信息非常重要。通过抓取电商网站上的商品数据,我们可以进行市场分析、价格监控和产品趋势研究。本文将介绍如何构建一个系统,自动化抓取电商网站上的商品数据,并进行分析。 …

eBPF 指令宏

linux 6.9.7 指令宏 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ /* eBPF instruction mini library */ #ifndef __BPF_INSN_H #define __BPF_INSN_Hstruct bpf_insn;/* ALU ops on registers, bpf_add|sub|...: dst_reg src_reg */ // BPF_ALU64_REG&am…

轻松创建对象——简单工厂模式(Java实现)

1. 引言 大家好,又见面了!在上一篇文章中,我们通过Python示例介绍了简单工厂模式,今天,我们继续深入这个话题,用Java来实现简单工厂模式。 2. 什么是简单工厂模式 简单工厂模式(Simple Facto…

CorelDRAW2024设计师的神器,一试就爱上!

🎨 CorelDRAW 2024:设计界的瑞士军刀,让创意不再受限!🌟 嗨,各位朋友们!👋🏻 今天我要跟大家分享一个神奇的设计神器——CorelDRAW 2024。作为设计师的你,是否…

谷粒商城----通过缓存和分布式锁获取数据。

高并发下缓存失效的问题 高并发下缓存失效的问题--缓存穿透 指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的不写入缓存,这将导致这个不存在的数据每次请求…

【论文阅读】-- Interactive Horizon Graphs:改进多个时间序列的紧凑可视化

Interactive Horizon Graphs: Improving the Compact Visualization of Multiple Time Series 摘要1 引言2 相关工作2.1 多个时间序列的可视化2.2 缩减折线图 (RLC)2.3 地平线图 (HG)2.4 大尺度和小尺度变异数据集2.5 多个时间序列…

IPSS模块怎么安装到VOS服务器的,到底有没有效果,是不是能大幅度提升VOS3000安全性呢

由于VOS的普及性,不得不承认VOS确实是非常优秀的软交换,但是很多客户在使用过程中都会遇到各种安全问题,比如话费被盗用了,历史话单一堆的非法呼叫话单,严重的影响到了话务安全,并不是那点话费的事了&#…

浏览器怎么抓包?Wireshark详细教程奉上!

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…