一.什么是BSW
BSW层全称为Basic Software (基础软件层),顾名思义,该层主要是为应用层提供基础服务。
这里可以看到 BSW 主要提供了:看门狗服务 ,存储服务,通信和诊断服务,OS服务,I/O 功能,BswM 和 EcuM 等模式管理功能
看门狗服务:提供看门狗功能,检测MCU,当MCU挂死的时候可以进行复位重启。
存储服务:提供读写数据到 EEPROM的功能。 通信和诊断服务:提供 Can、Lin、Eth 等通信和诊断功能。
I/O 功能:提供通用GPIO读写功能,ADC、PWM等特殊 Port 外设功能。
OS 服务:提供基础OS服务,任务周期运行、调度等功能。
BswM:管理整个Bsw的模块。
EcuM:管理 Ecu上下电等功能。
二.BSW结构介绍
MCAL层(微控制抽象层 MicroController Abstraction Layer)是对MCU 芯片的抽象和封装,由于Autosar Cp 是基于MCU 的软件架构,所以该层主要是实现MCU 外设驱动,比如I/O驱动、Flash 驱动、Can 驱动、看门狗驱动、定时器驱动等等。这一层是需要和硬件打交道的,这一层高度依赖MCU 硬件,如果项目换MCU 芯片,只需要修改这一层代码适配驱动即可。
ECU 抽象层(ECU Abstraction Layer)是对ECU的抽象和封装,ECU上面除了主芯片MCU,还有很多外围设备,比如外置Flash,外置电源管理芯片等等。这 一层就是实现了整个ECU 所有设备的封装。外围设备也是MCU 主芯片控制的, 这一层会使用到Mcal 的接口。作为抽象层,屏蔽了下层驱动实现细节,将统一 接口API 暴露给上层以实现功能。该层从上层抽象Mcal 层,并提供用于访问外 部和内部的驱动程序的API。
服务层(Service Layer)是向应用层提供服务的,这一层将底层提供的服务封装起来供应用层使用。比如通信服务、存储服务、os操作系统服务等。
CDD (Complex Device Drivers)复杂驱动指的是有些模块不适用于Autosar协议栈,通过手写代码自己封装成CDD模块,在项目开发中会经常有一些模块直接作为CDD使用。