Autosar 系列教程:小柴带你学 AutoSar 总目录

# 小柴带你学 AutoSar 系列一、基础知识篇(2)AutoSar 架构

+++

# 缘起

首先要知道分层的意义:树状结构!(就像国、省、市、区这样分发快递的时候是不是很清晰呢😊)

补充一点:Autosar 的代码全是状态驱动的。为了实现代码解耦。【详情后续会更新👻】

+++

# AutoSar 分层

image-20240512105511125

  • 应用层(Application Layer):【具体功能的实现。例如:制动控制、车身控制、点火控制、刹车控制、天气等等】
  • RTE(Runtime Environment)【管理和调度 SWC。做 SWC 与 BSW 之间的映射】
  • BSW(Basic Software)基础软件层【枚举了所有可能用到的所有基本功能】
  • 微控制器(Microcontroller)

image-20240504123109486

各个层级之间如何对接的呢🎮

image-20240512105719292

+++

# BSW 分层

  • 服务层【服务层提供了基本的服务和功能,为应用层提供支持。这些服务包括诸如网络通信和管理服务、内存服务、诊断服务、ECU 状态管理、模式管理、时间管理、任务管理等】
  • ECU 抽象层【提供了一些微控制器的驱动】
  • 微控制器抽象层【直接与硬件相关的层级,给上层提供标准化的接口来使上层脱离硬件的区别】
  • 复杂驱动层【未在 Autosar 定义内的内容以 CDD 的形式集成】

image-20240504123138493

具体来看看吧🤔

  • Application Layer(SWC)
  • Runtime Environment(RTE)
  • Basic Software(BSW)
    • Services Layer 服务层
      • System Services 系统服务
      • Memory Services 内存服务
      • Crypto Services 加密服务
      • Off-board Communication Services 片外通信服务
      • Communication Services 通信服务
    • ECU Abstraction LayerECU 抽象层
      • Onboard Device Abstraction 片上设备抽象
      • Memory Hardware Abstraction 内存硬件抽象
      • Crypto Hardware Abstraction 加密硬件抽象
      • Wireless Communication HW Abstraction 无线通信硬件抽象
      • Communication HW Abstraction 通信硬件抽象
      • I/O Hardware Abstraction I/O 硬件抽象
    • Microcontroller Abstraction Layer 微控制器抽象层
      • Microcontroller Drivers 微控制器驱动
      • Memory Drivers 内存驱动
      • Crypto Drivers 加密驱动
      • Wireless Communication Drivers 无线通信驱动
      • Communication Drivers 通信驱动
      • I/O Drivers I/O 驱动
    • Complex Drivers 复杂驱动
  • Microcontroller

image-20240504123208031

坦白来讲呢就一句话层层分明,来细化各个模块。同时这也导致代码看起来极其不直观。

+++

# RTE 的作用

RTE(Runtime Environment)是 AUTOSAR 架构中的一个关键组件,主要用于管理和调度汽车电子系统中的软件组件(SWC)。其主要功能包括:

  1. 通信管理:RTE 负责管理和调度 SWC 之间的通信,包括数据传输、消息传递等,确保各个 SWC 之间能够正确地交换数据和信息。
  2. 调度和时间管理:RTE 根据预先定义的调度表,对各个 SWC 的任务进行调度和执行,确保各个任务按时完成,同时管理系统的时钟和时间,保证系统的时序性和实时性。
  3. 资源管理:RTE 负责管理系统中的资源,包括 CPU、内存、IO 等,确保各个 SWC 之间能够共享和竞争资源,并通过资源分配算法进行优化。
  4. 错误管理:RTE 提供错误检测和处理机制,监控系统运行过程中的错误和异常情况,采取相应的措施进行处理,保证系统的稳定性和可靠性。

总的来说,RTE 层在 AUTOSAR 架构中扮演着系统级别的角色,负责管理和调度汽车电子系统中的各个软件组件,确保它们能够协同工作,实现整车的功能,并且保证系统的性能、稳定性和安全性。

+++

# 分层结构举例

# CAN

image-20240512095428803

CAN,即 Controller Area Network(控制器局域网),在车载软件上的作用可谓举足轻重。它不仅是一个通信协议,更是一个能够实现车辆内部各个控制单元之间高效、实时信息交互的桥梁。CAN 总线可以挂载多个 ECU 实现通信,一般可以接 10~100 个节点。

image-20240512094630291

每层都有其自身的定位。😎

# 服务层

PDUR(Physical Data Unit Receiver)

  • 作用:PDUR 负责接收来自 CAN 物理层的数据,并将其转换为服务层可以处理的格式。它处理数据的接收同步、解码以及错误检测等任务,确保数据的完整性和正确性。

CANTP(CAN Transport Protocol)

  • 作用:CANTP 是一个传输协议,它提供了在 CAN 网络上可靠传输数据帧的机制。它负责将数据分割成合适大小的数据块,并在接收端进行数据重组,以支持长数据的传输,同时提供流量控制和错误恢复功能。

CANSM(CAN State Manager)

  • 作用:CANSM 负责管理 CAN 通信的状态和生命周期。它监控 CAN 网络的连接状态,处理网络故障和恢复,确保 CAN 通信的稳定性和可靠性。此外,它还可能提供网络管理功能,如节点的加入、离开和配置等。

CANNM(CAN Network Management)

  • 作用:CANNM 负责网络层面的管理和控制。它可能包括网络初始化、节点寻址、节点状态监控等功能,以确保 CAN 网络的整体性能和稳定性。此外,它还可能提供诊断和维护功能,帮助开发人员和维修人员快速定位和解决问题。

# ECU 抽象层

CANIf(CAN Interface)

  • 作用:CANIf 是 ECU 与 CAN 网络之间的接口层。它提供了 ECU 访问 CAN 网络的统一接口,隐藏了底层通信的复杂性。CANIf 负责数据的封装和解封装,将 ECU 发送的数据转换为 CAN 帧格式,并将接收到的 CAN 帧解析为 ECU 可以理解的数据。

CANTrcv(CAN Receiver)

  • 作用:CANTrcv 是 ECU 内部用于接收 CAN 数据的组件。它负责监听 CAN 网络上的数据,并将接收到的数据传递给相应的处理函数或模块。CANTrcv 可能还具备数据过滤功能,只接收特定类型或特定源地址的数据,以减少 ECU 的处理负担。

# 微控制器抽象层

CAN(Microcontroller Abstraction Layer)

  • 作用:这里的 CAN 指的是微控制器抽象层的 CAN 模块或驱动。它负责在微控制器和 CAN 硬件之间建立通信桥梁,使得微控制器能够通过软件控制 CAN 硬件的操作。这个抽象层通常提供了一组 API(应用程序接口),允许上层软件以统一的方式访问和操作 CAN 硬件,而无需关心具体的硬件细节。

这些 CAN 相关的组件和层在 CAN 通信系统中各自扮演着重要的角色,它们协同工作以确保数据的可靠传输和系统的稳定运行。

# LIN

分层都类似就不多说了,直接看图。

image-20240512101904559

# FlexRay

image-20240512102454037

# Ethernet

以太网不用过多解释了吧,生活中已经无处不在!🚀

image-20240512102531226

这里附上一个网络七层模型,相信大家就理解啦!

OSI 网络七层模型

层级英文全称常用协议
7应用层Application LayerHTTP、FTP、SMTP、POP3、TELNET、NNTP、IMAP4、FINGER
6表示层Prosentation LayerLPP’、BNBSSP
5会话层Session LayerSSL、TLS、DAP、LDAP
4传输层Transport LayerTCP、UDP
3网络层Network LayerIP、ICMP、RIP、IGMP、OSPF
2数据链路层Data Link Layer以太网、网卡、交换机、PPTP、L2TP、ARP、ATMP
1物理层Physical Layer物理线路、光纤、中继器、集线器、双绞线

+++

# 多核架构

# Autosar 多核架构

image-20240512105228633

# RH850U2A 多核架构

image-20240512110157172

+++

# 各模块之间的交互协作

# Memory

大家看图自己体会😜

image-20240512110445777

image-20240512110520195

# Communication

# 整体看一下吧😋

image-20240512111542154

# Ethernet

image-20240512111620314

image-20240512110922137

# 整个过程用到了以下组件

  • PDU Router
    • 提供不同抽象通信控制器和上层之间 PDU 的路由
    • 路由器的规模是特定于 ECU 的(如果例如只有一个通信控制器,则缩小到无规模)
    • 提供动态 TP 路由。在缓冲完整的 TP 数据之前开始传输 TP 数据
  • COM
    • 提供不同 I-PDU 之间单个信号或信号组的路由
  • NM Coordinator
    • 通过 NM 协调员处理的网络管理,同步连接到 ECU 的不同通信信道的网络状态
  • Communication State Managers
    • 通过接口启动和关闭通信系统的硬件单元
    • 控制 PDU 组

# CAN

image-20240512110716797

# 还有一些层级命名的说明

image-20240512110800894

+++

# Autosar CP 集群

不多描述了看图,明白这个思想就好

image-20240512112131906

image-20240512112155000

image-20240512112304469

+++

# Autosar 配置

使用依赖注入的方式来配置【参考 https://zhuanlan.zhihu.com/p/681210703】🐷

简单来说就是使用一个指针指向配置参数。上层只需要在使用时将指针指向自己的配置即可。具体看下图

image-20240512112625716

+++

# Integration and Runtime aspects

集成与运行这块大家想看也可以了解一下

本文就不做介绍啦

+++

# 结束

经过上述的介绍,相信大家已经大概了解 Autosar 啦!

接下来愉快的开始学习新的知识吧!

感谢有你陪伴哦!😘

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝