https://www.zhihu.com/people/jiu_sheng
https://blog.csdn.net/qianshang52013/article/details/138140235?spm=1001.2014.3001.5501
Autosar 系列教程:小柴带你学 AutoSar 总目录
# 小柴带你学 AutoSar 系列一、基础知识篇(2)AutoSar 架构
+++
# 缘起
首先要知道分层的意义:树状结构!(就像国、省、市、区这样分发快递的时候是不是很清晰呢😊)
补充一点: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)
- 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 复杂驱动
- Services Layer 服务层
- 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 配置
使用依赖注入的方式来配置【参考 https://zhuanlan.zhihu.com/p/681210703】🐷
简单来说就是使用一个指针指向配置参数。上层只需要在使用时将指针指向自己的配置即可。具体看下图
+++
# Integration and Runtime aspects
集成与运行这块大家想看也可以了解一下
本文就不做介绍啦
+++
# 结束
经过上述的介绍,相信大家已经大概了解 Autosar 啦!
接下来愉快的开始学习新的知识吧!
感谢有你陪伴哦!😘