前言

本系列请点击:《搞一下CP AUTOSAR入门》

所有系列请点击:《汽车电子系列分享》

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

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

概述

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

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。如下图所示:

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设计。

其中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存在)。

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的实际

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的周期调用。

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

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

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

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

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&AP AUTOSAR的其他内容,也可以随时与我们联系。

联系我们

微信:shactiontech
邮箱:support@shactiontech.com

搞一下CP AUTOSAR 入门 | 09 CP AUTOSAR APP 简介相关推荐

  1. 搞一下CP AUTOSAR 入门 | 07 CP AUTOSAR ComM 详解

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇中已经对AutoSAR中模式管理NvM做了详细的介绍,这篇主要介绍的是Au ...

  2. 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...

  3. AUTOSAR AP与 CP 有什么差异?

    1标准概况不同 1.1 时间 在2003年AUTOSAR组织刚成立的时候,只有一个AUTOSAR标准,没有AP(Adaptive Platform)与CP(Classic Platform)之分. 在 ...

  4. 【Ap AutoSAR入门与实战开发02】-【Ap_s2s模块01】: s2s的背景

    总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 s2s的背景? 2 AUTOSAR 方法应支持车辆的无缝开发 2.1 面向服务的ECU的解读 2.2 面向信号的ECU ...

  5. 【Ap AutoSAR入门与实战开发03】-【Ap_s2s模块02】:到底什么是基于信号,什么是基于服务,两者的主要区别是什么?

    总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 基于信号的通信 2 基于服务的通信 3 面向服务设计举例 在[Ap_s2s模块01]中我们大概讲述了,为什么要有s2s ...

  6. AutoSAR入门到精通讲解-总目录

    建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化.规范化.安全化.快速化和经济化 总目录 一.AutoSAR-CP 1.AutoSAR-CP介绍 2.AutoSAR-C ...

  7. linux实验试题 cp,cp命令实验,cp命令

    cp命令实验,cp命令 创建条件 [root@localhost ~]#mkdir /source [root@localhost~]#mkdir /target [root@localhost~]# ...

  8. linux cp{,bak},Linux中cp覆盖不提示

    cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的. 1. 把a目录下的文件复制到b目录 cp –r a/* b 2. 执行上面的命令时,b存在的每个文件都会 ...

  9. 详解AUTOSAR:什么是AUTOSAR?(理论篇—1)

    目录 1.为什么需要AUTOSAR 2.AUTOSAR简介 3.AUTOSAR的发展历程及应用现状 4.AUTOSAR的特点和优势 终于要讲到心心念念的AUTOSAR系列专栏了.第一次知道AUTOSA ...

最新文章

  1. QlikSense移动端使用攻略
  2. Linux的实际操作:文件目录类的实用指令(touch cp)
  3. node获取服务器cpu信息,听说你不知道如何监控Node服务的内存?
  4. jdk1.8之lambda表达式
  5. 红橙Darren视频笔记 Activity启动流程(API28)
  6. 蔚来ET5将于2022年9月开启交付 补贴前售价32.8万元起
  7. 解决:IE中不能自动选择UTF-8编码的解决方法
  8. Javascript下拉刷新
  9. 三种编码器协议(Endat\BISS\SSI)
  10. 基于I2C协议的AHT20温湿度传感器的数据采集及OLED屏显示
  11. 第07课:项目实战——自己动手写一个神经网络模型
  12. 迅猛快捷——基于Gtid搭建Mysql主从,gtid实现主从切换自动同步——@$23$人鱼的眼泪
  13. 4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
  14. 深度学习-11:神经元、神经网络、人脑和卷积神网络
  15. 开关量模块在报警系统中的应用
  16. 2018春考计算机技能考试题目,(完整版)2018年山东春季高考技能考试信息技术类专业考试样题...
  17. iOS 即时视频和聊天(基于环信)
  18. 【python】pandas库pd.DataFrame.corr、numpy库np.corrcoef求解相关系数
  19. 让孩子赢在起跑线。。。
  20. 网络软件测试的IP地址,如何快速查出网内空闲IP地址

热门文章

  1. mysql spring 整合日志_Spring整合log4j日志组件(转)
  2. Android应用中MVP最佳实践 Jude95
  3. tomcat出现的问题2
  4. 攻防世界-逆向game
  5. 地理信息系统(ArcGIS)在水文水资源、水环境中的实践技术应用及案例分析
  6. 升级xcode7之后原有项目无法连网的解决方案
  7. git从gitHub下载代码
  8. PowerPoint演示文稿软件的使用-专项训练1
  9. 30天自制操作系统U盘启动
  10. ​​​​​​​微信怎么快捷回复?