CP AUTOSAR APP 简介

汽车安全 2年前 (2021) admin
880 0 0

前言

在整个CP AUTOSAR架构开发的软件产品中主要分为APP、RTE、BSW三个架构层次,本文主要对CP AUTOSAR 中APP的设计开发做详细的介绍。


所有分享内容可在《搞一下汽车电子》后台回复 “搞一下汽车电子”,或查看菜单栏



概述


在CP AUTOSAR 中APP位于CP AUTOSAR架构的最上层,如下所示:

CP AUTOSAR APP 简介

APP在CP AUTOSAR 架构中不依赖于任何的硬件电路,主要是根据业务需要进行开发逻辑应用,这些应用一般都是一些逻辑的算法,比如VCU的正常控制策略、BMS的SOC估计、MCU的电机控制等都是在APP实现的逻辑,从而实现适配不同的车型(Vehicle)、适配不同的供应商(ECU)、适配不同的硬件(MCU)的应用开发。

CP AUTOSAR 中APP的开发一般包含两大部分,首先是基于设计工具(AUBASS的AUBIST Configurator、维克多的Developer等)开发APP中相关的SWC组件,在SWC定义相关的Internal Behavior以及跟其他SWC以及BSW交互的接口。

最后基于在开发工具中设计的SWC的ARXML文件导入到Simulink中进行模型搭建或者在开发工具中生成该SWC的模板代码进行Coding。

对于一个SWC的开发主要分为下面三部分的内容SW-Component Type Description、SW-Component Internal Behavior Description以及SW-Component Implementation Description。如下图所示:

CP AUTOSAR APP 简介

SW-Component Type Description属于最顶层的SWC的描述,描述内部最小的SWC所使用的接口、数据等,描述SWC间的交互和通信关系,定义SWC的分层结构。

SW-Component Internal Behavior Description主要定义RTE层面的使用对象,定义RTE的调度实体,定义相关的触发事件,定义Timing相关的交互参数。

SW-Component Implementation Description最下层的SWC的描述,根据定义的行为产生相关的代码,根据SW-Component定义的交互接口产生相关的接口函数和数据定义,产生RTE交互的接口API以及资源使用。


APP 中 SWC 元素介绍



CP AUTOSAR 中对于APP中SWC的开发定义了许多元素,对于SWC的开发者而言主要是在开发APP过程中定义这些元素就可以。

常见的APP开发中我们需要关注的元素包括:Software Component、Composition、Port Interface、Runnable、Data Element、Data Type、Connector、Compu Methods、Type Mapping Set、Data Mapping、E2E Protection等,下面就分别对上面的元素做主要介绍:

Software Component

Software Component也就是我们常说的SWC,在CP AUTOSAR开发中,一个SWC就是一个软件组件,定义了不同类型的软件单元的行为和交互接口,一般一个SWC用一个xml文件描述,在代码生成中一般生成一个C文件,包含了函数、接口、变量的相关定义。

在AutoSAR中SWC一般包括:Application、Sensor Actuator、I/O Hardware Abstraction、Complex Driver、Non-Volatile Component、Service components类型的SWC设计。

CP AUTOSAR APP 简介
 
其中Application、Sensor Actuator这两个SWC组件一般是APP层开发应用逻辑的主要组件负责传感器输入、逻辑算法以及控制执行器的输出;I/O Hardware Abstraction 主要是对BSW层I/O Hardware Abstraction进行设计和开发,实现MCAL IO Driver的抽象,达到APP的IO使用与MCAL(芯片)的隔离;

Complex Driver是CP AUTOSAR中复杂驱动模块开发的SWC,在CP AUTOSAR架构设计开发中位于BSW层,用于没有标准化的外围硬件IC芯片的开发;Non-Volatile Component主要实现BSW层NvM与APP之间的交互,定义Nv Data存储方式、Nv Block的映射和配置;Service components用于服务模块的开发,主要满足对一些功能的服务调用。

Composition

Composition一般是多个SWC的集合,在CP AUTOSAR开发配置过程中可以一个包含多个SWC的Feature称作是一个Composition,也可以把整个ECU中所有的SWC放到一个Composition中。设计好的SWC一旦放入到了对应的Composition中也就是具备了应用和实现的属性,可以用作生成C文件以及和各个SWC之间以及系统信号或者BSW模块进行交互。

Port Interface

一个Component有明确定义的Port,通过这些Port, Component可以与其他Component交互。一个Port总是只属于一个Component并且表示Component和Component之间的交互。

为了表示Port传递的Services(CS Port) or Data(SR Port)的provided或者是required方式,引入了Interface的概念,Port的类型由Interface定义。

通常而言Interface只是定义了一些操作和数据元素或者一些Operation服务,一旦Interface具备了Provided或者Received在SWC中便是RPort或者PPort。

Port与Interface的关系如下,从左到右依次是Sender Port(发送数据,代码中一般以Rte_Write_XXX存在)、Receive Port(读取获得数据,代码中一般以Rte_Read_XXX存在)、Server Port(提供服务函数代码中一般以函数形式存在)、Client Port(调用服务函数, 代码中一般以Rte_Call_XXX存在)。

CP AUTOSAR APP 简介

Runnable

一个函数的实体,简称Runnable,是一个承载你代码的C函数。Runnble在SWC设计中一般包括Init Runnable、Cyclic Runnable、Trigger Runnable。

对应的每个Runnable都有对应的触发源,Init Runnable一般在系统运行中初始化一次,可以作为Init的事件放在初始化的Task中执行,Cyclic Runnable一般采用周期的Alarm或者schedule Table实现,Trigger Runnable一般采用一个事件或者接口调用实现。

Data Element

数据元素决定了可以通过端口的数据类型以及数据。数据元素一般自己定义,数据类型最终会映射Interface上用于相互SWC之间的数据通信。

Data Type

主要定义传达数据元素的类型,主要包括Base Type(常见的数据类型,Uint/int/float等)、Implementation Data Type(IDT,主要是对基本类型的特殊定义,类似于Type define的功能)、Application Data Type(ADT,用于实际的物理类型,具备了真实的物理数据涵义)

Connector

为了定义软件组件相互通信,它们的端口必须通过所谓的Connectors连接。Connector实现软件组件之间的发送方/接收方和客户端/服务器通信。Connectors只能在两个Port之间绘制,如果它们的Port接口兼容,下图展示了Connector的实际

CP AUTOSAR APP 简介

CompuMethods

定义数据元素内部数据的转换关系,通常一些,通过CM,可以实现数据元素的转换,例如简单的线性运算y=ax+b,就是在CM中配置a(factor)和b(offset)实现的。同时对于一些枚举元素的定义也可以在CM中设置

TypeMapping Set

建立数据类型的Mapping关系,通常在使用ADT和IDT中,两者之间的映射关系就是在Type Mapping Set中实现的。

DataMapping

在SWC中将CAN、LIN、ETH等Com层的信号与对应的SWC的PortInterface中的数据元素建立关联,实现对系统信号的读写操作。

E2EProtection

对SWC的Port之间的交互增加E2E的配置,实现数据的E2E保护。


SWC 与其它模块的交互



设计完成SWC以及SWC中的各个元素之后,需要定义SWC的交互,在SWC层面进行的交互主要包含了两类,一类是函数调用(Init Runnable、Cyclic Runnable、Trigger Runnable),另一类就是接口或者通信数据的交互。

函数的调用一般基于Alarm或者Schedule Table进行,无论是Alarm还是Schedule Table我们只要把需要的Runnable放到Alarm激活或者Schedule Table激活的Task就可以。

下图展示了Alarm激活的例子,对应的Cyclic Runnable(分别为10ms和50ms的情况)在配置中会根据调用的周期生成相关的Alarm,最终OS使用的硬件计数器的时间达到Alarm匹配的数值的时候激活10ms或者50ms Runnable对应的Task(对应的10ms或者50ms的Runnable已经在RTE中映射到了对应的Task),从而实现Runnable的周期调用。

CP AUTOSAR APP 简介

SWC除了函数的调用剩下的就是接口的交互,在SWC中数据接口的交互主要包含了三类SWC与外部ECU的SWC交互、同一个ECU内部SWC与SWC的交互、同一个ECUSWC与BSW的交互。

SWC与外部ECU的SWC的交互一般通过系统信号实现(CAN、LIN、ETH等),交互中一般需要通过两个ECU的Communication协议栈,如下图所示:

CP AUTOSAR APP 简介

同一个ECU之间的数据交互一般采用的是CS或者SR接口进行,一般来说采用CS接口使用的是函数传参的形式,而采用SR接口一般采用的是操作RTE中的全局变量实现的,如下所示,左侧为CS接口,右侧为SR接口

CP AUTOSAR APP 简介

同一个ECU中SWC与BSW的交互通常需要CS实现数据和服务的调用,如下所示,这一类的交互需要我们根据需要自己在配置工具内部做SWC和BSW接口的Mapping实现。

CP AUTOSAR APP 简介


SWC 开发过程


下面以Vector的工具开发链简单介绍下APP的开发流程

1、在Davinci Configurator建立Project,定义Project的基本属性,包括代码生成的路径,引用的配置SIP等,这部分内容会在购买配置包的时候供应商都会给你,按照参考手册建立即可。

2、一般情况下,APP层的配置在BSW层能够完成一定的基本功能才开始,假设BSW层的基本功能已经满足,其中内部已经建立好了OS和RTE以及MCAL等一些基础的模块。

这时候根据需要选择建立自己的APP类型,首先建立一个该ECU的Composition,其中Composition Type可以包含多个SWC,选择一个特定类型的SWC(Application Type、IOHardwareAbstraction Type、Cpomplex Driver Type等)具体的根据自己需求选择。

3、定义好特定的SWC后,定义SWC的函数,多数情况下一个SWC有三种类型的函数,初始化函数(Init Runnable)、周期函数(Cyclic Runnable)以及和CS相关的Invoke函数。一般每一个SWC有一个初始化函数一个周期函数。

4、定义数据类型,根据具体的需求定义所使用的数据类型,可以使用基本的类型也可以定义具体的使用的类型(类似于Type define功能),同时定义具体的结构体、数组、枚举等类型,对于类型的定义规则每个开发公司不一样,按照公司或者相关标准文件即可,定义数据类型的最大值,最小值、比例系数和偏移量等。

5、定义数据元素,数据变量,并将具体的类型与数据元素关联,如果类型中使用了转换,需要对特定的数据类型添加CM。

6、定义Port Interface,如果是SR Port选择数据元素,CS Port定义相关的操作函数和数据元素。并明确Port在SWC的方向。SR Port要规定它的操作函数。定义Port Access属性,主要是将特定的接口映射到实现的Runnable中,只有添加了该映射,才会生成对应的接口函数名供SWC内映射的函数使用,定义S是否使能Update属性,需不需要E2E保护,对于E2E的Port要选择E2E实现的Library。

CS Port要与对应的函数建立调用关系。如果是CAN Signal相关的Port建立与Signal的Mapping。如果是底层CS相关的Port 在配置软件中建立Mapping。其他Port直接在SWC之间建立连接。

7、选择连接的Port在不同SWC之间有一致的初始值,并校验APP中SWC配置是否有错误,并进行修改。

8、在RTE中将SWC的Runnable Mapping到具体的Task中。

9、生成SWC模块、Rte模块、OS模块的代码。

10、进行代码实现、编译、调试。


本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

进群、工具链评估、培训、集成等其他问题,也可以随时与我们联系。

CP AUTOSAR APP 简介

CP AUTOSAR APP 简介

联系我们

[email protected]



“ 转发 ”  “ 在看 ” 支持一下吧 END



原文始发于微信公众号(搞一下汽车电子):CP AUTOSAR APP 简介

版权声明:admin 发表于 2021年11月16日 下午3:08。
转载请注明:CP AUTOSAR APP 简介 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...