本文档主要描述了VP项目MCU芯片TC297的AUTOSAR方案。MCU的基础软件由AUTOSAR软件实现,AUTOSAR可简易理解为如下层次。
- MCU芯片驱动层:MCU芯片的抽象层,目的是将各类MCU芯片进行抽象,向上统一接口,隔离其他层次软件,做到足够的解耦状态,以便更换芯片时其他软件无需变更只需更换这一层软件就可。MCU芯片的抽象层包含Port,CAN,SPI,ETH,MCU,WDG,GPT等。
- 控制器抽象层:控制器抽象层(包含I/O抽象驱动),作用是将控制器的外设进行抽象,向上统一接口。这一层的目的是可以控制器不同的外设需求进行抽象,做到上下隔离,解耦。重新设计控制器时,修改本层即可。包含:Fee,Mefif,Canif,Ethif等等。
- Service层:这一层是Autosar核心层,包含内存管理,网络管理,数据路由,UDS诊断管理,XCP标定等汽车领域通用化的软件服务都在这一层有所体现。关联了ISO14229,ASAP2,J1939等汽车标准,同时将成熟的MCU协议软件集成到这一层中;
- Autosar OS:OS实际上属于Service层的模块,但较为核心且独立,所以单独列出。AUTOSAR OS是基于OSEC OS进行开发的,区别于Linux,AUTOSAR OS功能相对简洁,不包含外设驱动,只关注任务调度。且所有任务都是静态分配,不支持动态任务分配。使用调度表进行任务调度,可对任务进行优先级,是否抢占,任务堆栈等进行设置,对二类中断进行统一管理。有专门配置选项进行管理。
- 复杂驱动:对不易被统一接口,未被AUTOSAR定义,但属于基础软件,各控制器自定义的软件可放在复杂驱动中。
- RTE:可理解为数据接口层。
根据项目的功能需求,板子的硬件模块图如下:
图1 VP项目五仁板子的硬件模块图
- 设计方案
AUTOSAR软件整体分为三部分:应用层软件、BSW与CDD和MCAL。AUTOSAR软件整体框图如下图所示。
图1 AUTOSAR软件整体框图
- 应用层软件依据具体需求,由模型生成代码或者手写代码方式实现。应用层软件具体功能,本文档暂不涉及。
- BSW部分是AUTOSAR协议栈的主体,通过配置软件进行参数配置,由工具生成代码。CDD部分依据具体需求,由手写代码实现。
- MCAL部分是芯片外设的驱动,依据项目中使用到的外设和使用方式,通过配置软件进行参数配置,由工具生成代码。
下文介绍各个模块包含的功能。
-
- BSW模块
BSW模块是AUTOSAR的标准模块,主要包含(1)CAN、LIN、ETH等通信服务;(2)OS、ECUM等系统服务;(3)DEM、DCM等诊断服务;(4)FEE、NVM等存储服务。该部分可以在EB工程的基础上,依据VP具体需求进行更改。使用到的BSW模块如下图所示。
图2 BSW模块
-
- CDD模块
AUTOSAR没有覆盖到的一些特殊的功能,需要作为CDD进行开发。VP项目中CDD模块如下图所示。
图3 CDD模块
-
- MCAL
MCAL是MCU外设的底层驱动。该部分已经VP项目中具体使用到的外设和各外设的使用方式,通过配置软件进行参数配置,并且生成代码。VP项目中用到的外设和对应外设所驱动的外部设备,见下图所示。
图4 MCAL外设及外部设备