【车载开发系列】AutoSar架构之基础软件层BSW
AutoSar架构之基础软件层BSW
一.基础软件层概要
BSW(Basic Software Layer,BSW)提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组件构成。他可以继续细分为:
1.服务层/Services Layer
2.ECU抽象层/ECU Abstraction Layer
3.微控制器抽象层/Microcontroller Abstraction Layer
4.复杂驱动层/Complex Drivers
所谓的层,我们通常的理解就是横向的,但是这里BSW的分层不像上面横向那样规则,没有严格意义上的横向上的一层一层的,有些是在纵向上跨了多个层的,但横向上看大体上你可以说分为3层,也就是1~2~3三层。
二.BSW的作用
引入AUTOSAR软件架构的目的是为了提供一套优秀的底层代码库,使OEM在开发上层应用层软件的时候不应考虑下层繁多的不同ECU型号,从而使汽车软件开发更加标准化、规范化、安全化、快速化和经济化。为了实现该目标,需要把这些不同型号的ECU封装起来,对外提供统一的接口,供上层软件开发时调用,BSW就是起这个作用的。
三.系统服务层
服务层是将下层的各种功能统一汇总到这里,即将所有与硬件相关的功能都抽象成一个个具体应用服务。
比方说系统服务层中的COM通信服务,就是将下层的CAN,LIN,串口通信抽象成更高层次的API,这样上层软件在调用API时就不需要考虑具体的通信方式是CAN还是LIN等。
系统服务层包括OS操作系统、系统服务、存储器服务,通信服务等,系统服务层的实现与微控制器、ECU、具体应用相关。
3.1 通信服务(Communication Services)
包括CAN、LIN、FlexRay在内的整车网络系统、ECU网络及软件组件内的访问进行了统一封装,模块则通过通信硬件抽象层进行通信:对上层的应用软件层隐藏了协议以及报文属性,并提供了统一的总线通信接口供应用软件层调用,提供了统一的网络管理服务
3.2 内存服务(Memory Services)
将微控制器内外内存的访问进行统一封装,而NVRAM管理器提供了一个RAM镜像,来支持数据的快速读取。
以统一的格式为上层的应用软件层传输非易失性数据
抽象了内存地址以及属性
为数据的保存、加载、校验保护、验证以及安全存储提供了统一的机制
3.3 系统服务(System Services)
系统服务是一组可以由所有层次模块使用的模块和功能。例如实时操作系统(包括中断管理、资源管理、任务管理等)、错误管理器和库功能等。
四.ECU抽象层
它是包含ECU板上外部设备的驱动,内部设备与外部设备的接口(I/O),是对ECU上包括主芯片MCU在内的所有设备的封装,使上层软件与ECU硬件设计无关。
ECU上不光有主芯片,还有其他的一些设备(比如外置存储,外置看门狗等),这些设备其实也是要通过主芯片控制的,比如外置看门狗,就需要和主芯片相连接,由主芯片的接口去配置它。因此,其底层还是需要MCAL的支持。
五.复杂驱动层
复杂驱动(CCD)层跨越于微控制器硬件层和RTE之间,复杂驱动程序跟单片机和ECU硬件紧密相关。其上层程序接口是根据AUTOSAR指定并且实施的;其下层程序接口受标准接口程序的限制。复杂驱动可以使用特定的中断或是复杂的微控制器外设(如PCP/TPU)来直接访问微控制器,从而实现对复杂传感器的评估和执行器的控制,利用中断、TPU、PCP等来实现实时性高的传感器采样、执行器控制等功能。
六.微处理器抽象层MCAL
MCAL是BSW的最低层,它包含一些MCU内部驱动软件模块,这些驱动直接访问MCU内部外设(ADC、WatchDog、General Purpose Timer等)。MCAL这一层依赖于MCU,但是它的上面一层(ECU抽象层)则可以独立于具体的MCU。MCAL主要包含下面这些模块。
1.微控制器驱动
MCU内部外设驱动,比如看门狗、通用功能定时器等。
2.通信接口驱动
ECU板上通信接口驱动(如SPI, I2C)以及整车通信接口驱动(CAN, 以太网等)
3.非易失性存储器(NVM)驱动
片上NVM驱动(内部Flash、EEPROM等),片外NVM驱动(外部Flash、EEPROM等)
4.I/O驱动
模拟和数字I/O驱动(ADC、PWM、DIO等)
5.加密模块驱动
片上加密模块驱动,如SHE、HSM