列表
00:00
/
00:00
l
r
  中国测试  2017, Vol. 43 Issue (12): 113-118

文章信息

谢江浩, 彭忆强, 朱丽, 罗青松
XIE Jianghao, PENG Yiqiang, ZHU Li, LUO Qingsong
基于AUTOSAR架构的XCP标定系统开发
Development of XCP calibration system based on AUTOSAR architecture
中国测试, 2017, 43(12): 113-118
China Measurement & Test, 2017, 43(12): 113-118
http://dx.doi.org/10.11857/j.issn.1674-5124.2017.12.022

文章历史

收稿日期: 2017-04-29
收到修改稿日期: 2017-05-25
基于AUTOSAR架构的XCP标定系统开发
谢江浩1,3,4 , 彭忆强1,3,4 , 朱丽2 , 罗青松2     
1. 西华大学汽车与交通学院, 四川 成都 610039;
2. 普华基础软件股份有限公司, 上海 200233;
3. 四川汽车关键零部件同创新中心, 四川 成都 610039;
4. 西华大学汽车测控与安全四川省重点实验室, 四川 成都 610039
摘要:针对汽车总线多样化以及汽车ECU之间数据交互量大的问题,设计一款以32位微处理器为硬件内核、以AUTOSAR为软件架构,符合MISRA-C嵌入式编程规范,适用于多种通信总线的XCP标定系统。在该标定系统数据交互中,为增加标定系统通用性和代码可重用性,采用符合AUTOSAR通信协议栈的标准接口,实现与AUTOSAR其他协议栈的无缝连接。同时对XCP代码进行QAC检测,提高标定系统代码阅读性。编写Vector CANoe的CAPL脚本程序,进行自动功能测试,检测标定系统功能的完整性。测试结果表明:所设计的标定系统数据交互实时性高、可靠性强。
关键词XCP    AUTOSAR    标定系统    QAC    
Development of XCP calibration system based on AUTOSAR architecture
XIE Jianghao1,3,4 , PENG Yiqiang1,3,4 , ZHU Li2 , LUO Qingsong2     
1. School of Automotive & Transportation Engineering, Xihua University, Chengdu 610039, China;
2. Isoft Infrastructure Software Co., Ltd., Shanghai 200233, China;
3. Sichuan Collaborative Innovation Center for Automotive Key Components, Chengdu 610039, China;
4. Vehicle Measurement, Control and Safety Key Laboratory of Sichuan Province, Xihua University, Chengdu 610039, China
Abstract: With regard to the diversified automobile bus and the amount of data exchange between ECU, a XCP calibration system that takes 32-bit microprocessor as the core of hardware and AUTOSAR as the software architecture, complies with MISRA-C standard and applicable to various communication buses is designed. In the data exchange of the calibration system, this system uses a standard port suitable for AUTOSAR protocol stack to improve the universality of the system and the reusability of the code, and realizes the seamless connection with other AUTOSAR protocol stacks. Meanwhile, the XCP system's code is detected with QAC method to improve the code readability of the calibration system. A CAPL script program is written based on Vector CANoe, and the automate testing of functional integrity of calibration system is carried out. The test results show that the designed calibration system has high real-time data and strong reliability.
Key words: XCP     AUTOSAR     calibration system     QAC    
0 引言

标定系统在汽车发动机控制系统、变速器控制系统、底盘控制系统、刹车防抱死系统、车身电子控制系统等电子模块的开发中都具有重要作用,可以通过修改ECU控制软件参数来提高车辆安全和舒适性能[1-2]。目前,随着汽车智能化程度越来越高,汽车电子控制单元的数目越来越多,各电控单元之间的通信速度越来越快,通信采用的总线形式也趋于多样化。但是,国外开发的XCP标定软件不仅价格昂贵,而且不提供原代码,而国内大部分汽车厂商的标定软件都是基于CAN总线的CCP(CAN calibration protocol)标定协议[3-4],所以开发一款可以兼容不同通信总线的XCP标定系统势在必行。但是,由于汽车电子控制单元的多样性,使得对不同的汽车电子控制单元,代码都需重新开发,代码重用性低、开发成本高。为解决上述问题,缩短研发周期,需开发一款可重用的标定软件。

为此,本文开发了一款基于AUTOSAR架构的XCP标定系统。该系统融入AUTOSAR软件架构,使用通信标准接口进行数据交互,实现XCP协议的模块化开发,同时XCP协议可以实现不同总线上的数据传输,适用于不同硬件平台,提高通信能力,解决了使用其他汽车总线实现标定的难题。最后,通过对所开发的标定系统进行代码QAC检测及功能测试,结果显示该标定系统软件功能完整、实时性高、性能稳定。

1 AUTOSAR架构简介

随着汽车电子控制系统复杂性的不断增加,软件代码量急剧上升,且嵌入式系统不支持硬件抽象,导致处理器型号更换以后,代码的重用性差,软件往往需要重新编写,这就使得软件系统开发周期长、成本高,不能满足汽车电子技术高速发展的要求。于是AUTOSAR(automotive open system architecture)架构应运而生[5],它是汽车制造商和供应商共同合作开发、建立的符合汽车电子开放式E/E架构行业标准。

AUTOSAR架构整体分为3层,分别是应用层、运行环境抽象层、基础软件层。应用层包括传感器软件组件、执行器软件组件以及应用软件组件。运行环境抽象层是应用软件和基础软件层的通信桥梁,可以为应用层提供一个统一的通信环境。基础软件层是协议栈的实现,包括标准通信栈、网络管理模块、诊断协议栈、存储栈、操作系统、微控制器抽象层MCAL(microcontroller abstraction layer)驱动软件模块。

本文所述标定系统属于基础软件层,它提供了一种符合AUTOSAR标准通信接口的标定软件模块解决方案。

2 XCP标定系统设计方案

本系统以飞思卡尔32位MPC5644作为微处理器。该微处理器最高总线时钟频率可达到150 MHz,内部192 KB RAM,4 MB片内Flash,满足多标定数据要求。其系统设计方案如图 1所示。

图 1 系统设计方案

在此系统中,标定工具支持Vector公司的CANape软件、ETAS公司的INCA软件以及普华I-CAL软件,PC端标定软件与标定工具对应,通信驱动模块可以是CAN总线、FlexRay总线、USB等,本系统使用CAN总线。

本系统的工作原理是:安装于PC端的标定软件,通过GUI界面发送指令,标定工具将命令转换为通信数据,发送给微处理器MPC5644通信驱动模块,XCP标定协议栈根据命令要求进行相应操作。其通信命令包括标准命令组、标定命令组、页切换命令组、DAQ基本命令组、Flash刷写组。XCP标定协议栈响应命令返回给PC标定软件,确认操作是否成功。

3 符合AUTOSAR架构的XCP协议实现

在AUTOSAR软件架构中,通信模块通过Interface(接口)模块与驱动模块进行连接。本系统使用CAN总线传输标定数据,通过Can Interface模块嵌入AUTOSAR软件架构。符合AUTOSAR软件架构要求,可以提高代码重用性,更换处理器型号后,代码不需要重新编写,减少软件系统研发成本、缩短开发周期。

AUTOSAR通信协议栈一般抽象为总线驱动模块、总线接口模块、网络管理模块、通信管理模块、传输层模块以及内部数据交互模块等。其中,总线驱动模块实现硬件通信驱动;总线接口模块提供协议层数据路由;协议层数据路由,通过诊断协议与诊断模块通信实现诊断功能;网络管理模块通过网络管理协议实现其功能;内部数据交互模块实现ECU之间数据交互。同时运行环境抽象层与通信管理模块连接,实现与应用层之间的通信[6]图 2显示XCP协议在AUTOSAR软件架构中的位置,可以基于CAN总线、FlexRay总线或以太网,通过总线接口接入AUTOSAR软件架构。

图 2 XCP协议在AUTOSAR软件架构位置

XCP协议实现数据标定与测量,通过AUTOSAR软件架构的总线接口实现数据发送与接收,嵌入式操作系统的任务调度实现不同通道DAQ周期上传。

图 2中,AUTOSAR XCP模块在总线接口模块上方,如FlexRay或CAN总线,并通过总线接口实现XCP协议独立标定数据的传输。

3.1 XCP协议数据发送过程分析

XCP协议通过CAN接口模块的CanIf_Transmit函数发送数据,发送成功后,调用CanIf_TxIndication回调函数确认数据发送成功,图 3详细说明数据发送成功后的处理过程。

图 3 XCP协议数据发送过程

3.2 XCP协议数据接收响应过程分析

XCP协议通过CAN接口模块的CanIf_RxIndication函数接收测量数据,并对其进行处理,图 4详细说明数据接收成功后处理机制。具体实现了XCP独有Block传输响应机制,包含DAQ和STIM处理流程以及事件错误与命令错误的处理机制。由于CAN报文每帧最多8Byte数据,未满8Byte数据需用0xFF填充,所以完成数据接收后,需先对报文长度进行检查,然后再判断接收命令是否正确,再进行相关处理。在Block模式下,进行DOWNLOAD和PROGRAM命令处理,需先将命令数据包存入缓存池,判断当前标定或刷写命令的总字节长度是否大于6,如果否,则将状态置为接收;如果大于6,则状态置为模块接收,并将缓存池ID设置为DNLOAD_NEXT或PROGRAM_NEXT命令,并结束接收过程。

图 4 XCP协议数据接收响应过程

3.3 XCP协议分析

XCP协议通过主从模式进行通信。其中主机一般指PC端标定软件,从机一般指包含XCP协议的ECU模块。主机通过标准命令组中的CONNECT命令进行与从机的连接;建立连接后,主机就可以发送标定命令组的DOWNLOAD与UPLOAD命令进行数据的标定与测定,发送页切换组命令SET_CAL_PAGE,实现RAM与Flash不同区域切换,发送DAQ/STIM命令组的WRITE_DAQ等命令实现标定数据的实时上传,同时也可以发送Flash刷写命令组的PROGRAM命令实现数据储存[7]

XCP协议接受到命令后,首先判断前期接收到的命令是否处理完成,是否处于空闲状态,再判断接收到的命令是否有效,如果是则进行相应的命令处理。以标准命令处理过程为例,进行说明。

3.4 标准命令分析

在XCP协议中,标准命令主要用于主机与从机建立连接,数据的上传与下载以及数据解锁等。其包含的部分命令见表 1

表 1 XCP协议部分标准命令组[8]

通过CONNECT命令主机与从机建立连接。如果上传与下载数据需要解锁,必须通过GET_SEED命令获取密钥,并使用UNLOCK命令进行解锁;解锁成功后,通过SET_MTA命令指定工作地址,之后才可以通过DOWNLOAD命令下载数据到该地址或通过UPLOAD命令上传该地址对应的数据。当完成数据的传输后,可以通过DISCONNECT命令断开主机与从机之间的连接。表中的DOWNLOAD_NEXT命令用于Block功能传输中。

4 XCP软件测试

XCP软件测试主要是针对代码的QAC扫描和功能测试,其中QAC扫描用于检测编程规范是否满足MISRA-C规范,增强代码阅读性以及减少代码存在的风险;功能测试用于检测XCP软件功能是否正确和完善。

4.1 QAC静态扫描分析

代码的QAC静态扫描主要包括最大嵌套值STMIF、路径复杂度STCYC、静态路径计数值STPTH、单一函数的行数STLIN、声明静态全局变量和函数STSCT、注释密度STCDN。其中最大嵌套值需小于5,值过大会导致黑盒测试比较困难;路径复杂度需小于15,值过大会增大代码复杂度。另外,静态路径计数值需小于300,单一函数的行数需小于200,声明静态全局变量和函数需小于30,这3个数值均会影响代码的可读性及可靠性[9]

本文以最大嵌套值举例进行说明,如图 5所示。图中有一个函数的最大嵌套值超过最大值,其原因是在实际代码中,该函数需要支持多种刷写方式,且检查地址时需要对多种情况进行考虑,为了功能的完整性以及不影响代码可读性,可以接受。

图 5 最大嵌套值

4.2 功能测试分析

在进行功能测试之前,首先需要将XCP标定软件集成到AUTOSAR软件架构中,其中包括OSEK OS:实现周期性任务的调度;通信模块:由于该系统基于CAN总线实现数据的传输,所以主要包括CAN模块相关的程序;存储模块:主要是Flash程序的刷写,实现数据的保存与读取。

本文中,XCP标定软件的功能测试工具为Vector的CANoe。通过对其编写CAPL脚本程序,可以模拟主机发送各种命令同时接受响应数据,将响应数据与期望数据进行比较,就可以自动实现标定软件功能测试[10-11]图 6是功能测试过程中搭建的硬件环境。图中左边为MPC5644开发板,作为XCP标定系统的下位机;右上角为CANoe工具,实现数据的传输;右下角为PE下载器,实现对XCP系统程序刷写及调试。

图 6 硬件环境

图 7显示了测试脚本界面,通过添加TestCase与TestFunction完成XCP系统功能性测试。然后对连接命令的测试进行说明,图 8显示了连接命令的3种不同测试用例。图 8(a)表示:发送正常连接命令,正常响应;图 8(b)表示:重复发送正常连接命令,第1次正常响应,第2次响应已连接错误;图 8(c)表示:第1次发送正常连接命令后,正常响应,再发送错误地址连接命令,响应超出范围错误。图 9显示测试结果,从图中可以看出测试结果都通过,说明所研制的XCP系统标定、测量、存储等功能都满足要求。

图 7 测试脚本界面

图 8 连接命令的3种测试用例

图 9 测试结果

5 结束语

基于飞思卡尔32位微处理器MPC5644,完成了所研制的XCP标定系统的功能测试。通过在该微处理器中刷写基于AUTOSAR架构的XCP系统,并通过CANoe工具编写CAPL脚本,实现XCP功能的自动测试。其中涉及嵌入到AUTOSAR架构,主要体现在通信模块接口规范,用于实现数据的传输。由于该系统基于CAN总线通信,所以使用CAN接口模块嵌入AUTOSAR架构中。嵌入到AUTOSAR架构中,可以增强代码的重用性,对于后期基于FlexRay与以太网通信,只需要修改与硬件相关的驱动模块,就能够完成XCP基于FlexRay或以太网通信的移植,减少软件的开发周期,从而节约开发成本,提供汽车总线多样化的解决方案。

参考文献
[1]
苏瑜, 周文华, 竺春狄. 一种适用不同通信方式基于XCP协议的ECU标定工具的开发[J]. 汽车工程, 2010, 32(1): 81-85.
[2]
HILTON J. New AUTOSAR adaptive platform on its way[J]. Automotive Industries, 2015, 194(3): 52-53.
[3]
阴晓峰, 刘武东. 汽车电子系统软件开发新标准AUTOSAR[J]. 西华大学学报(自然科学版), 2010, 29(2): 102-106.
[4]
郭晞文. 参照AUTOSAR标准的汽车电子通信与应用[D]. 杭州: 浙江大学, 2008. http://cdmd.cnki.com.cn/Article/CDMD-10335-2008066030.htm
[5]
冯占军, 丁锋, 谭啟寅. 基于XCP协议的ECU控制器标定系统开发[J]. 上海汽车, 2013(11): 16-18.
[6]
程驰. FlexRay通讯网络在新一代动力系统控制器上的应用研究[D]. 北京: 清华大学, 2013. http://cdmd.cnki.com.cn/Article/CDMD-10003-1015007326.htm
[7]
李岩. 基于XCP协议的标定系统设计与实现[D]. 长春: 吉林大学, 2012. http://cdmd.cnki.com.cn/Article/CDMD-10183-1012370367.htm
[8]
徐柯. 嵌入式软件测试的研究[D]. 成都: 电子科技大学, 2006. http://cdmd.cnki.com.cn/Article/CDMD-10614-2007050901.htm
[9]
徐泽南. 软件自动化测试框架的设计与应用[D]. 上海: 复旦大学, 2011. http://cdmd.cnki.com.cn/Article/CDMD-10246-1012330591.htm
[10]
刘正升, 万程亮, 蒋志忠, 等. 自动测试系统中新技术的发展及应用[J]. 中国测试, 2009, 35(4): 58-61.
[11]
王安军, 蒋建春, 陈培然. 符合AUTOSAR规范的底层驱动软件开发[J]. 计算机工程, 2011, 37(9): 62-64, 67.