编辑推荐: |
本文主要介绍了AUTOSAR的系统架构及相关接口,提出了从ARXML文件提取数据字典内容、生成接口模型、控制模型搭建、模型代码生成和应用代码释放的全部过程。。
希望对您的学习有所帮助。
本文来自于微信公众号智能座舱与HMI设计,由火龙果软件Linda编辑、推荐。 |
|
AUTOSAR逐渐成为各整车厂和零部件供应商的主流开发架构,并应用于车载域控制器应用软件开发中,但其开发流程还不够完善,缺少通用、全面且高效的应用软件开发方法。
为了解决该问题,基于AUTOSAR的基本理论,下文阐述了AUTOSAR的系统架构及相关接口,提出了从ARXML文件提取数据字典内容、生成接口模型、控制模型搭建、模型代码生成和应用代码释放的全部过程。
所提出的车载域控制器应用软件开发方法,每个环节均采用成熟开发工具或编写自动化脚本实现,保证方法的通用性的同时,可以保证软件的开发质量,提升软件开发效率,从而降低开发成本。
1 AUTOSAR架构与接口
1.1 系统架构
如图1所示,AUTOSAR的系统架构将运行在微控制器上的软件分为3层,分别为应用软件层(ASL)、运行环境层(RTE)和基础软件层(BSW)。其中,BSW包括服务层(Servicelayer)、ECU抽象层(ECUabstractionlayer)、微控制器抽象层(Microcon⁃trollerabstractionlayer)和复杂驱动(Complexdriver)。
图1 AUTOSAR系统架构
ASL由多个软件组件(SWC)组成,由可运行实体(Runnable)进行SWC通信接口配置。其中,可运行实体的触发条件包括定时时间、数据接收事件、异步服务调用返回事件、操作调用事件、数据接收错误事件以及数据发送完成事件等。
RTE位于ASL和BSW之间,是虚拟功能总线接口的实现。主要负责SWC之间以及SWC与BSW之间的通信。每个ECU的RTE配置因其软件组件具体需求的不同而不同。同时,RTE层还可以防止软件组件直接访问基础软件。
在RTE层中,若采用发送者/接受者(Send/Receiver)通信机制,实现的是缓存访问模式。在进入可运行实体之前RTE为数据建立副本,可运行实体在运行过程中,仅对副本进行操作,实际数据不发生改变。在可运行实体运行结束后,RTE将副本中的数据复制至实际数据地址。
在BSW中,微控制器抽象层的目的是实现上层软件与微处理器型号解耦,包含微控制器(MCU)中内部外设的驱动和MCU内存映射的外部设备的驱动。
ECU抽象层的目的是使上层软件与ECU硬件设计解耦,包含ECU板上外部设备的驱动,以及内部设备与外部设备的接口。
服务层包括系统服务、存储器服务和通信服务,目的是为应用层提供可用的服务接口。复杂设备驱动主要提供复杂传感器和执行器的驱动。
1.2 AUTOSAR接口
AUTOSAR的接口共分为3种。分别为标准接口、AUTOSAR接口和标准化的AUTOSAR接口。其中,标准接口和标准化的AUTOSAR接口定义不可更改。如图2所示,在AUTOSAR架构中,ASL与RTE之间采用AUTOSAR接口,服务层与RTE之间采用标准化的AUTOSAR接口,其余采用标准接口。
在数据处理机制中,数据的读写操作可分为显式(Explicit)和隐式(Implicit)2种模式。在执行Runnable期间,显性接口的数据收发操作由RTE直接触发,隐性接口的数据收发不会在Runnable执行期间改变数据状态,写入数据将在Runnable执行结束后发出。
图2 AUTOSAR架构访问接口
2 应用软件开发流程
基于AUTOSAR的车载应用软件开发流程如图3所示,应用软件完整开发步骤为:
(1)将初始ARXML(AUTOSARXML)文件导入AUTOSAR开发工具,以执行符合性校验。一旦校验通过,将进行配置工作,包括添加初始化触发模块和Runnable配置ARXML。根据项目需求,选择并配置所需的输入和输出接口,同时确定其显式或隐式特征。
(2)将配置完成的ARXML文件导入信息提取工具,提取出数据字典和类型定义文件。由于MATLAB/Simulink是车载应用软件常用的模型开发工具,同时具有ARXML文件信息提取及校验功能,因此在该步骤中可作为AUTOSAR符合性校验的数据信息提取工具。
(3)创建或更新接口模型。判断模型是否为初版,若是初版,则采用Create命令创建接口模型,否则采用update命令更新接口模型,并进行校验。
(4)搭建控制模型,并进行AUTOSAR校验。校验通过后,通过AUTOSAR选项下的代码生成(Generatecode)选项进行模型代码生成,并根据运行错误信息修改模型,直至成功生成代码。
(5)编写自动化批处理脚本,自动提取应用软件编译对应的代码文件。
(6)将生成的应用层软件代码文件与基础软件代码进行编译,若编译过程中报错,则需要根据报错信息,修改模型及代码,直至代码文件编译成功。
(7)将编译成功的代码文件释放至下游部门,进行域控制器或中央计算平台程序编译开发。以整车控制应用层软件开发为例。
首先,基于步骤(1)对整车控制应用层软件所需的各SWC初始ARXML文件进行校验并完成Runnable配置,导出配置完毕的ARXML。
其次,基于步骤(2)提取出每个SWC所对应的数据字典和类型定义文件。
基于步骤(3)创建或更新应用软件接口模型,搭建应用软件模型,添加项目整车控制所需的功能模块,如高压上下电模块、扭矩控制模块或者换挡处理模块等,并进行模块间的信号传输连线配置,配置完毕后运行模型,直至模型运行通过。
基于步骤(4)校验模型并生成代码。最后,将所有的SWC均完成代码生成后,基于步骤(5)~(7)进行代码编译和释放。
图3 应用软件整体开发流程
上述实例为动力域整车控制应用软件开发流程,还可依据此开发流程进行空调控制应用软件开发、车身域应用软件开发等,该方法适用于所有基于CPAUTOSAR开发的车载域控制器应用软件,具有通用性和全面性。
同时,由于采用了统一的标准,该方法显著提升了软件开发效率和应用软件的复用性,有效缩短了开发周期,提高了开发效率。
3 接口模型创建及更新
3.1 ARXML文件校验及配置
在进行应用层软件开发之前,需从上游的整车制造商或研发部门获取符合AUTOSAR规范的初始ARXML文件。以下为在AUTOSAR工具中进行文件处理的配置和步骤:
(1)查看ARXML文件属性,解除只读和加密等属性,将初始ARXML文件导入AUTOSAR工具(配置ARXML,进行ARXML内部接口连接及显隐性接口定义等)。
(2)对文件进行Validation校验,判断其是否符合AUTOSAR的规范性要求,若不符合要求则通知上游部门修改。
(3)根据软件组件SWC具体功能需求添加Runnable模块,如图4所示。需要在初始ARXML文件中添加初始化(Init)模块和周期性可运行实体模块,并配置Runnable属性及与接口的关联关系。配置收发接口时需要根据项目需求选择显隐式。
(4)完成配置后再次进行校验,校验通过后导出ARXML文件用于后续开发。
图4 ARXML文件配置Runnable
3.2 数据字典内容提取
数据字典是重要的信息存储工具,其存储了Simulink模型中的接口定义信息和数据信息。在进行代码生成时,Simulink模型与数据字典一般并列存在。因此在代码生成前需从ARXML中提取数据字典信息。
将配置完成的ARXML文件导入MATLAB,提取出运行软件实体、接口和应用软件组件的相关信息,获得所需数据字典mat文件和m文件。其中,m文件为导入ARXML文件过程中自动生成的文件,mat文件是将MATLAB的工作区(Workspace)中自动加载的内容另存为mat文件得到。
数据字典mat文件中包含了模型中各信号的定义,如信号的基本类型(Basetype)、信号的描述以及进行代码生成时的头文件等。关于ARXML文件导入MATLAB方法详见下文描述。
3.3 接口模型生成
在进行接口模型生成之前,首先需判断其是否为首版软件。若为首次建立接口模型,则需要将ARXML文件导入模型开发工具,生成全新的顶层接口模型。
具体在MATLAB软件中实现步骤如下。
(1)在ARXML所在目录文件下,在命令行输入如下命令,创建顶层接口模型,其中artest为对应ARXML文件名称:
{Ar=arxml.importer‘(artest.arxml’);createComponent AsModel(Ar,‘/SoftwareTypes/ComponentTypes/ artest’,‘ModelPeriodicRunnablesAs’,‘FunctionCallSubsystem’)}
(2)校验模型。在模型界面中,选择APPS(APPlicationService)目录下的AUTOSAR组件设计器(Componentdesigner),在代码映射(Codemappings)中选择验证代码映射(ValidateCodemappings)进行校验,验证AUTOSAR的组件配置。
校验结果为成功时可继续进行软件开发,如失败则需要更改ARXML文件后再次执行该过程,直至校验成功后,保存新生成的模型。若需要基于已有模型进行ARXML文件更新,则在MATLAB中接口模型更新的实现方式为:
(1)加载上一版本模型对应的数据字典,打开上版模型并运行,模型运行通过后,对模型进行更;
(2)在命令行窗口输入如下语句,更新模型: {%将ARXML文件放在对应的工程目录文件下 %Ar=arxml.importer‘(artest.arxml’);updateModel(Ar,‘artest’);}
(3)更新完成后,根据Simulink生成的更新报告,删除其中需手动处理的接口,并保存模型。
(4)重新加载新的数据字典内容,并按照前文所述步骤,对新生成模型进行AUTOSAR校验,保证接口模型符合AUTOSAR规范要求。
4 控制模型搭建及代码释放
4.1控制模型搭建及代码生成
根据软件需求,基于MATLAB/Simulink搭建控制模型,包括输入输出接口连线及功能模型搭建,如图5所示。以部分控制模型Simulink模块示例,模型的顶层主要由输入信号、输出信号和主控模块3部分组成。
图5 Simulink控制模型示例
为保证生成的代码能够与基础软件匹配并进行编译,且最后生成的可执行文件可以在控制器中正常运行,需在生成代码前对模型生成代码属性进行配置。
(1)调整顶层接口模型的模型设置(Modelsettings)属性,在Codegeneration中的系统目标文件(Systemtargetfile)选项下选择autosar.tlc文件。
(2)修改代码生成模板(Codetemplates)和数据生成模板(Datatemplate)中的源文件模版(Sourcefiletemplate)配置,确保生成的代码和数据模板满足基础软件对应用软件代码及常量内存分配的需求。
(3)编写控制器代码配置文件,内部包含配置代码文件和数据文件的伪指令,表示生成代码的组件。
(4)配置ModelSettings中的其他代码生成相关属性,主要包括运行步长、代码生成文件以及警告及错误配置,将配置结果输出为配置参考(Configurationreference)文件,并将其保存至Workspace中。
(5)在顶层接口模型中打开模型浏览器(Modelexplorer)选项,将属性配置(Configurations)调整为引用(Reference)。并通过传播到引用模型(Propagatetoreferencedmodels)选项推送至每个Reference控制模型。完成搭建控制模型及其配置后,对模型进行编码。
在控制模型界面的APPS标签下,选择嵌入式(Embedded)模块,点击“Generatecode”进行代码生成。在代码生成过程中,若遇到错误,应根据报错信息对模型进行相应的修正,直至成功生成代码。
4.2 应用代码释放
在模型生成代码的过程中,将生成一些非必要信息,如模型在运行过程中生成的过程文件、接口声明头文件以及一些仿真文件,需在生成的文件中筛选出编译所需的程序文件。人工提取程序效率低,且易发生操作错误。
为了高效进行代码编译,本次采取了一种自动化的方法来提高代码编译的效率。该方法可以实现编写自动化脚本,自动提取编译所需的程序文件,提高工作效率的同时保证软件质量。
批处理(bat)文件是系统Windows系统内置的脚本,其无需编译即可执行,可以快速、敏捷且灵活的处理文件。无需安装其他软件及环境,在文件处理提取方面存在明显优势。因此本研究选用编写bat脚本的方式进行编译文件提取,并与基础软件一同进行编译,编译成功后将生成的文件释放至下游部门,用于控制器可执行程序的生成。
具体步骤如下:
清除提取文件夹中的历史文件,删除上一次代码生成时得到的程序文件。
提取本次新生成且编译所需的程序文件至提取文件夹中。
识别各SWC生成的同名文件,并根据文件内容进行合并或删除。
将应用软件与基础软件进行编译,若编译报错,则检查日志(log)文件分析报错原因,并根据分析结果对代码进行相应修改,然后重新执行编译。
编译成功后将应用程序代码释放至下游部门,完成应用软件开发。
5 写在最后
目前,国内虽然在MATLAB与AUTOSAR间的映射方法和符合AUTOSAR规范的自动代码生成方法方面有了一定的进展,但仍缺少通用、全面且高效的应用软件开发方法。
本文在已有研究内容基础上,提供了从ARXML文件提取数据字典内容、生成接口模型、控制模型搭建、模型代码生成和应用代码释放的全部过程,在保证软件开发质量的同时提升了开发效率。
虽然本文提出的基于AUTOSAR的车载域控制器应用软件开发方法,降低了车载应用软件开发的复杂度,缩短了开发时间,提高软件质量,具有通用、全面和高效性,但自动化程度不够高,如何提高自动化程度以便后续实现持续集成工作有待进一步研究。 |