汽车电子控制器软件开发包含应用软件(ASW)和基础软件(BSW)。那什么是基础软件(BSW)呢?这个概念是哪里定义的呢?
刚刚参加工作的时候,我和我的小伙伴们被称之为“做底层驱动的”,我们主要工作是开发ECU 微控制器的驱动程序,外围芯片的驱动程序以及ECU的通讯协议栈。所以说“底层驱动”这个词并不能完全涵盖我们的工作内容。后来接触到AUTOSAR(汽车开放系统架构),这个架构为微控制器定义了软件架构,定义了基础软件,后来我们更多地被称为“做基础软件的”。
下图就是AUTOSAR的软件架构,其中红色框线内的部分都属于基础软件。
我们可以看到基础软件(BSW)包含了四部分:
1. 微控制器抽象层(Microcontroller Abstraction Layer,MCAL层):包含了跟硬件相关的驱动程序,可以用来访问内存、通信和I/O等。
2. ECU抽象层(ECU Abstraction Layer):负责提供统一的访问接口实现对通信、内存或者I/O的访问,从而无须考虑这些资源由微处理器提供还是由外部设备提供。
3. 服务层(Services Layer):提供各种类型的后台服务,例如网络服务、内存管理和总线通信服务等,操作系统就位于这一层。
4. 复杂驱动(Complex Drivers):复杂驱动层跨越于微控制器硬件层和RTE之间,主要为复杂传感器和执行器提供功能。
下图是基础软件(BSW)(除复杂驱动外)的细分模块。
纵向看,基础软件(BSW)的组件分为4组:
1. 系统:提供标准化的规定(针对操作系统、定时器以及错误存储器)、ECU特定的服务(ECU状态管理、看门狗管理)和库函数。
2. 内存:对内部和外部的内存(非易失性存储器)的访问入口进行标准化。
3. 通信:对汽车网络系统、ECU通信系统以及ECU内部软件的访问入口进行标准化。
4. 输入/输出:对传感器、执行器以及ECU外设的访问入口进行标准化。
以上,就是基础软件的基本内容,你了解了吗?