
xcp协议
高二小-行业代码是什么
2023年2月21日发(作者:o型圈规格尺寸表)基于AUTOSAR架构的XCP标定系统开发
谢江浩;彭忆强;朱丽;罗青松
【摘要】针对汽车总线多样化以及汽车ECU之间数据交互量大的问题,设计一款
以32位微处理器为硬件内核、以AUTOSAR为软件架构,符合MISRA-C嵌入式编
程规范,适用于多种通信总线的XCP标定系统.在该标定系统数据交互中,为增加标
定系统通用性和代码可重用性,采用符合AUTOSAR通信协议栈的标准接口,实现与
AUTOSAR其他协议栈的无缝连接.同时对XCP代码进行QAC检测,提高标定系统
代码阅读性.编写VectorCANoe的CAPL脚本程序,进行自动功能测试,检测标定
系统功能的完整性.测试结果表明:所设计的标定系统数据交互实时性高、可靠性
强.%Withregardtothediversifiedautomobilebusandtheamountofdata
exchangebetweenECU,aXCPcalibrationsystemthattakes32-bit
microprocessorasthecoreofhardwareandAUTOSARasthesoftware
architecture,complieswithMISRA-Cstandardandapplicabletovarious
ataexchangeofthecalibration
system,thissystemusesastandardportsuitableforAUTOSARprotocol
stacktoimprovetheuniversalityofthesystemandthereusabilityofthe
code,andrealizestheseamlessconnectionwithotherAUTOSARprotocol
ile,theXCPsystem'scodeisdetectedwithQACmethodto
cript
programiswrittenbasedonVectorCANoe,andtheautomatetestingof
tresults
showthatthedesignedcalibrationsystemhashighreal-timedataand
strongreliability.
【期刊名称】《中国测试》
【年(卷),期】2017(043)012
【总页数】6页(P113-118)
【关键词】XCP;AUTOSAR;标定系统;QAC
【作者】谢江浩;彭忆强;朱丽;罗青松
【作者单位】西华大学汽车与交通学院,四川成都610039;四川汽车关键零部件同
创新中心,四川成都610039;西华大学汽车测控与安全四川省重点实验室,四川成
都610039;西华大学汽车与交通学院,四川成都610039;四川汽车关键零部件同创
新中心,四川成都610039;西华大学汽车测控与安全四川省重点实验室,四川成都
610039;普华基础软件股份有限公司,上海200233;普华基础软件股份有限公司,上
海200233
【正文语种】中文
标定系统在汽车发动机控制系统、变速器控制系统、底盘控制系统、刹车防抱死系
统、车身电子控制系统等电子模块的开发中都具有重要作用,可以通过修改ECU
控制软件参数来提高车辆安全和舒适性能[1-2]。目前,随着汽车智能化程度越来
越高,汽车电子控制单元的数目越来越多,各电控单元之间的通信速度越来越快,
通信采用的总线形式也趋于多样化。但是,国外开发的XCP标定软件不仅价格昂
贵,而且不提供原代码,而国内大部分汽车厂商的标定软件都是基于CAN总线的
CCP(CANcalibrationprotocol)标定协议[3-4],所以开发一款可以兼容不同
通信总线的XCP标定系统势在必行。但是,由于汽车电子控制单元的多样性,使
得对不同的汽车电子控制单元,代码都需重新开发,代码重用性低、开发成本高。
为解决上述问题,缩短研发周期,需开发一款可重用的标定软件。
为此,本文开发了一款基于AUTOSAR架构的XCP标定系统。该系统融入
AUTOSAR软件架构,使用通信标准接口进行数据交互,实现XCP协议的模块化
开发,同时XCP协议可以实现不同总线上的数据传输,适用于不同硬件平台,提
高通信能力,解决了使用其他汽车总线实现标定的难题。最后,通过对所开发的标
定系统进行代码QAC检测及功能测试,结果显示该标定系统软件功能完整、实时
性高、性能稳定。
随着汽车电子控制系统复杂性的不断增加,软件代码量急剧上升,且嵌入式系统不
支持硬件抽象,导致处理器型号更换以后,代码的重用性差,软件往往需要重新编
写,这就使得软件系统开发周期长、成本高,不能满足汽车电子技术高速发展的要
求。于是AUTOSAR(automotiveopensystemarchitecture)架构应运而生
[5],它是汽车制造商和供应商共同合作开发、建立的符合汽车电子开放式E/E架
构行业标准。
AUTOSAR架构整体分为3层,分别是应用层、运行环境抽象层、基础软件层。
应用层包括传感器软件组件、执行器软件组件以及应用软件组件。运行环境抽象层
是应用软件和基础软件层的通信桥梁,可以为应用层提供一个统一的通信环境。基
础软件层是协议栈的实现,包括标准通信栈、网络管理模块、诊断协议栈、存储栈、
操作系统、微控制器抽象层MCAL(microcontrollerabstractionlayer)驱动软
件模块。
本文所述标定系统属于基础软件层,它提供了一种符合AUTOSAR标准通信接口
的标定软件模块解决方案。
本系统以飞思卡尔32位MPC5644作为微处理器。该微处理器最高总线时钟频率
可达到150MHz,内部192KBRAM,4MB片内Flash,满足多标定数据要求。
其系统设计方案如图1所示。
在此系统中,标定工具支持Vector公司的CANape软件、ETAS公司的INCA软
件以及普华I-CAL软件,PC端标定软件与标定工具对应,通信驱动模块可以是
CAN总线、FlexRay总线、USB等,本系统使用CAN总线。
本系统的工作原理是:安装于PC端的标定软件,通过GUI界面发送指令,标定
工具将命令转换为通信数据,发送给微处理器MPC5644通信驱动模块,XCP标
定协议栈根据命令要求进行相应操作。其通信命令包括标准命令组、标定命令组、
页切换命令组、DAQ基本命令组、Flash刷写组。XCP标定协议栈响应命令返回
给PC标定软件,确认操作是否成功。
在AUTOSAR软件架构中,通信模块通过Interface(接口)模块与驱动模块进行
连接。本系统使用CAN总线传输标定数据,通过CanInterface模块嵌入
AUTOSAR软件架构。符合AUTOSAR软件架构要求,可以提高代码重用性,更
换处理器型号后,代码不需要重新编写,减少软件系统研发成本、缩短开发周期。
AUTOSAR通信协议栈一般抽象为总线驱动模块、总线接口模块、网络管理模块、
通信管理模块、传输层模块以及内部数据交互模块等。其中,总线驱动模块实现硬
件通信驱动;总线接口模块提供协议层数据路由;协议层数据路由,通过诊断协议
与诊断模块通信实现诊断功能;网络管理模块通过网络管理协议实现其功能;内部
数据交互模块实现ECU之间数据交互。同时运行环境抽象层与通信管理模块连接,
实现与应用层之间的通信[6]。图2显示XCP协议在AUTOSAR软件架构中的位
置,可以基于CAN总线、FlexRay总线或以太网,通过总线接口接入AUTOSAR
软件架构。
XCP协议实现数据标定与测量,通过AUTOSAR软件架构的总线接口实现数据发
送与接收,嵌入式操作系统的任务调度实现不同通道DAQ周期上传。
在图2中,AUTOSARXCP模块在总线接口模块上方,如FlexRay或CAN总线,
并通过总线接口实现XCP协议独立标定数据的传输。
XCP协议通过CAN接口模块的CanIf_Transmit函数发送数据,发送成功后,调
用CanIf_TxIndication回调函数确认数据发送成功,图3详细说明数据发送成功
后的处理过程。
XCP协议通过CAN接口模块的CanIf_RxIndication函数接收测量数据,并对其
进行处理,图4详细说明数据接收成功后处理机制。具体实现了XCP独有Block
传输响应机制,包含DAQ和STIM处理流程以及事件错误与命令错误的处理机制。
由于CAN报文每帧最多8Byte数据,未满8Byte数据需用0xFF填充,所以完成
数据接收后,需先对报文长度进行检查,然后再判断接收命令是否正确,再进行相
关处理。在Block模式下,进行DOWNLOAD和PROGRAM命令处理,需先将
命令数据包存入缓存池,判断当前标定或刷写命令的总字节长度是否大于6,如果
否,则将状态置为接收;如果大于6,则状态置为模块接收,并将缓存池ID设置
为DNLOAD_NEXT或PROGRAM_NEXT命令,并结束接收过程。
XCP协议通过主从模式进行通信。其中主机一般指PC端标定软件,从机一般指包
含XCP协议的ECU模块。主机通过标准命令组中的CONNECT命令进行与从机
的连接;建立连接后,主机就可以发送标定命令组的DOWNLOAD与UPLOAD
命令进行数据的标定与测定,发送页切换组命令SET_CAL_PAGE,实现RAM与
Flash不同区域切换,发送DAQ/STIM命令组的WRITE_DAQ等命令实现标定数
据的实时上传,同时也可以发送Flash刷写命令组的PROGRAM命令实现数据储
存[7]。
XCP协议接受到命令后,首先判断前期接收到的命令是否处理完成,是否处于空
闲状态,再判断接收到的命令是否有效,如果是则进行相应的命令处理。以标准命
令处理过程为例,进行说明。
在XCP协议中,标准命令主要用于主机与从机建立连接,数据的上传与下载以及
数据解锁等。其包含的部分命令见表1。
通过CONNECT命令主机与从机建立连接。如果上传与下载数据需要解锁,必须
通过GET_SEED命令获取密钥,并使用UNLOCK命令进行解锁;解锁成功后,通
过SET_MTA命令指定工作地址,之后才可以通过DOWNLOAD命令下载数据到
该地址或通过UPLOAD命令上传该地址对应的数据。当完成数据的传输后,可以
通过DISCONNECT命令断开主机与从机之间的连接。表中的
DOWNLOAD_NEXT命令用于Block功能传输中。
XCP软件测试主要是针对代码的QAC扫描和功能测试,其中QAC扫描用于检测
编程规范是否满足MISRA-C规范,增强代码阅读性以及减少代码存在的风险;功
能测试用于检测XCP软件功能是否正确和完善。
代码的QAC静态扫描主要包括最大嵌套值STMIF、路径复杂度STCYC、静态路
径计数值STPTH、单一函数的行数STLIN、声明静态全局变量和函数STSCT、注
释密度STCDN。其中最大嵌套值需小于5,值过大会导致黑盒测试比较困难;路
径复杂度需小于15,值过大会增大代码复杂度。另外,静态路径计数值需小于
300,单一函数的行数需小于200,声明静态全局变量和函数需小于30,这3个
数值均会影响代码的可读性及可靠性[9]。
本文以最大嵌套值举例进行说明,如图5所示。图中有一个函数的最大嵌套值超
过最大值,其原因是在实际代码中,该函数需要支持多种刷写方式,且检查地址时
需要对多种情况进行考虑,为了功能的完整性以及不影响代码可读性,可以接受。
在进行功能测试之前,首先需要将XCP标定软件集成到AUTOSAR软件架构中,
其中包括OSEKOS:实现周期性任务的调度;通信模块:由于该系统基于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系
统标定、测量、存储等功能都满足要求。
基于飞思卡尔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]OSARadaptiveplatformonitsway[J].AutomotiveIndustries,2015,
194(3):52-53.
[3]阴晓峰,刘武东.汽车电子系统软件开发新标准AUTOSAR[J].西华大学学报(自然科学版),
2010,29(2):102-106.
[4]郭晞文.参照AUTOSAR标准的汽车电子通信与应用[D].杭州:浙江大学,2008.
[5]冯占军,丁锋,谭啟寅.基于XCP协议的ECU控制器标定系统开发[J].上海汽车,2013(11):
16-18.
[6]程驰.FlexRay通讯网络在新一代动力系统控制器上的应用研究[D].北京:清华大学,2013.
[7]李岩.基于XCP协议的标定系统设计与实现[D].长春:吉林大学,2012.
[8]徐柯.嵌入式软件测试的研究[D].成都:电子科技大学,2006.
[9]徐泽南.软件自动化测试框架的设计与应用[D].上海:复旦大学,2011.
[10]刘正升,万程亮,蒋志忠,等.自动测试系统中新技术的发展及应用[J].中国测试,2009,35
(4):58-61.
[11]王安军,蒋建春,陈培然.符合AUTOSAR规范的底层驱动软件开发[J].计算机工程,2011,37
(9):62-64,67.