文章信息
- 谢江浩, 彭忆强, 朱丽, 罗青松
- 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
2. 普华基础软件股份有限公司, 上海 200233;
3. 四川汽车关键零部件同创新中心, 四川 成都 610039;
4. 西华大学汽车测控与安全四川省重点实验室, 四川 成都 610039
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
标定系统在汽车发动机控制系统、变速器控制系统、底盘控制系统、刹车防抱死系统、车身电子控制系统等电子模块的开发中都具有重要作用,可以通过修改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所示。
在此系统中,标定工具支持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软件架构。
XCP协议实现数据标定与测量,通过AUTOSAR软件架构的总线接口实现数据发送与接收,嵌入式操作系统的任务调度实现不同通道DAQ周期上传。
在图 2中,AUTOSAR XCP模块在总线接口模块上方,如FlexRay或CAN总线,并通过总线接口实现XCP协议独立标定数据的传输。
3.1 XCP协议数据发送过程分析XCP协议通过CAN接口模块的CanIf_Transmit函数发送数据,发送成功后,调用CanIf_TxIndication回调函数确认数据发送成功,图 3详细说明数据发送成功后的处理过程。
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命令,并结束接收过程。
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。
通过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所示。图中有一个函数的最大嵌套值超过最大值,其原因是在实际代码中,该函数需要支持多种刷写方式,且检查地址时需要对多种情况进行考虑,为了功能的完整性以及不影响代码可读性,可以接受。
4.2 功能测试分析
在进行功能测试之前,首先需要将XCP标定软件集成到AUTOSAR软件架构中,其中包括OSEK OS:实现周期性任务的调度;通信模块:由于该系统基于CAN总线实现数据的传输,所以主要包括CAN模块相关的程序;存储模块:主要是Flash程序的刷写,实现数据的保存与读取。
本文中,XCP标定软件的功能测试工具为Vector的CANoe。通过对其编写CAPL脚本程序,可以模拟主机发送各种命令同时接受响应数据,将响应数据与期望数据进行比较,就可以自动实现标定软件功能测试[10-11],图 6是功能测试过程中搭建的硬件环境。图中左边为MPC5644开发板,作为XCP标定系统的下位机;右上角为CANoe工具,实现数据的传输;右下角为PE下载器,实现对XCP系统程序刷写及调试。
图 7显示了测试脚本界面,通过添加TestCase与TestFunction完成XCP系统功能性测试。然后对连接命令的测试进行说明,图 8显示了连接命令的3种不同测试用例。图 8(a)表示:发送正常连接命令,正常响应;图 8(b)表示:重复发送正常连接命令,第1次正常响应,第2次响应已连接错误;图 8(c)表示:第1次发送正常连接命令后,正常响应,再发送错误地址连接命令,响应超出范围错误。图 9显示测试结果,从图中可以看出测试结果都通过,说明所研制的XCP系统标定、测量、存储等功能都满足要求。
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.
|