浅析AutoSAR APP层在配置工具中的实现

// 作者:KaiTing,2020年2月4日
// 首发公众号:Vehicle软件开发
随着各个公司对AutoSAR的重视,想必越来越多的汽车软件开发人员走向这条路,所以想分享下自己的配置经历,也是对自己初步粗略的配置完整个AutoSAR模块的一个总结,希望能帮助你。
本次分两篇公众号完成,这篇主要介绍下APP层的配置。
对于AutoSAR架构原理和方法论,去参考相关的标准就可以了。而基于AutoSAR的配置工具主要有Vector、ETAS、EB等工具,我这边使用的是Vector工具链进行配置的,虽然这一套配置工具链贵,但是个人感觉用起来还不错,对于ETAS、EB等一些其他的工具链只是听说过还没有使用过,因此下边所以的介绍都是在Vector AutoSAR工具链下完成的。
前期由于初到公司,当时对AutoSAR一脸的懵逼,当时啥都不懂,都不知道这几个字母是什么意思,一开始也没做真正的开发,也错过了公司的培训,当时项目经理安排了一个简单的任务,在现有的工程上熟悉AutoSAR的APP层怎么做(当时连APP什么意思也不懂),当时的AutoSAR还是3.x版本,COM Stack的配置还是独立于BSW层的配置在Geny中单独做的,在同事的帮助下就稀里糊涂的开始了配置工作。在同事的一步步帮助下也知道了怎么建立Port Interface、Data Element、Data Type等,当时只是知道怎么建立,根本就不知道为啥,一步步做到了生成代码,进行代码编写、功能实现。
当时看到公司那些用脚本做的编译文件,感觉太牛逼了,当时在想还能这么编译文件(毕竟那个时候刚工作,之间都是在Keil中直接写代码、编译)。当时在开发简单的APP编译的时候老是出错,当时还不知道在APP层改变的时候,要重新将Rte生成,所以生成完后发现代码的Port没有,后来才知道在加入Port后,要将其Mapping到对应的函数中也就是Port Access属性(决定了在哪一个函数中实现改Port的功能,具体体现是在生成的函数中会注释Port的使用),然后做了PortAccess的修改。由于新建了一个SWC,定义了一个Port,又将该信号mapping到了CANSignal上,生成代码后,在同事的帮助下稀里糊涂的改了Build文件,几番努力,终于编译没问题了。然后下到板子了,看到程序可以正常跑就放心了。
这大概就是第一配置过程,一直稀里糊涂的。后来慢慢的开始熟悉APP的配置,也看了一些文档,逐渐对整个APP层配置的东西有了初步的理解,当时知道了在APP层要建立Port Interface、Data Element、Data Type、Runnable,知道了SR Port和CS Port的使用,知道了如何建立与CANSignal的Mapping以及ServicePort的Mapping.,也知道了Runnable要Mapping到一定的Task内。后来由于测试项目的代码,偶尔去看一些APP配置的东西,主要经历花在了熟悉Debug,解决bug上,那段时间也对Debug工具和调式代码熟悉了。
没过多久公司来了新同事,让我帮她熟悉APP的配置,我当时也很慌,自己那时候也不是很懂,并且好多时间没做APP的配置,基本忘记了。就拿出自己写的文档看了下,基本都熟悉起来了,突然感觉写文档记录自己的工作是多么重要,毕竟好记性不如烂笔头。想到当时自己的配置过程,也知道了一个新人刚接触AutoSAR的茫然,所以一步步在帮她配置,避免了我走过的好多弯路,自己也在更深入的熟悉。虽然在这次APP层的配置中后来也遇到了一些问题,但基本都解决,当时编译、调式成功的那一刻感觉很高兴,自己也更自信了。后来,在APP配置上也慢慢熟悉起来。
直到今天还在探索APP的配置,简单的总结下在APP中SWC从无到有的配置过程中的流程:
①建立Project,定义Project的基本属性,包括代码生成的路径,引用的配置SIP等,这部分内容会在购买配置包的时候供应商都会给你,按照参考手册建立即可。
②一般情况下,APP层的配置在BSW层能够完成一定的基本功能才开始,假设BSW层的基本功能已经满足。这时候根据需要选择建立自己的APP类型,其中Composition Type可以包含多个SWC,选择一个特定类型的SWC(ApplicationType、IOHardwareAbstraction Type、Cpomplex Driver Type等)具体的根据自己需求选择。
③定义好特定的SWC后,定义SWC的函数,多数情况下一个SWC有三种类型的函数,初始化函数(Init Runnable)、周期函数(CyclicRunnable)以及和CS相关的Invoke函数。一般每一个SWC有一个初始化函数一个周期函数。
④定义数据类型,根据具体的需求定义所使用的数据类型,可以使用基本的类型也可以定义具体的使用的类型(类似于Typedefine功能),同时定义具体的结构体、数组、枚举等类型,对于类型的定义规则每个开发公司不一样,按照公司或者相关标准文件即可,定义数据类型的最大值,最小值、比例系数和偏移量等。
⑤定义数据元素,数据变量,并将具体的类型与数据元素关联。
⑥定义Port Interface,如果是SR Port选择数据元素,CSPort定义相关的操作函数和数据元素。并明确Port在SWC的方向。SR Port要规定它的操作函数。定义PortAccess属性,是否使能Update属性,需不需要E2E保护,对于E2E的Port要选择E2E实现的Library。CS Port要与对应的函数建立调用关系。如果是CAN Signal相关的Port建立与Signal的Mapping。如果是底层CS相关的Port 在配置软件中建立Mapping。其他Port直接在SWC之间建立连接。
⑦选择连接的Port在不同SWC之间有一致的初始值,并校验APP中SWC配置是否有错误,并进行修改。
⑧将SWC的Runnable Mapping到具体的Task中。
⑨生成SWC模块、Rte模块、OS模块的代码。
⑩进行代码实现、编译、调试。
下面是个人感觉需要注意的事项:
①在建立Port的时候要选择实现它的函数,否则在Rte生成的时候可能无法关联到正确的Port,之前遇到过,直接在Rte定义的头文件中忽略了关联的Port,只是赋了一个Init值;
②数据类型的定义要注意具体的Basic Type以及Implementation Type,看清楚是直接用Basic Type还是TypeDefine后的Type;
③在做APP层的Port连线的时候,一定要注意两个Port的方向,同时保证内部的数据属性完全一致,尤其是在做和CAN相关的信号Mapping的时候,一定要保证数据的一致,初始值的一致以及基本类型的一致;④CAN信号可以直接在APP中自动生成所有的Port属性,完成自动部署,这个功能对批量处理CAN信号相关的Port十分方便,但是最好在CAN Signal Fixed后去做,不然修改后,重新自动生成,如果不小心可能生成重复的内容,本人遇到过,删起来很麻烦。
⑤如果是结构体相关的CAN信号,一定要把CAN信号在DBC中做成Group的形式。
⑥对于CSPort如果是APP层之间的可以直接连线,而APP和BSW层之间的接口要通过Mapping的方式去做,如果BSW层的CS Port已经定义了可以直接在APP层的SWC中做自动生成,个人感觉这个功能比较方便。⑦如果在APP层有CS Port要注意Runnable在Task中的Mapping,AutoSAR的OS来源于OSEK的OS,其中有两种类型的Task,分别是Basic和Extended,其中Basic只支持Init类型的Runnable和一致周期的Cyckic Runnable,而CS的Port属于Invoke类型的Runnable,需要放在Extended Task中使用。
⑧根据具体的情况选择Port的Update属性,用来判断是否使用该功能。⑨在AutoSAR4.版本中NVComponennt要结合NVM配置的Block进行合理的使用。
⑩在多核下,进行核间通信的Port如果想使用SpinLock和IOC功能,在RTE中进行IOC使能即可,同时Port的Update属性要使能。
以上大概就是在整个APP层配置过程中的经历,可能有遗漏,在后续的公众号更新中如果发现相关的遗漏会进行更新。

作者简介&标签:

(0)

相关推荐

  • 【新提醒】初识HC32L072开发板

     本帖最后由 jinglixixi 于 2020-9-12 21:11 编辑 HC32L072开发板是一款新投入市场的开发板,有多新在我接到时连出厂DEMO都没装,下面看看主角的真容吧,如图1所示. ...

  • 圈外人看E2E保护

    安全在每个领域都是一个永恒的话题,汽车也不例外,而随着最近几年汽车电动化.智能化和网联化的发展,汽车安全也越来越受到用户及开发人员的重视,安全的要素也是多方面的,例如用户可能关心在使用车机系统时的隐私 ...

  • 一文了解汽车嵌入式AUTOSAR架构|附下载

    AUTOSAR (Automotive Open System Architecture)是一个由丰田.宝马.大众.福特.戴姆勒.通用.博世和 PSA 等汽车巨头在 2003 年成立的的联盟,Auto ...

  • 如何高效学习AUTOSAR?

    如何高效学习AUTOSAR?

  • Autosar VFB简介

    虚拟功能总线是对AUTOSAR提供的所有通信机制的一种抽象,是所有软件组件进行交互的桥梁.通过虚拟功能总线,软件组件之间的通讯细节被抽象出来,软件组件通过AUTOSAR定义的接口对通讯进行描述,即可最 ...

  • 从(Autosar MBD 功能安全)的角度谈谈汽车电子开发

    从(Autosar MBD 功能安全)的角度谈谈汽车电子开发

  • AUTOSAR简介:愿景、合作关系和目前的功能简述

    AUTOSAR是AUTomotive Open System ARchitecture的缩写,它是一个具有标准规格的分层架构,由宝马集团.博世.大陆.戴姆勒.福特.通用汽车.PSA集团.丰田和大众等公 ...

  • ip命令网络配置工具参数选项有什么?linux数据库学习

    ip命令是iproute软件包中的一个强大的网络配置工具,用于显示或管理Linux系统的路由.网络设备.策略路由和隧道.ip命令是Linux运维工作中常会用到的命令,命令的熟练掌握对于Linux运维工 ...

  • 以乡土史为视角浅析家国情怀在历史教学中的渗透

    摘 要:家国情怀作为高中历史课程的五大核心素养之一,其在高中历史教学中的重要地位及现实意义是不言而喻的,特别是对培养中学生新时期社会主义核心价值观具有重要的指导意义.为了更好地实现家国情怀这一核心素养 ...

  • OpenCore Configurator 2.39.0.0中文版 :黑苹果OC配置工具

    OpenCore Configurator 一款黑苹果OC引导配置工具,通过简化的图形界面帮助您为 OpenCore EFI 引导加载程序创建自定义配置文件.支持OpenCore 0.7.0版本. O ...

  • 浅析各版本《射雕》中杨康的特点,相信是萝卜白菜各有所爱

    <射雕英雄传>因故事太精彩,所以被改编成影视剧也有许多个版本了,基本上每隔十年左右便会出一版,而无论是港版.台版.大陆版还是新加坡版,都可以说是各放异彩,大有特色,无论是哪一个版本都有喜欢 ...

  • PS的液化工具中“左推工具”是如何来使用的?

    PS的液化工具中有一个"左推工具",它是可以很快的对图像中人物进行塑造,赶紧来学习一下吧! 1.打开素材图片之后,先将图层转换为智能对象,右键图层--转换智能对象. 2.然后点击上 ...

  • AI软件线段工具中直线工具的使用方法是什么?

    直线工具是AI软件线段工具的其中一个,直线工具是直接画直线的,操作相对来说还是比较简单的,下面看小编的实战操作吧! 1.打开软件,在左侧工具栏中点击线段工具,默认是直线工具. 2.按住鼠标左键不松,拖 ...

  • 生命密码浅析:挖掘隐藏在你性格中的秘密

    数字具有精神上的意义 可以揭露万事万物背后的真理 --毕达哥拉斯 前几周大家跟随我,一同学习了一些古典占星与塔罗知识,满屏幕的干货是不是让大家有点"消化不良"了呢? 正巧,前几日, ...

  • 什么样的星盘配置感情中喜欢一味索取?

    提到感情中的索取,基本上可以分为两类-- 一类是索取物质:另一类是索取感情. 前者可以参考「欢乐颂」里的樊胜美,喜欢明里暗里向另一半暗示给自己买奢侈品等.虽然樊是受家庭所累.身不由己,但是依然摆脱不了 ...

  • App inventor(android开发工具)中文入门使用手册

    APP Inventor很强大!只要你敢想,那么就没有你做不出来的.利用它你可以创造出任何你想要的应用.通常在开始进行开发的时候,人们可以做出 <MoleMash>这样的游戏,或者是那种恶 ...