收藏 分销(赏)

基于UDS协议的VCU升级方案设计.pdf

上传人:自信****多点 文档编号:2079272 上传时间:2024-05-15 格式:PDF 页数:4 大小:2.15MB
下载 相关 举报
基于UDS协议的VCU升级方案设计.pdf_第1页
第1页 / 共4页
基于UDS协议的VCU升级方案设计.pdf_第2页
第2页 / 共4页
基于UDS协议的VCU升级方案设计.pdf_第3页
第3页 / 共4页
基于UDS协议的VCU升级方案设计.pdf_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、35Designresearch/设计研究汽车电器2 0 2 3年第10 期基于UDS协议的VCU升级方案设计邵广亚12,王婷,王奇1(1.徐州徐工汽车制造有限公司技术中心,江苏徐州2.南京林业大学,江苏南京2 10 0 0 3)【摘要】随着汽车行业的迅猛发展,汽车整车控制器VCU的功能越来越复杂,需要经常进行更新升级,目前主机厂普遍采用的方法是使用UDS标准。本文基于MPC5744P平台,详细介绍汽车VCU的Bootloader刷写软件的实现原理,使用Python设计一款上位机升级软件。该软件设计一种支持应用程序备份回滚的升级策略,增加ECC错误校验容错机制,避免因为反复刷写导致的芯片损坏问

2、题。最后通过实例验证该方案的可靠性。【关键词】UDS;Bo o t l o a d e r;VCU;诊断服务;MPC5744P;软件中图分类号:U463.6(1.Technical Center of Xuzhou XCMG Automobile Manufacturing Company Limited,Xuzhou 221000;Abstract】W i t h t h e r a p i d d e v e l o p me n t o f t h e a u t o mo b i l e i n d u s t r y,t h e f u n c t i o n s o f t h e

3、 VCU a r e b e c o mi n gmore and more complex and need to be updated frequently.At present,the main upgrade method uses the UDSstandard.Based on the MPC5744P plaform,this paper introduces in detail the implementation principle of theBootloader sofware of the car VCU,and designs a host computer upgr

4、ade software using Python.The softwaredesigns an upgrade strategy that supports application backup and rollback,and adds ECC error check fault-tolerantmechanism to avoid chip damage caused by repeated brushing.Finally,the reliability of the scheme is verified byan example.Key words UDS;Bootloader;VC

5、U;diagnostic services;MPC5744P;software作者简介邵广亚(1990 一),男,初级工程师,硕士,主要研究方向为汽车控制器底层驱动嵌入式开发、协议栈开发。1引言随着整车功能越来越多,对控制器提出了更高要求,整车控制器也需要及时进行更新升级。及时的OTA(O v e rthe AirTechnology,空间下载技术)功能可以避免由于拆卸控制器外壳造成不必要的损失和浪费,目前普遍使用基于CAN总线的统一诊断服务UDS(U n i f i e d D i a g n o s t i c Se r v i c e s,同一诊断服务),该服务可以对控制器故障和信息进行

6、收集和写人,同时也支持对应用程序升级2。UDS服务在规范和流程上提供了相对统一的下载模式,每辆整车只需要在数据流细节上根据自己的需要定义不同的数据结构3,真正实现了可靠、安全、可复用、易管理的特点。整车控制器VCU程序分为两部分,一部分是引导程序Bootloader,另一部分是应用程序。引导程序用来接收升级应用程序,并且在不需要升级时跳转到应用程序正常执行。VCU作为车辆的核心控制器,应该保证高可靠性。为了解决在升级过程中失败导致的死机问题,本文设计一种Bootloader程序,可以使用UDS协议对应用程序进行升级,收稿日期:2 0 2 3-0 5-0 8221000;文献标识码:A文章编号:

7、10 0 3-8 6 39(2 0 2 3)10-0 0 35-0 4Design of VCU Upgrade System Based on UDSSHAO Guangyal-2,WANG Ting,WANG Qil2.Nanjing Forestry University,Nanjing 210003,China)2UDS协议介绍UDS协议是基于开放系统互联(OpenSystemsInterconnection,O SI)参考模型设计,采用分层结构,分别是物理层、链路层、网络层、传输层、会话层和应用层,其中物理层可以使用CAN、LIN、D o i p 等接口来实现,本文使用CAN接口进行

8、升级,CAN有可靠的数据完整性保护机制的特点,采用ISO11898标准,会话和网络层使用ISO15765,主要负责对多包数据的拆分和合并。应用层提供UDS服务接口,由ISO14229定义回,详见表1。UDS本质上是一种定向的通信,是一种交互协议(Request/Response),采用的是Client/Server的模式,基本是Client发送一个请求报文,Server根据请求报文做出回应,Client一般情况下是指测试仪(Tester),Se r v e r 一般是指电控单元(VCU)。U D S包含有2 6 种服务,分为6 类,每种服务都有自已独立的服务序号,即SID,U D S请求报文中

9、需要包含SIDI7来声明该请求的类型,主要服务包括诊断通信管理命令、数据传输命令、存储数据命令、输入输出控制命令、例并且增加程序备份的功能,如果升级意外中断,或者根据需要,可以将应用程序恢复成旧的版本,大大增加控制器的可靠性,方便售后维修人员维护,目前成功应用于新能源商用车项目。设计研究/Design research36AutoelectricpartsNo.10,2023表1UDSonCAN在OSI模型中的分层结构OSI参考模型应用层会话层传输层网络层数据链路层物理层行程序控制命令和上传下载命令等。我们设计的下载策略应用需要包含表2 所列的服务8-9。表2 UDS服务服务ID(SID)服务

10、名称0 x10诊断会话控制(DiagnosticSessionControl)0 x11电控单元重启(ECUReset)0 x14清除诊断信息(ClearDiagnosticInformation)0 x22通过ID读取数据(ReadDataByldentifier)0 x27安全访问(SecurityAccess)0 x28通信控制(CommunicationControl)0 x31流程控制(RoutineControl)0 x34请求下载(RequestDownload)0 x36传输数据(TransferData)0 x37请求传输退出(RequestTransferExit)0 x8

11、5控制故障码设置(ControlDTCSetting)3上位机开发上位机使用Python编写,Python是目前最易学习的程序设计语言之一,而Qt可以说是开发GUI(图形用户界面)应用程序最强大的库之一,拥有丰富灵活的控件和方便的调用方式,可以轻松实现跨平台应用。PyQt则是Python和Qt的结合,将二者的优点融合在一起,可高效地编写各类GUI应用程序。利用PyQt开发GUI应用程序时,GUI界面可以直接在Qt Creator内完成,然后再利用PyQt提供的通信接口实现对象之间的通信。上位机各模块结构如图1所示。Python 拥有丰富的外设接口库的支持,已经将应用层、网络层和物理层全部封装成

12、库,方便用户直接调用,并且对协议层完全开源,非常方便用户开发过程中的调试。Python提供了多种CAN卡的支持,本例使用PEAK-System公司的PCAN驱动。如果要实现UDS的调用,首先需要实例化PCAN硬件CAN对象,将接口和网络链路层的isotp库绑定,再将isotp库对象和应用层的UDSonCAN库链接,就实现了从应用层到物理层的接口连接。如果想和自已的控制器通信,还需要配置UDS属性,比如时间参数、加密算法、DID(D a t a ByUDSonCAN协议体系涉及协议Identifier)列表的长度格式、目标地址和内存长度等,具体ISO 14229-1,3(UDS)ISO 1576

13、5-3配置参考见图2。IS0 15765-3self.canbus-PcanBus(channel=self.inchannel,bitrate=self.inbitrate)CANS线tj的feself.tp_addrisotp.Address(isotp.AddressingHode,Nornal_29bits,txid=txid,xid=rxid,address_extension=True)ISO 15765-2#sef.tp.oddr:iotp.Address(iotp.AddressingMode.Normot_11bi,.txidstxid,rxidrxidoddress_ext

14、ensionsFotp_stackisotp.Canstack(bus=self.canbus,a d d r e s s t s e lf.t p _a d d r,p a r a n s=is o t p p a r a n s)网i/编愉(IsoTPwiR)IS0 15765-2self.conn#PythonIsoTpConnection(tp_stack)#用保和输之网连化连境self.udsctient-cuient(solf.conn,request_tineouts 2)self.udsctient.configluse_server_timing=FatseISO 11898

15、-1self.udsclient.configlsecurity_algo-self.SecAlgoself.udsctient.configlsecurity_aigo_parans0 x00,0 x7E8887E,x,ex00,0 x00,0 x5A885Aself.udsclient.configldata_identitiers-tISO 11898-2xF1A8:udsoncan,DidCodec(*B).OxF190:udsoncan.DidCodec(BBBBBBBBBBBBB),exF195:udsoncan.Didcodec(*B),axF199:udsoncan.Didco

16、dec(BBB*)self.udsclient.configlp2_server_max)=32setf.udscuient.configlpz_tineout=1esetf.udsctient.configlserver_address_fornat-32self.udsctient.configlserver_enorysize_format=324烧写和启动流程4.1芯片的内存分配MPC5744P芯片使用基于PowerPC架构的双e200z4内核,通过双核锁步的方式提高芯片安全性,工作频率高达200MHz,支持循环穴余校验(CRC),最大支持ASILD级功能安全。芯片设备供电电压为3.3

17、V,A D C参考电源供电电压范围可调,范围为3.15 5.5V。芯片内部有8 kB的指令缓存与4kB的数据缓存,大大提高了内核与存储设备间的数据交互速度。芯片内部集成有多种存储设备,提供2.5MB的Flash与384kB的SRAM,其中Flash包括96 kB的DataFlash、38 4k B的Medium flash和2 MB的LargeFlash3部分0。本应用将96 kB的DataFlash用来存储DID数据,将MediumFlash存放Bootloader启动程序,剩余的2 MBFlash一半用来存放应用程序,其中一半用来备份应用程序,具体分配详见表3。表3MPC5744PFlas

18、h分配地址空间地址大小0 x00800000-0 x00817FFF96kBOx00FA0000-Ox00FFFFFF384kB0 x01000000-0 x010FFFFF1MB应用接口逻辑0 x01100000-0 x011FFFFFPythonUDSonCAN4.2回滚和备份策略PyQtUI界面Python can-isotpPythonCAN图1上位机模块结构#Codec thot reodAscll string.we austtell the图2UDS服务的初始化存储DID数据Bootloader程序应用程序1MB备份应用程序目前主流的车规级控制器中,少部分高端的处理器如英飞凌TC

19、39X系列、NXP的S32K3系列已经支持ABSWAP功能芯片,也有厂家叫Remap功能,也就是说Boot可以将程序下载到AB任意分区,因为芯片可以重映射两个分区的地址,所以程序在任意分区都可以顺利执行跳转。由于MPC5744P不支持这种功能,应用程序的地址在编译的时候已经固定,只能从固定地址启动,所以需要下载前手动将当前程序搬运到备份区,在擦除当前程序后,接收需要更新的应用程序。当发起程序回滚时,只需要将备份区的程序拷贝到执行区即可。具体流程详见图3。4.3下载流程UDS下载分为3个阶段,分别是编程前、编程中和编程后。存储分配37Designresearch/设计研究汽车电器2 0 2 3年

20、第10 期发起程序升级检查执行区一否是否有效是擦除备份区将执行区程序备份到备份区擦除执行区将下载收到的程序更新到执行区备份结束(a)备份流程图3备份回滚流程编程前阶段需要0 x10服务0 3子服务进入扩展会话,使用0 x28服务关闭非刷写数据流,降低总线负载,然后使用0 x85服务清除DTC信息。编程中阶段需要0 x10服务0 2 子服务请求进人编程会话,使用0 x27服务进行安全认证,设备会返回上位机一组Seed,上位机使用密钥算法计算出Key,回复VCU控制器,如果计算的key和控制器自己计算的结果一致,将回复正响应,允许上位机拿到Level2的安全认证。由于控制器支持备份功能,需要上位机

21、使用0 x31服务自定义的0 xf010子服务对当前程序进行备份,使用Oxffo0对flash擦除,擦除后需要先清除程序有效标志位。上位机使用0 x34服务、0 x36服务、0 x37服务请求下载,下载传输,退出下载,将载入的数据循环下载到控制器内。编程后阶段需要对程序有效性校验,控制器通过校验以后写人程序有效标志。编程后需要退出编程会话,使用0 x28服务恢复非刷写数据流,0 x85服务打开DTC功能。具体烧写步骤如图4所示。4.4启动流程Bootloader程序启动后,应该首先检查当前是否已经处于编程会话中,该会话条件由应用程序发起并复位,控制器运行在应用程序内时,如果进入编程会话需要写人

22、该会话标志并复位。如果不是应用程序发起的编程会话,就要检查MCU内部Flash是否保存有效的应用程序,如果有效,直接进行跳转,跳转后检查是否收到UDS命令,收到就不跳转,循环执行命令,未收到则跳转到应用程序。如果应用程序无效,检查是否有备份的应用程序,如果有,需要将备份的程序恢复。如果没有有效的备份程序,Bootloader将进人循环等待响应UDS。具体流程详见图5。4.5错误异常处理差错检测和修正(Error Checking and Correc-tion,ECC)算法是一种比较常用的高效校验编码方法。该算法通过对发起程序回滚检查备份区是否有效否一是擦除执行区将备份区程序拷员到执行区回滚结

23、束(b)回滚流程开始10服务切到扩展会话85服务关闭DTC28服务关闭非刷写数据流10服务切换编程会话27服务安全认证Level231服务对应用程序备份硬件初始化控制器是否已处于编程是循环执行会话中UDS协议应用程序否是否有效是是否收到UDS命令?香跳转到应用程序传输数据进行编解码处理,进而实现对存储器当中数据的检错和纠错功能。这种编码方法原理简便、易于执行、计算速度快,尤其适用于嵌人式固态存储器的处理,Flash引起的ECC错误分为1-bitError和Multi-bitError,1-b i t Er r o r可以由Flash存储器读取后自行恢复,而MultibitError就必须对响应

24、的存储扇区进行重新擦除。MPC5744P的Memory Error ManagementUnit(M EM U,内存错误管理单元)模块用来报告和收集ECC错误,当发生错误时,会主动上报至FCCU(Fa u lt C o lle c t io n a n d C o n t r o lUnit,故障采集控制单元)统一处理,ECC错误对应的中断序号2 1和2 2,只需要在FCCU中断内解析中断标志,芯片会将发生错误的地址保存在寄存器内,中断处理程序需要将对应的地址重新擦除,将芯片复位即可。如图6 所示。31服务擦除对应扇区34服务请求下载下载完成?Y37服务退出传输31服务对下载的程序进行完整性校

25、验图4UDS烧写流程开始备份程序是否有效是将备份程序恢复是死循环执行UDS协议图5控制器启动流程11服务软件复位10服务切到扩展会话28服务打开非刷写N36服务传输数据否循环执行UDS协议数据流85服务打开DTC10服务切到普通会话,控制器复位结束设计研究/Design research38AutoelectricpartsNo.10,2023ResetCorrectableFlashECCMEMUcorcecableFccuECcErrorPFLASHControllerDate+CheckbitFlashMemoryArrayECC中断人口设置和中断处理如图7、图8 所示,在Vector.

26、c文件中,将IVOR1_Vector中断入口改为自定义函数,当发生ECC错误后,会进入IVOR1_Vector硬件错误中断,内核收到中断请求以后,会跳转到指定的中断响应函数内。中断处理函数内,要检查ECC错误类型和错误地址。然后将FCCU对应的标志位清除,恢复并且清除MCSR寄存器,防止重复Short FunctionalResetRGMReactionLong FunctionalECcErrorResetInterruptReactionMemoryArraysECC.CollectingandManagingandControllersUnit图6 ECC响应处理流程24V电源计算机US

27、B转串口INTCInterrupt toCoreFailureDetectionReactionModulesModules继电器模块PCAN图9耐久擦除烧写测试CXIVCUX1VCU应用软件刷写工具VO.4PCAN设定UD设定PCAYPCAN_USBUISI波特率50 0 KB1/标定Bex/S19DS_AutoTest-main/LDS_AutoTest-saia/NPCS74AP_CAN_UserApo_1000VCUTesterAddress18DA27FATargetAddres开始树写黑true$S18DAFA27进人错误中断,然后才能对设备发起复位操作。为了避免烧写中断造成Boo

28、tloader跳转执行错误的应用程序导致控制器跑飞,需要对2 个程序分区各增加一个程序有效标志位,当上位机发起擦除命令后,需要首先擦除程序有效标志位,当下载完成,并且通过完整性校验后,需要重新对程序有效标志位写入。Bootloader跳转前,需要判断该标志是否有效,只有当该标志位有效,才可以跳转进应用程序,这样可以避免烧写中断影响跳转错误的问题。PPCASMF(.externIVoR4_Handler);PPCASMF(.externMachine_check_handler);PPCASMF2(.section.core_exceptions_table,ax);PPCASMF(.align

29、 4);PPCASMF(IVORe_Vector:);PPCASMF(VTABLE:);PPCASMF(e_bIVORe_Vvector);PPCASMF(.align 4);PPCASMF(IVOR1_Vector:);/PPCASMF(e_bIVOR1_Handler);PPCASMF(e_bMachine_check_handler);/PPCASMF(e_bIVOR1_Vvector);图7ECC中断入口设置5系统验证我们设计了两种方式验证该下载策略的可靠性。第1种是利用芯片内部程序触发ECC错误,通过这种方式来检验ECC错误是否可以顺利得到错误响应并可以被成功处理。由于Multi-b

30、itError发生后不可恢复,芯片运行后会直接死机,很容易被发现。MPC5744PFlash不经过擦除直接写入就可以触发Multi-bit Error。可以在软件里对一个Flash的地址数据重复写入,结果证明芯片出现报错,并且成功进入错误中断。第2 种是测试耐久试验,验证多次重复烧写后仍然可以正常工作。为此临时搭建一个测试环境,在上位机增加一种烧写测试功能,可以通过控制继电器模块,给设备上电,启动程序下载,下载成功后再次通过上位机控制设备重新上电启动烧写。控制器成功升级以后,将对应的序列号上传给上位机用来校验烧写结果。如图9、图10 所示。经过1周的时间,累计烧写2 30 0 0 余次,VCU

31、控制器仍然正常烧写跳转应用程序,证明了该烧写备份策略可靠。烧结果图10 耐久烧写擦除界面参考文献:1 王栋梁,汤利顺,陈博,等.智能网联汽车整车OTA功能设计研究 汽车技术,2 0 18(10):2 9-33.2周奇才,王奕童,赵炯,等.基于互联网设备的车辆安全空中下载通信协议方案.汽车技术,2 0 2 0(1):6-11.ll_interruptvoid Machine_check_handler(void)MEMU_handler():Increment_MCSRRe_to_next_instruction();clearMCSR();IvoR1_handler_pass_count+;U

32、DS_BCUReset();图8 ECC错误中断响应函数3汪春华,白稳峰,刘胤博,等基于CAN总线UDS服务BootLoader应用开发J电子测量技术,2 0 17,40(2):166-170.4詹克旭.基于UDS协议的汽车ECU升级方案J计算机应用与软件,2 0 19,36(1):191-196,2 0 3.5 黄悦鹏基于CAN总线的UDS诊断系统的设计与实现D.南京:南京邮电大学,2 0 16.6 罗峰,郁静华.汽车统一诊断服务诊断协议栈网络层测试方法J.同济大学学报,2 0 16,44(4):6 32-6 36.7张开起,兰建平,周海鹰.基于UDS协议的整车VCU固件升级方案.信息技术与

33、网络安全,2 0 2 1,40(1):67-73.8 陈睿智,石春,吴刚,等.面向OTA需求的汽车电控单元Bootloader设计J.仪表技术,2 0 2 1(2):8-12,2 2.9 Lingfeng Xie,Feng Luo.Research and Implementationof the UDS Diagnostic System C/Proceedings of 20166th International Conference on Information Engineeringfor Mechanics and Materials(ICIMM 2016):AtlantisPress,2016:12-16.10程绍珲。基于MPC5744P的线控转向控制系统研究D大连:大连理工大学,2 0 2 1.11】杨孝光.ECC校验的算法分析和程序实现 实验科学与技术,2 0 0 4(3):2 1-2 4.(编辑杨凯麟)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服