微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 128|回复: 0

AUTOSAR BSW 基础软件服务

[复制链接]

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-3-10 11:32:14 | 显示全部楼层 |阅读模式
本文中,我们将看到 AUTOSAR BSW(基础软件)层(位于 RTE 以下的层)。它是一个重要的层,可以帮助应用程序层使用 MCU 的不同外设进行通信。如果您是 AUTOSAR 的新手,我建议您查看介绍性文章。我们已经简要地看到了 AUTOSAR 分层架构,今天我们将详细了解它。


上图展示了详细的 AUTOSAR 分层架构。让我们来概括一下:
·浅黑色层是 AUTOSAR 工作的微控制器。 ·红色块位于 MCAL(微控制器抽象层)之下,具有用于访问外设的驱动程序。MCAL 是 BSW 的最底层,此层高度依赖于 MCU,这意味着此层中的块将随 MCU 的更改而更改。
·绿色层(除了 CDD)位于 ECU 抽象层之下。在这种情况下,抽象意味着隐藏模块的较低级别细节,并为上层公开 API 以实现功能。该层将 MCAL 层从上层抽象出来,并提供 API 以访问外部和内部驱动程序。ECU 抽象层有助于使上层 ECU 硬件无关。
·下一层是 CDD(复杂设备驱动程序),它直接通过 RTE 将应用程序层中的 SWC 与 MCU 连接。它非常有用,用于编写未在 AUTOSAR 中定义的外围设备/外部设备的功能/驱动程序,或需要超出 OS 定时器最小滴答分辨率的极高时间限制的功能。但是,此层高度依赖于硬件,因此很难实现重复使用或可移植性。
·下一层是服务层(所有蓝色块),是 BSW 的最顶层。该层为应用程序、RTE、BSW 模块提供基本服务。例如:操作系统功能、通信服务、内存服务(用于 NVRAM)、ECU 状态管理等服务。
我们将在未来的文章中详细介绍每个层的每个块。
AUTOSAR中的内部和外部驱动程序:
在AUTOSAR环境中,根据使用的外设类型,有两种驱动程序:内部驱动程序外部驱动程序内部驱动程序用于访问位于微控制器外设中的内部外设,例如内部EEPROM、ADC等。外部驱动程序用于访问位于微控制器之外的外部外设,例如外部闪存、EEPROM、看门狗等。内部驱动程序位于MCAL层,而外部驱动程序位于ECU抽象层。对于某些存储器映射存储器等外部设备,存在例外,可以由微控制器直接访问,因此此类设备的驱动程序位于MCAL中。
接口(Interfaces)、处理器(Handlers)和管理器(Managers)的概念:
AUTOSAR还实现了接口、处理器和管理器的概念。请不要将其与端口接口混淆 !接口位于ECU抽象层,而管理器位于服务层。接口提供了抽象化较低级别模块的功能,并公开了通用的API访问,可供上层使用。接口提供对特定类型的设备的访问,不受同类型设备数量和硬件独立性的限制。处理器控制一个或多个客户端的并发、多个和异步访问,处理器还执行缓冲、排队等操作。处理器功能通常在驱动程序或接口中实现。管理器为多个客户端提供特定服务。仅有处理器不足以满足所有情况时,才需要使用管理器。例如,NVRAM管理器控制对内部/外部闪存的访问。
让我们开始详细学习所有层的内容。

  • MCAL(微控制器抽象层): 该层包括以下模块/块:
微控制器驱动程序:该模块具有用于访问MCU内部外设(例如看门狗、通用定时器)或具有直接访问MCU功能(例如CoreTest)的内部驱动程序。
存储器驱动程序:该模块具有用于访问芯片上的存储器(例如内部闪存、内部EEPROM)或存储器映射设备(例如外部闪存)的驱动程序。
加密驱动程序:该模块具有用于芯片上的加密设备(例如SHE、HSM)的驱动程序。
无线通信驱动程序:该模块具有用于无线网络系统(车内或离线通信)的驱动程序。
通信驱动程序:该模块具有用于板载通信(例如SPI、I2C等)的驱动程序,还具有用于车辆通信(例如CAN、FlexRay)的驱动程序。
I/O驱动程序:该模块具有用于访问和使用MCU的I/O引脚(包括数字和模拟,PWM)的驱动程序。
2.复杂设备驱动程序或CDD:
该模块有助于在BSW堆栈内实现非标准功能。在许多情况下,我们需要实现一些AUTOSAR不支持的功能,因此需要使用CDD。或者,如果某个功能需要严格的时间约束,可能小于AUTOSAR OS分辨率的最小时间,则复杂设备驱动程序模块非常有用,因为它直接帮助将MCU与应用程序连接起来。但是,复杂驱动程序功能高度依赖于MCU和应用程序,并且代码可能不易于移植。
3.ECU抽象层: ECU抽象层有助于实现ECU硬件独立性(不仅是MCU芯片的硬件独立性,还包括ECU板上的不同外部外设)。让我们看看这个层中的块:
I/O硬件抽象:在实际的ECU中,I/O外设可以在芯片上或板上,而ECU硬件布局(例如MCU引脚连接或引脚反转)可能很复杂。在传统的软件编写中,我们还必须考虑这些低级细节,但在AUTOSAR中不需要。该模块从应用程序中抽象出这些低级细节,并仅提供用于使用I/O的API。这是MCU无关的(因为它只指向更低级别的驱动程序),但是它是ECU硬件相关的,因为它使用板载外设的外部驱动程序,如果更改了这些外设,则其I/O硬件抽象也会改变。
通信硬件抽象:该模块抽象出通信控制器的位置和ECU硬件布局。应用程序不知道使用了哪个通信控制器(在CAN的情况下),使用了哪个引脚,甚至不知道使用了哪种类型的通信总线,无论是CAN、FlexRay还是其他,它只“了解”将要传输和接收的数据,不管选择的通信控制器是在芯片上还是在板上。该模块用于实现这种级别的硬件独立性。它提供API,这些API将被各自的模块调用,并执行数据传输或接收。

加密硬件抽象:该模块通过隐藏所使用的加密信息(内部设备、外部设备或基于软件)来抽象出加密功能。同样,上层模块不知道使用了哪种类型的加密或者甚至不知道使用了哪种加密,例如是在芯片上、板上还是编码在软件中。该模块提供了访问加密设备的机制。

存储器硬件抽象:该模块还抽象出所使用的存储器设备的位置。存储器可以在芯片上或板上,而板载存储器可能具有不同的ECU硬件布局(例如存储器芯片差异),但所有这些信息都从应用程序中抽象出来,因为它只知道数据,对所选的存储器设备类型没有控制权。

板上设备抽象:该模块提供了从ECU特定的板上设备中抽象出来的功能。该模块包

到这里你是否有过WOW的瞬间?如果没有,那么请再次阅读上面的所有内容。当我第一次理解这个时,我也有了WOW的瞬间,因为它设计得非常巧妙,ECU抽象层提供的硬件独立性水平令人惊叹。
通信服务:这是一个旨在为车辆网络通信提供统一服务的模块组,为网络管理提供统一接口,为通信和诊断通信提供统一接口,并将协议和消息属性隐藏在应用程序中。通信服务使用通信硬件抽象(如上所述)与通信驱动程序(在MCAL中)进行接口。这是MCU和ECU硬件无关的,但取决于总线类型。因此,如果总线类型(CAN、FlexRay等)更改,则这些服务的某些部分可能会更改。有关通信服务的更多信息,您可以查看此页面。
离线通信服务:这是一个模块组,用于通过adhoc无线网络实现车辆与外部客户端的通信。它具有用于实现不同功能的三个模块。该模块通过隐藏协议和消息属性,为无线以太网网络提供统一接口。
存储服务:该服务由一个模块组成,即NVRAM管理器。它负责管理非易失性数据(从不同的存储器驱动程序中读取/写入)。通常,应用程序需要将数据存储在内存中以备将来使用,因此使用此模块以统一的方式实现,并提供对存储器位置和低级属性的抽象。存储服务提供了用于非易失性数据管理的机制,如保存、加载、校验和等。这是MCU和ECU硬件无关的,并且高度可配置。
系统服务:这是一个可供各层模块使用的模块组。序。例如,实时操作系统、错误消息传递程序。这些服务可能是某些MCU依赖性的,或者可能支持特殊的MCU功能(如时间服务),部分取决于ECU硬件和应用程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-22 00:34 , Processed in 0.167598 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表