汽车电子学习笔记—AutoSAR之基础软件层(BSW)

汽车电子学习笔记—AutoSAR之基础软件层(BSW)

- 1、概述
如之前autosar概述笔记中说明,BSW按照层级结构可以分为服务层、ECU抽象层、硬件抽象层(MCAL)和复杂驱动层(CDD)。
汽车电子学习笔记—AutoSAR之基础软件层(BSW)
- 硬件抽象层(MCAL)
主要包含了相关的Driver,通过该层次可以访问MCU的资源,比如访问整个芯片的CAN,LIN等控制器,配置MCU的Port脚,配置MCU的时钟等。主要包含下面的内容: MCU,PORT,DIO,ADC,SPI,CAN,LIN,FLEXRAY,PWM,ICU,OCU等

- ECU抽象层
底层驱动的抽象,同时它也是外设的驱动,它提供了可以访问外设和底层MCU的接口,该层次主要包含了下面的内容:CanIf,Can Transceiver Driver, MemIf, Fee, Ea, External Flash/EEPROM Driver, WdgIf等

- 服务层
包含操作系统的功能、车辆网络通信管理服务、存储器服务(NVRAM管理)、诊断服务(包括UDS通信、错误存储和故障处理)、ECU状态管理,模式管理、逻辑和时间程序流监控(Wdg管理器)、密码服务(密码服务管理)、调度管理(Schedule Manager)

- 复杂驱动
跨越于微控制器硬件层和RTE之间,其主要任务是整合具有特殊目的且不能用MCAL进行配置的非标准功能模块,将该部分功能嵌入到AUTOSAR基础软件层中,从而实现处理复杂传感器以及执行器的特定功能和时间要求。复杂驱动程序跟单片机和ECU硬件紧密相关。其上层程序接口是根据AUTOSAR指定并且实施的;其下层程序接口受标准接口程序的限制。复杂驱动可以使用特定的中断或是复杂的微控制器外设(如PCP/TPU)来直接访问微控制器,从而实现对复杂传感器的评估和执行器的控制,比如喷油控制,电磁阀控制,增量位置检测等

- 2、详细描述

汽车电子学习笔记—AutoSAR之基础软件层(BSW)

- I/O功能
汽车电子学习笔记—AutoSAR之基础软件层(BSW)

功能包括了DIO(数字输入输出)、ADC和PWM等

  • 1)I/O Signal Interface: 对输入数据的初步处理,比如输入去抖等
  • 2)Driver for ext. ADC ASIC: 外置ADC的驱动,比如当有外部ADC采样芯片的时候,通过SPI通信,将数据传入主芯片
  • 3)Driver for ext. I/O ASIC: 同上,只不过这里是I/O
  • 4)SPI Handler: SPI处理驱动,将硬件中的SPI封装成API供上层调用
  • 5)ADC PWM DIO: MCAL中的驱动,将硬件中的ADC、PWM、DIO分别封装成API供上层调用
  • 6)SPI ADC PWM DIO(Hardware): 就是指芯片中的这些功能模块

实际例子流程
汽车电子学习笔记—AutoSAR之基础软件层(BSW)

Adc_ReadGroup:是MCAL对上层开放的API函数,Read到的是ADC采样值(比如12位精度最大就是4095)
Get_SensorValue:IoHwAb中的一个服务函数,主要作用就是通过ADC采样值计算出实际的传感器阻值(多少欧姆)。Sensor SWC和IoHwAb是通过C/S接口相连,可以通过Rte_Call_Get_(port)_SensorValue调用
Send_Temperature:将欧姆值计算成实际的温度值,再传递给App SWC

- Communication功能
汽车电子学习笔记—AutoSAR之基础软件层(BSW)

  • 1)COM:主要就起了一个信号接口和网关的作用。从应用层传下来数据首先就进入这里,应用层无需关心收发的数据是通过什么总线传输的,只需要将它传输给COM即可
  • 2)PDU Router: PDU——Protocol Data Unit,协议数据单元。这个模块的功能就是将COM下发的信号数据分配到相应的协议总线上去;或者将不同的协议变成同一信号上传给COM
  • 3)IPDU Mux:用于解析一些特殊的协议,比如CAN FD或者用户自定义的一些协议。就是起了一个统一CAN ID,不同信号Layout的作用
  • 4)CAN Tp:分包数据传输与错误检测,一般来说只有在诊断的时候才会使用
  • 5)CAN Interface:主要配置收发队列;组帧(FlexRay);管理时间触发总线的调度表(LIN, FlexRay)
  • 6)CAN Driver:MCAL中对主芯片上CAN模块的驱动封装
  • 7)Trcv Driver:Transceiver driver,收发器驱动

通信流程:

  • 发送流程

    • 1)应用层Send一个数据进COM
    • 2)COM写信号进PDU Buffer中
    • 3)PDU被PDU Router立刻发送或按周期发送(每个PDU都有一个独立的ID),之后PDU Router辨认总线种类,并把PDU发向不同的下级模块
    • 4)Interface根据不同的通道,把报文写入不同的队列
    • 5)Driver根据报文的优先级立刻发送报文
  • 接收流程

    • 1)硬件接收报文
    • 2)由Driver发出Rx中断(函数),之后通过RxIndication,数据被传递到Interface
    • 3)传递到PDU Router
    • 4)传递到COM(如果SWCs使用Data ReceptionTrigger,就通知RTE;否则暂存到Buffer中)
    • 5)信号被RTE读取,然后应用层读取

- Memory功能
汽车电子学习笔记—AutoSAR之基础软件层(BSW)

1)ROM存储方式

  • EEPROM:可以按位操作
  • FLASH仿EEPROM:相同大小容量下Flash相对便宜一些,但是只能按块擦写,不能按位擦写。想要让Flash做到按位擦写,就需要先将Flash原来的数据备份一份,再修改其中想要修改的位,再按块擦除,最后将改写好的数据再烧录回原块中
  • 而存储可以是片内的,也可以是片外的

2)详细说明

  • NVRAM Manager:
    a.应用层访问非易失性数据的唯一接口,提供非易失数据的管理服务
    b.NVM模块上层是RTE,下层是对接Flash Driver或者EEPROM Driver的接口
    c.NVM里面的数据读写有两种同步机制:Implicit synchronization(隐式同步)和Explicit synchronization(显式同步)

  • Memory Abstraction Interface:主要作用是将需要读写的信息解耦,分别分派给EEPROM或FLASH

  • EEPROM Abstraction(EA):EEPROM的抽象层,主要作用就是进一步封装片外或片内EEPROM驱动,给上层提供统一的API接口

  • Flash EEPROM Emulation: 同上,此为Flash

  • External E² Drv:ECU抽象层中片外EEPROM的驱动,下面是SPI的驱动,由于片外的EEPROM要通过SPI通信才能访问。因此,片外EEPROM的驱动要放到ECU抽象层中

  • SPI Handler Drv:MCAL中对片上SPI的驱动

  • SPI EEPROM FLASH:片内的SPI、EEPROM和FLASH功能模块

  • External E² Memory:片外EEPROM,就是板载的EEPROM,需要通过SPI访问

流程:

  • 片内存储
    汽车电子学习笔记—AutoSAR之基础软件层(BSW)
  • 片外存储
    汽车电子学习笔记—AutoSAR之基础软件层(BSW)
    - Watchdog功能
    汽车电子学习笔记—AutoSAR之基础软件层(BSW)
    • WdgM: 为应用层提供安全相关的服务
    • WdgIf: 看门狗接口,主要功能是触发硬件看门狗
    • Wdg Drv: Mcal中看门狗的驱动

- Diagnostics功能
一般故障处理过程,如ECU故障发生了,要将故障的内容记录到EEP或者Flash中,communication模块把故障信息传输到CAN或者LIN上,故障发生后需要对故障功能做出应急处理
汽车电子学习笔记—AutoSAR之基础软件层(BSW)
- FIM: Function Inhibition Manager,功能禁止管理,当一些error出现的时候,禁止一些功能。比如当检测到控制器过电流的时候,关闭MOS或IGBT,防止炸管
- DEM:Diagnostic Event Manager,诊断事件管理。就是用来记录和存储诊断事件的,下面连接NVRAM Manager,就是将这些诊断事件记录到EEP或者Flash中
- DCM:Diagnostic Communication Manager,诊断通信管理。实现诊断通信协议,我们通常说的UDS协议(即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准

流程:

  • 对故障做出快速响应的功能:
    首先由应用层传输数据到DEM,DEM判断出是哪个故障,之后发送给FIM;FIM立即做出判断,通过回调函数通知SWC或者轮询的方式禁止SW
  • 将故障记录的功能:
    故障由应用层传输数据到DEM,DEM一边是发送给FIM,另一边是发送给NVRAM Manager,然后将故障记录到EEP或者Flash中,方便以后维修诊断

- AutoSAR OS
OS可以配置为四个等级:SC1、SC2、SC3、SC4 (SC:Scalability Classes,可伸缩的类型)

  • SC1: 包含标准OSEK OS标准,除此之外还定义了标准的计数器接口和轮询式的调度表
  • SC2= SC1 + 时间保护。也就是说,当一个任务执行时间过长,它会被停止;SC2同时还定义了时间监控。防止因为一个任务时间过长而影响其他任务的实时性
  • SC3: SC3 = SC1 + 内存保护。针对未经授权访问安全相关软件组件的内存区域的防护
  • SC4: SC4 = SC1 + 时间保护 + 内存保护 = SC2 | SC3

- Mode Management功能
模式管理,可以理解为对状态的管理(比如ECU的上电、下电和休眠;CAN通讯的开启和关闭都是状态)。主要管理的对象有ECU、BSW和COM(通信中又可以细分很多)

  • ECU State Manager(EcuM)
    ECU状态机,主要作用是管理的是ECU的上下电功能(还包括休眠、重启等)。
    具体有以下四个功能:

    • 1)单片机初始化时,初始化OS所需的BSW模块
    • 2)为单片机的休眠(Sleep)模式和唤醒(wake up)模式做准备
    • 3)执行关机命令和重启命令
    • 4)通过唤醒验证协议验证已发生的唤醒
  • Basic Software Mode Manager(BswM):
    主要作用是定义一系列规则。一旦满足规则,就执行相应的动作。主要有Communication Control、Ecu State Handing和Module Initialization

  • Communication Manager(ComM):主要功能是管理通信的启用和关闭

  • Network Management(Nm If, Bus NM):主要功能是保持总线唤醒和协调总线关闭

  • Bus State Manager(Bus SM):切换Bus的状态,比如CAN SM是切换该CAN的启动和关闭(注意把CAN和COM区分开,COM更高一层,COM不光包含CAN)