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

 小柴带你学AutoSar总目录icon-default.png?t=N7T8https://blog.csdn.net/qianshang52013/article/details/138140235?spm=1001.2014.3001.5501

缘起

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

补充一点: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)。其主要功能包括:

  1. 通信管理:RTE负责管理和调度SWC之间的通信,包括数据传输、消息传递等,确保各个SWC之间能够正确地交换数据和信息。

  2. 调度和时间管理:RTE根据预先定义的调度表,对各个SWC的任务进行调度和执行,确保各个任务按时完成,同时管理系统的时钟和时间,保证系统的时序性和实时性。

  3. 资源管理:RTE负责管理系统中的资源,包括CPU、内存、IO等,确保各个SWC之间能够共享和竞争资源,并通过资源分配算法进行优化。

  4. 错误管理: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 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多核架构

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啦!

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

感谢有你陪伴哦!😘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlechazoCLF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值