写点什么

搞一下 CP AUTOSAR 入门 | 01 CP AUTOSAR Overview

发布于: 3 小时前

前言


在汽车电子开发领域,如果你是一名软件开发工程师,你肯定知道 AUTOSAR,最近十几年的时间最火的汽车电子软件开放架构标准,从 2003 年左右最早的 AUTOSAR 标准(一开始没有 AP 的概念,AP 的概念最早是在 17 年正式出现的)诞生到今天已经更新到了 R20-11 版本了,无论是国内做 AUTOSAR 工具的服务商还是国外的都在不断更新自己的方案。相信网上也有很多文章来介绍 CP AUTOSAR,这里进行一个简单的梳理。

本系列希望结合本人对 CP AUTOSAR 的一些见解和在 AUTOSAR 使用的经验,和大家一起交流探讨,一起进步,一起做好汽车电子软件。

全系内容可在《搞一下汽车电子》后台回复 "系列",或进入菜单栏 "下载分享" --> "系列"


一、What (CP) AUTOSAR?

汽车电子开发不像其他产品的开发,有着自己一套严格的规范和流程,在汽车行业主要是 V 模型,它定义了汽车电子产品开发一套从需求到软硬件设计开发到最终测试交付的完整体系。


AUTOSAR 的全称是:AUTOmotive Open System ARchitecture 中文名称:汽车开放系统架构

AUTOSAR 是主流汽车 OEM 和主流供应商、芯片企业等制定的一套软硬件可以分离复用、应用算法与底层驱动分离、下层的芯片企业与上层 OEM 或者 ECU 供应商基于同样的规范独立并行开发的软件开发体系。

AUTOSAR 的标准严格遵循了 V 模型的软件开发流程,在 AUTOSAR 标准中定义了从软件需求(通用全面的需求)到架构设计完整体系,根据 AUTOSAR 规范就可以开发满足这些规范的代码程序。

下图展示了 CP AUTOSAR 的思想和方法论,在实现软硬件隔离同时,制定统一、标准的软件开发架构规范,实现汽车电子软件标准的协同,在功能实现层面各个 OEM、供应商的竞争。




二、CP AUTOSAR 整体架构概述


AUTOSAR 作为一种汽车开放架构,对于汽车电子软件开发在架构设计上做了很好的分层处理,对于熟悉 CP AUTOSAR 规范的人而言,下图基本涵盖了 CP AUTOSAR 整体架构的分层思想。



在 CP AUTOSAR 架构(软件)里,主要分为三层: Application Layer、AUTOSAR Runtime Environment (RTE)、Basic Software (BSW)


1、APP 层

在 CP AUTOSAR 中 APP 层主要是实现特定 ECU 功能的逻辑算法,这一层也是 CP AUTOSAR 架构里定义的各个 OEM 和供应商在实现上存在竞争一层。一般在 APP 层会设计出 ECU 中各个软件单元模块的上层应用架构,而这部分架构并不是一个统一的 CP AUTOSAR 架构,OEM 和供应商可以根据自己的应用层逻辑去设计自己上层应用的需要的 SWC 数目、各个 SWC 模块之间的数据流和控制流。而在 CP AUTOSAR 架构中,各个 APP 的调度、数据交互等通过 RTE 实现。

2、RTE 层

RTE 提供基础的通信服务,支持 SWC 之间(Interface2 与 Interface3)和 SWC 到 BSW 的通信(Interface1,包括 ECU 内部的程序调用、 ECU 外部的总线通信等情况)。RTE 同时实现对 APP 层 SWC 的函数调度。RTE 使应用层的软件架构完全脱离于具体的单个 ECU 和 BSW。


3、BSW 层

BSW 层是整个 CP AUTOSAR 的核心,内部按照架构上的分层而言主要分为微控制器抽象、复杂驱动层、ECU 抽象层、服务层四大部分。

微控制器抽象层(Microcontroller AbstractionLayer)是在 BSW 的最底层,它包含了访问微控制器的驱动。微控制器抽象层使上层软件与微控制器相分离,以便应用的移植。复杂驱动(Complex Drivers)可以实现应用层通过 RTE 直接访问硬件。也可以利用复杂驱动封装已有的非分层的软件,以实现向 CP AUTOSAR 软件架构逐步实施。

ECU 抽象层封装了微控制器层以及外围设备的驱动。将微控制器内外设的访问进行了统一,使上层软件应用与 ECU 硬件相剥离。主要包括 Onboard Device Abstraction、Memory Hardware Abstraction、Communication Hardware Abstraction。    

服务层(Service Layer)位于 BSW 的最上面,将各种基础软件功能以服务的形式封装起来,供应用层调用。服务层包括了 RTOS、通信与网络管理、内存管理、诊断服务、状态 管理、程序监控等服务。

BSW 层从上到下可以实现一个完整的协议栈功能,按照具体的实现服务功能分可以分为系 Onboard Device、Memory、Communication 三大服务功能以及复杂驱动。下面分别简单介绍 Onboard Device、Memory、Communication 三大协议栈服务功能。

Onboard Device 服务功能

Onboard Device 功能主要是对 ECU 的非传感器和执行器的进行操作,直接去调用 MCAL 中的微控制 Driver 进行操作,最常见的就是对 Watchdog 的操作。

在使用 WDGM 服务层的接口去进行喂狗操作,监控 MCU 是否正常运行。常见的控制如下,WDGM 接收到周期的定时触发喂狗函数,去调用 IF 层的接口,如果操作内狗,直接调用 MCAL 的 WDG Driver 进行喂狗操作,如果 IF 层被 WDGM 层所调用的是外狗的操作函数,直接去操作 CDD 的特定的外部 SBC 芯片驱动代码,调用 MCAL 与外部 SBC 芯片的通信接口(如 SPI)进行外部 SBC 喂狗操作。


Memory 服务功能

在 CP AUTOSAR 中关于对 Memory 的操作主要包括两大类,分别是 MCU 内部的 DFLASH 和外部的 EEPROM 芯片。NVM 模块会定义操作 NVM 的服务函数,IF 层实现对外部和内部存储的路由划分。

对于操作外部 EEPROM 的,一般包括 EA 和 EEP,EA 是抽象,EEP 是外部 EEPROM 的驱动模块,通过 EA 调用 EEP 驱动,然后调用外部 EEPROM 与 MCU 通信协议接口(如 SPI)实现对外部 EEPROM 的操作。

对于内部数据存储操作,在 IF 层直接调用抽象层的 FEE 模块,FEE 会调用 MCAL 的 FLASH 进行 DFLASH 的操作。



Communication 服务功能

CP AUTOSAR 中基本的最常用的车载网络通信进行了架构设计和分层定义。主要包含 MCAL 的驱动、TRCV 层的封装、IF 层的节点路由分配、PDU 层的路由分配、特殊的通信协议、通信的状态管理、网络管理模块的集成封装、信号的解析与封装、整个通信的服务管理以及与 RTE 上层模块的交互。

下图展示了整个通信的分层架构关系,其中标记为橘黄色箭头连线的数据传递主要是模式和状态的控制,黑色的箭头连线主要为通信数据的数据流。



以 CAN 为例,在 IF 层会根据使用的 TRCV 不同选择不同的 TRCV 控制模块,路由 CAN 的节点模块,而 PDUR 层主要对某个 CAN 节点的 PDU 进行路由,根据该 CAN 节点的功能进行 PDU 的分配(PDU 为 XCP 的走 XCP 模块;PDU 为 NM 的走 CANNM 模块;PDU 为 TP 的走 CANTP 模块;J1939 的 PDU 为 J1939 模块,普通的直接传输到 COM 等)。CANSM 会对整个 CAN 的状态进行管理,然后根据 CANNM 以及 COMM 的相关请求和状态去控制 CANIF 进而控制 TRCV 的状态,从而实现对 CAN 通信的管理。


如何开发集成 CP AUTOSAR 工程

在正向的 CP AUTOSAR 开发过程中,一般会从 OEM 获得必须的系统描述文件和通信、诊断矩阵文件以及 OEM 定义好的 APP 层的一些借口文件,然后将这些文件导入到 CP AUTOSAR 工具链中(比如 Vector 的 Davinci 系统、AB 的 AUBIST 等),同时供应商自己在架构设计工具中创建的 SWC 等.xml 文件也导入到 CP AUTOSAR 工具开发链中。

在 CP AUTOSAR 的工具链中根据需要完成 BSW、RTE、APP 层的设计和实现,然后基于工具的代码生成器生成对应的.h 和.c 代码,对于 RTE 和 BSW 的代码是可以直接集成的,但是对于 APP 层,只能生成对应的模块代码模板,主要包括了调度函数以及 APP 的交互接口等。

内部的代码逻辑需要自己手动添加,也可以在 CP AUTOSAR 工具链中做好的 APP 层的 SWC 的描述文件.xml(一般包括了 SWC 之间的接口、全局变量、调度函数等)导入到 MBD 工具中进行建模生成代码,最后将所有的 BSW、RTE、APP 生成的代码,以及购买工具自带的静态代码一起集成到工程中进行编译调式。



以上就是本人对 CP AUTOSAR 简单的理解,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。后期将会对 CP AUTOSAR 各个层级、各个模块进行介绍,欢迎大家关注。


 作者:搞一下汽车电子

文章来源:上汽零束 SOA 开发者论坛 

原文链接:https://bbs.z-onesoft.com/omp/community/front/api/page/mainTz?articleId=7539

用户头像

还未添加个人签名 2021.09.06 加入

还未添加个人简介

评论

发布
暂无评论
搞一下CP AUTOSAR 入门 | 01 CP AUTOSAR Overview