ETAS AUTOSAR工具链的使用及集成

描述

1 引言

  在AUTOSAR方式设计车载ECU软件的初期,很多项目团队都采用“基础软件外协开发”的模式。即委托第三方软件公司搭建一个AUTOSAR工程并给出各主要模块的设计示例,再在此基础上去做自己的项目。这样的开发模式有助于快速适应全新的设计方法,缩短项目周期,但也会带来“过于依赖项目组外部资源,一旦出现错误难于解决”等问题。

  本文针对上述痛点,讲述了在ETAS工具链环境下进行工程创建和常用模块集成的全过程,目的是让读者对AUTOSAR工程的产生过程有一个大致的了解,从整体上理清AUTOSAR方式设计车载嵌入式软件的思路。

  由于要“从无到有”地创建一个实用的AUTOSAR工程,该系列之前编写的三篇文章将作为参考文献在文中引用,感兴趣的读者可在“你好旧时光追忆”公众号中查找阅读。

  (1)《从手写代码到AUTOSAR工具链 - RTE入门篇》,以下简称《RTE入门篇》。

  (2)《从手写代码到AUTOSAR工具链 - EcuM应用篇》,以下简称《EcuM应用篇》。

  (3)《从手写代码到AUTOSAR工具链 - BswM应用篇》,以下简称《BswM应用篇》。

2 工具链

  本文所述设计集成过程除MCAL部分采用Infineon和EB联合开发的“EB Tresos”工具外,其余模块均采用ETAS工具链开发,如表2-1所列。

表2-1: AUTOSAR工具链汇总

序号 集成开发环境 子工具 功用
1 EB Tresos EB Tresos MCAL模块设计
2 ISOLAR-AB ISOLAR-A 系统级架构设计
RTA-RTE 接口设计
RTA-BSW BSW模块设计
3 RTA-OS RTA-OS 操作系统设计

3 工程创建和模块集成

  对于ETAS工具链使用者而言,AUTOSAR工程主要是在ISOLAR-AB中创建、设计和集成的。

  下面以VCU项目为例讲解AUTOSAR工程创建过程,其它车载ECU软件可在此基础上做相应改动。

3.1 工程创建

          AUTOSAR工程创建在ISOLAR-A中进行。

3.1.1 文件创建

  按照表3-1创建工程文件夹。

表3-1: 工程文件夹创建

序号 一级文件夹 二级文件夹 三级文件夹
1 hightec_vcu - -
2 isolar_ab_vcu - -
3 mcal_vcu - -
4 vcu src ASW、BSW、CDD、INFRA、IOHWAB、RTE、Target

3.1.2 AUTOSAR工程创建

  双击“ISOLAR-AB V 4.0”图标,弹出图3-1所示的界面,按照图示步骤操作进入ISOLAR-AB工具的主界面。

Infineon

图3-1: ISOLAR-AB工作空间选择

  在主界面中点击“File->New->AUTOSAR Project”新建工程,弹出图3-2所示的界面,按照图中步骤完成工程创建。

Infineon

图3-2: AUTOSAR工程创建界面

3.2 架构设计

          AUTOSAR开发方式中的架构设计即软件组件(SWC)的设计,包括创建软件组件、端口接口设计、内部行为设计等步骤,还需将SWC分别加入部件和ECU。具体操作方法详见《RTE入门篇》。

3.3 配置系统

  系统创建和配置按照下列步骤进行。

3.3.1 部件创建

  按照图3-3和图3-4所示创建部件。

Infineon

图3-3: 部件创建启动

Infineon

图3-4: 部件创建配置

3.3.2 系统创建

  按照图3-5和图3-6所示创建系统。

Infineon

图3-5: 系统创建启动

Infineon

图3-6: 系统创建配置

3.3.3 系统配置

  系统配置包括建立对部件的引用、抽取配置和映射创建3部分。

(1)建立系统对部件的引用

  为上节创建的“System”生成1个子项“Root Software Compositions | Root Sw Composition Prototype”,并将其“SoftwareComposition”的引用配置为“TopLevelComposition”。

(2)系统抽取配置

  配置上节创建“System”的类别。

(3)映射创建

  为上节创建的“System”生成1个子项“Mappings | Mapping”,命名为“SwcToEcuMapping”,并配置“Ecu实例”。

3.4 通信配置

  通信配置主要包括DBC导入、报文发送周期配置、抽取和生成RTA-BSW等操作,完成这些步骤后,与CAN通信有关的BSW模块将自动生成。

Infineon

图3-7: 生成RTA-BSW

表3-2: RTA-BSW后自动生成的BSW模块

序号 一级文件夹 二级文件夹 BSW模块
1 Com Stack Can Modules Can
2     CanIf
3     CanSM
4   - Com
5   - PduR
6 Mode Mgm - ComM
7 Other Modules - ComStack
8   - Ecuc
9   - rba_ArxmlGen

3.5 模式管理配置

  依次进行EcuM和BswM模块的配置,具体参见《EcuM应用篇》和《BswM应用篇》。

3.6 操作系统配置

  操作系统配置分为2部分,ISOLAR-AB中的OS模块配置和RTA-OS中的配置。

3.6.1 OS模块配置

  创建Os模块并完成基础配置。

(1)Os创建

  创建Os模块,再依图3-8删除多余项。

Infineon

图3-8: Os多余项删除

(2)应用模式配置

  按照图3-9的步骤进行。

Infineon

图3-9: Os应用模式配置

(3)计数器配置

  为Os应用配置计数器信息,图3-10为其配置方法。

Infineon

图3-10: Os计数器配置

(4)任务配置

  根据项目需要配置OS任务,图3-11为配置方法,表3-3为任务配置示例。

Infineon

图3-11: Os任务配置

表3-3: Os任务参数配置示例

序号 配置项 配置值 说明
1 ShortName XXX 任务名
2 OsTaskActivation 1 定义该任务最大数量的队列激活请求,1表示在任何时刻任务仅允许单次激活
3 OsTaskPriority 39 任务优先级,数值越大优先级越高(对于TC275单片机)
4 OsTaskSchedule FULL 定义任务的优先处理性
5 OsTaskStackAllocation - 任务手动堆栈分配,以字节为单位
6 OsTaskWaitStack - 激活等待事件时的任务堆栈使用
7 OsTaskBudget - 执行预算,以“浮点数+时基名+单位”表达
8 OsTaskCanCallSchedule - 任务调用或可能调用“Schedule()”时配置为TRUE
9 OsTraceFilter - 描述任务是否被RTA-TRACE跟踪
10 OsTaskAccessingApplication - 访问该对象的应用的引用
11 OsTaskEventRef - 此引用定义了扩展任务可能会响应的事件列表
12 OsTaskResourceRef - 此引用定义了该任务访问的资源列表
13 OsRegSetRef - 该任务用到的寄存器集的引用

3.6.2 RTA-OS配置

  在生成RTE成功后进行。

(1)工程创建

  点击“File->New Project”新建工程,按照图3-12所示配置工程属性。

Infineon

图3-12: OS工程属性配置

(2)文件加载

  按照图3-13所示将“...srcRTEgen”路径下的osNeeds.arxml文件加载进来。

Infineon图3-13: OS工程文件加载

(3)工程保存

  将工程创建时自动生成的ARXML文件命名为“RTAOS.arxml”,并将其保存至“...srcTargetTC275RTAOSconfig”路径下。

(4)通用参数配置

          OS通用参数配置按照图3-14进行。

Infineon

图3-14: OS通用配置

(5)应用模式配置

  按照图3-15将OS应用模式配置为OSDEFAULTAPPMODE。

Infineon

图3-15: OS应用模式配置

(6)中断配置

  按照图3-16配置项目中需要的二类中断。

Infineon

图3-16: OS中断配置

3.6.3 RTA-OS生成

  按照下列步骤生成OS代码。

(1)文件夹创建

  在“...srcTargetTC275”路径下创建表3-4所示的文件夹。

表3-4: RTAOS文件夹创建

序号 一级文件夹 二级文件夹 三级文件夹 四级文件夹 五级文件夹
1 RTAOS config      
2   generated inc    
3     lib    
4     report    
5   integration inc    
6     src    
7 MCAL modules general inc  
8       tricore compiler
9         inc

(2)生成配置

  按照图3-17、图3-18和图3-19的方法依次进行RTA-OS生成配置。

Infineon

图3-17: RTA-OS生成选项配置

Infineon

图3-18: RTA-OS生成输出位置配置

Infineon

图3-19: RTA-OS生成包含路径配置

(3)生成操作

  按照图3-20所示生成OS的代码。

Infineon

图3-20: OS代码生成

3.7 RTE配置

  创建Rte模块并完成基础配置。

3.7.1 Rte创建

  创建Rte模块,再依图3-21删除多余项。

Infineon

图3-21: Rte多余项删除

3.7.2 Rte配置

  依次进行Rte模块的配置。

(1)Rte生成配置

  配置Rte生成参数,图3-22为其配置方法。

Infineon

图3-22: Rte生成配置

(2)Bsw模块实例配置

  在生成RTE成功后进行。

         Bsw模块实例大部分由工具自动配置,前提是其存在Runnable。为后续编译不出错,在EcucValueCollection中无运行函数的模块需要手动配置。

Infineon

图3-23: Bsw模块实例配置

3.8 定点数位域配置

  创建Bfx模块并完成配置。

3.8.1 Bfx创建

  在ISOLAR-B中创建Bfx模块。

3.8.2 Bfx配置

  依次进行Bfx模块的通用配置和内存定位配置。

Infineon

图3-24: Bfx通用配置

Infineon

图3-25: Bfx内存定位配置

3.9 Ecuc数值集配置

  创建Ecuc Value Collection并完成配置。

3.9.1 EcucValueCollection创建

  在ISOLAR-B中创建Ecuc Value Collection。

3.9.2 EcucValueCollection配置

  依次进行EcucValueCollection的配置。

(1)模块关联

  按照图3-26和图3-27所示进行模块关联。

Infineon

图3-26: EcucValueCollection配置启动

Infineon

图3-27: EcucValueCollection配置启动

2任务分配

  依照图3-28将各模块的函数拖到对应的OS任务中。

Infineon

图3-28: EcucValueCollection任务分配

3.10 AUTOSAR平台类型配置

  创建AUTOSAR_PlatformTypes并完成配置。

3.10.1 AR Package创建

  按照图3-29创建名为AUTOSAR_PlatformTypes的AR Package,再按照与之类似的方式为AUTOSAR_PlatformTypes创建1个子AR Package,名称为ImplementationDataTypes。

Infineon

图3-29: AUTOSAR_PlatformTypes AR Package创建

3.10.2 数据类型添加

  以uint8为例,按照图3-30、图3-31、图3-32的步骤添加数据类型。

Infineon图3-30: 数据类型添加启动

Infineon图3-31: 数据类型添加配置

Infineon图3-32: 数据类型参数配置

  按照上述步骤依次添加下列数据类型:boolean、float32、float64、sint16、sint32、sint64、sint8、uint16、uint32、uint64。

3.11 故障追踪器配置

  创建Det模块并完成配置。

3.11.1 Det创建

  在ISOLAR-B中创建Det模块。

3.11.2 Det配置

  依照图3-33进行Det模块的通用配置。

Infineon图3-33: Det通用配置

3.12 RTE生成

  在执行RTE生成前,须进行抽取、生成RTA-BSW、生成BSW等操作。

          RTE生成按照图3-34和图3-35的步骤进行。

  “Additional Commands”处输入(该过程不再生成SWC的内存映射文件):--strict-unconnected-rport-check=off -err=xml -nts --os-define-osenv=RTAOS40 --exclusive-area-optimization=disable --os-output-param=all。

Infineon图3-34: RTE代码生成启动

Infineon图3-35: RTE代码生成配置

3.13 MCAL集成

  下面介绍MCAL的集成步骤。

3.13.1 静态代码集成

          MCAL静态代码的工程路径为“...srcTargetTC275MCALmodules”,头文件和源文件分别存放在“inc”和“src”文件夹下。

            MCAL静态代码从EB Tresos的安装路径下拷贝。

3.13.2 配置文件集成

  配置文件包括MCAL工程文件和单片机各外设模块参数组成的“.xdm”文件,其路径为“...srcTargetTC275MCALconfig”。

  配置文件在添加MCAL模块时由工具自动生成。

3.14 ECAL集成

  这里的ECAL主要包括实现模拟量输入和数字量输入输出信号的抽象,工程路径为“...srcIOHWAB”。

3.15 内存映射集成

  内存映射程序文件采用“xxx_MemMap.h”的命名规范,主要解决将变量、常量和代码放到指定存储空间的问题。

3.15.1 软件组件内存映射文件

  各SWC模块的内存映射文件生成方法如图3-36所示,通常每个新建软件组件仅生成1次即可,之后可删除该命令段。

Infineon图3-36: 软件组件内存映射程序文件生成方法

3.15.2 BSW模块内存映射文件

  各BSW模块的内存映射文件生成方法如图3-37所示(部分有对应SWC的BSW模块按照图3-36的方法操作),这部分文件通常只生成1次,且生成路径不要在程序工程的路径或子路径下,否则容易带来编译错误。

Infineon图3-37: BSW模块内存映射程序文件生成方法

3.15.3 内存映射程序文件路径

  内存映射文件统一存储在“...srcINFRAmemmap”路径下(其余路径下的内存映射文件须剪切至此),且须在工具生成文件的基础上做相应改动。

3.16 复杂驱动集成

  复杂驱动包含板级芯片驱动程序和对复杂传感器和执行器进行操作的软件模块,相关的程序文件均为手写代码,工程路径为“...srcCDD”。

3.17 应用层软件集成

  按照下面的步骤进行应用层软件集成。

3.17.1 应用层文件拷贝

  按照表3-5将应用层程序文件拷贝或更新至工程的指定目录。

表3-5: 应用层程序文件处理

序号 类别 文件(夹)名 文件拷贝位置
1 A2L XXX.a2l(一个或多个) ... oolsA2LGenToolASAPAdr_Filesa2l
2 Arxml XXX.arxml(一个或多个) ...srcASWVcuApp_SWCarxml
3 文件夹 lib(库文件) ...srcASWVcuApp_SWC
4 C XXX.c(一个或多个) ...srcASWVcuApp_SWCsrc
5 H XXX.h(一个或多个) ...srcASWVcuApp_SWCsrc

3.17.2 ARXML文件导入

  如果是首次操作,须按照图3-38所示进行,再执行刷新操作;后续更新只需要在完成文件拷贝后直接刷新工程即可。

Infineon图3-38: 应用层ARXML导入

3.17.3 SWC添加

  将应用层的SWC分别添加到部件和ECU中,抽取。

3.17.4 相关模块设计

  在程序中调用应用层软件的初始化和执行函数。

3.18 其它模块设计与集成

  以上完成了VCU软件的工程创建和必备模块集成的基本工作,表3-6列出了车载ECU软件的一些其它的常用模块,这些将在后续的软文中逐一探讨。

表3-6: 车载ECU软件常用模块

序号 模块名称 功用
1 BOOTLOADER 实现ECU程序的更新
2 XCP 用于参数标定
3 UDS 用于故障诊断
4 NvM 用于参数存储
5 核间通信 适用于多核微处理器的主控芯片

4 补充说明

  下面对上一章的操作过程进行几点说明。

  (1)本文的内容倾向于“工程实践”,仅讲述了“怎么做”而非“为什么这么做”,其中的概念和原理请参考AUTOSAR规范的相关章节。

  (2)前文对软件集成的步骤以模块为单位逐一说明,但在实际操作过程中可能出现“前个模块配置须依赖于后续模块设计到某个步骤”的情况,故在软件设计过程中不必拘泥于文中的次序。

  (3)在进行“从无到有创建AUTOSAR工程”的过程中得到了团队内外很多同行的指点和帮助,从尊重大家工作成果和遵守公司保密性要求的角度考虑,部分重要的技术细节不宜公开发表(工具链开发涉及到的内容很多,我在此领域工作3年已经编写了数千页的工作文档,确实也很难通过一篇文章讲清楚整个过程),如果读者在开发过程中遇到问题,欢迎私下里探讨。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分