缘起
首先要知道分层的意义:树状结构!(就像国、省、市、区这样分发快递的时候是不是很清晰呢😊)
补充一点:Autosar的代码全是状态驱动的。为了实现代码解耦。【详情后续会更新👻】
AutoSar分层
-
应用层(Application Layer):【具体功能的实现。例如:制动控制、车身控制、点火控制、刹车控制、天气等等】
-
RTE(Runtime Environment)【管理和调度SWC。做SWC与BSW之间的映射】
-
BSW(Basic Software)基础软件层【枚举了所有可能用到的所有基本功能】
-
微控制器(Microcontroller)
各个层级之间如何对接的呢🎮
BSW分层
-
服务层【服务层提供了基本的服务和功能,为应用层提供支持。这些服务包括诸如网络通信和管理服务、内存服务、诊断服务、ECU状态管理、模式管理、时间管理、任务管理等】
-
ECU抽象层【提供了一些微控制器的驱动】
-
微控制器抽象层【直接与硬件相关的层级,给上层提供标准化的接口来使上层脱离硬件的区别】
-
复杂驱动层【未在Autosar定义内的内容以CDD的形式集成】
具体来看看吧🤔
-
Application Layer(SWC)
-
Runtime Environment(RTE)
-
Basic Software(BSW)
-
Microcontroller Drivers微控制器驱动
-
Memory Drivers内存驱动
-
Crypto Drivers加密驱动
-
Wireless Communication Drivers无线通信驱动
-
Communication Drivers通信驱动
-
I/O Drivers I/O驱动
-
Onboard Device Abstraction片上设备抽象
-
Memory Hardware Abstraction内存硬件抽象
-
Crypto Hardware Abstraction加密硬件抽象
-
Wireless Communication HW Abstraction无线通信硬件抽象
-
Communication HW Abstraction通信硬件抽象
-
I/O Hardware Abstraction I/O硬件抽象
-
System Services系统服务
-
Memory Services内存服务
-
Crypto Services加密服务
-
Off-board Communication Services片外通信服务
-
Communication Services通信服务
-
Services Layer服务层
-
ECU Abstraction LayerECU抽象层
-
Microcontroller Abstraction Layer微控制器抽象层
-
Complex Drivers复杂驱动
-
-
Microcontroller
坦白来讲呢就一句话层层分明,来细化各个模块。同时这也导致代码看起来极其不直观。
RTE的作用
RTE(Runtime Environment)是AUTOSAR架构中的一个关键组件,主要用于管理和调度汽车电子系统中的软件组件(SWC)。其主要功能包括:
-
通信管理:RTE负责管理和调度SWC之间的通信,包括数据传输、消息传递等,确保各个SWC之间能够正确地交换数据和信息。
-
调度和时间管理:RTE根据预先定义的调度表,对各个SWC的任务进行调度和执行,确保各个任务按时完成,同时管理系统的时钟和时间,保证系统的时序性和实时性。
-
资源管理:RTE负责管理系统中的资源,包括CPU、内存、IO等,确保各个SWC之间能够共享和竞争资源,并通过资源分配算法进行优化。
-
错误管理:RTE提供错误检测和处理机制,监控系统运行过程中的错误和异常情况,采取相应的措施进行处理,保证系统的稳定性和可靠性。
总的来说,RTE层在AUTOSAR架构中扮演着系统级别的角色,负责管理和调度汽车电子系统中的各个软件组件,确保它们能够协同工作,实现整车的功能,并且保证系统的性能、稳定性和安全性。
分层结构举例
CAN
CAN,即Controller Area Network(控制器局域网),在车载软件上的作用可谓举足轻重。它不仅是一个通信协议,更是一个能够实现车辆内部各个控制单元之间高效、实时信息交互的桥梁。CAN总线可以挂载多个ECU实现通信,一般可以接10~100个节点。
每层都有其自身的定位。😎
服务层
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
分层都类似就不多说了,直接看图。
FlexRay
Ethernet
以太网不用过多解释了吧,生活中已经无处不在!🚀
这里附上一个网络七层模型,相信大家就理解啦!
OSI网络七层模型
层级 | 层 | 英文全称 | 常用协议 |
---|---|---|---|
7 | 应用层 | Application Layer | HTTP、FTP、SMTP、POP3、TELNET、NNTP、IMAP4、FINGER |
6 | 表示层 | Prosentation Layer | LPP’、BNBSSP |
5 | 会话层 | Session Layer | SSL、TLS、DAP、LDAP |
4 | 传输层 | Transport Layer | TCP、UDP |
3 | 网络层 | Network Layer | IP、ICMP、RIP、IGMP、OSPF |
2 | 数据链路层 | Data Link Layer | 以太网、网卡、交换机、PPTP、L2TP、ARP、ATMP |
1 | 物理层 | Physical Layer | 物理线路、光纤、中继器、集线器、双绞线 |
多核架构
Autosar多核架构
RH850U2A多核架构
各模块之间的交互协作
Memory
大家看图自己体会😜
Communication
整体看一下吧😋
Ethernet
整个过程用到了以下组件
-
PDU Router
-
提供不同抽象通信控制器和上层之间PDU的路由
-
路由器的规模是特定于ECU的(如果例如只有一个通信控制器,则缩小到无规模)
-
提供动态TP路由。在缓冲完整的TP数据之前开始传输TP数据
-
-
COM
-
提供不同I-PDU之间单个信号或信号组的路由
-
-
NM Coordinator
-
通过NM协调员处理的网络管理,同步连接到ECU的不同通信信道的网络状态
-
-
Communication State Managers
-
通过接口启动和关闭通信系统的硬件单元
-
控制PDU组
-
CAN
还有一些层级命名的说明
Autosar CP集群
不多描述了看图,明白这个思想就好
Autosar配置
使用依赖注入的方式来配置【参考编码技巧之如何优雅的解耦 - 知乎】🐷
简单来说就是使用一个指针指向配置参数。上层只需要在使用时将指针指向自己的配置即可。具体看下图
Integration and Runtime aspects
集成与运行这块大家想看也可以了解一下
本文就不做介绍啦
结束
经过上述的介绍,相信大家已经大概了解Autosar啦!
接下来愉快的开始学习新的知识吧!
感谢有你陪伴哦!😘