基于UDS 协议的刷写效率提升
2023-11-29潍柴动力股份有限公司薛雷王喜龙刘栋柴广卿娄毅杰杜飞娇
潍柴动力股份有限公司 薛雷 王喜龙 刘栋 柴广卿 娄毅杰 杜飞娇
本文以一款具备OTA 功能的车载终端为例,针对刷写时间长的问题,从刷写流程开展分析,对刷写过程耗时分项统计,分析刷写速度的影响因素与改进方式。经验证,改进后的设备可以有效减少刷写时间,提高刷写效率。
控制器刷写是发动机下线和后市场服务常用的功能。基于CAN 的控制器刷写是当前商用车控制器程序升级的主要方式[1]。随着控制器功能的不断增加,控制器固件程序越来越大,导致刷写时间也越来越长。太长的刷写时间,会对刷写稳定性、效率产生不良影响。特别是在OTA 技术的应用下,减少刷写时长是产品应用亟须解决的问题。
1 基于UDS 协议的刷写流程
基于UDS 协议的刷写流程中,应用层遵循ISO15765-3、ISO14229 协议要求,网络层遵循ISO15765-2 协议要求[2]。刷写过程核心服务有:0x10-诊断会话管理、0x27-安全访问、0x31-例程控制、0x34-请求下载、0x36-数据传输、0x37-传输退出,具体刷写流程如图1 所示。
图1 控制器刷写流程图Fig.1 Controller swiping flow chart
刷写过程可分为两个阶段,第一阶段主要完成控制器的状态切换,并通过安全访问子服务中确保只有获得授权的用户才能对控制器进行刷写,提升系统安全性;第二阶段为刷写的具体实现,一般按照整区擦除,分块写入的方式进行。首先,控制器按照功能分区执行整区擦除。然后执行下载和写入,在此过程中,控制器校验下载的起始地址、地址范围等信息,校验通过后启动传输数据,在数据传输刷写完毕后,控制器对刷写的新数据进行校验,以保证数据的完整性和正确性[3]。
2 刷写耗时分析
某款终端产品,在产品应用中测试控制器刷写过程,完整流程总耗时5 分56 秒。耗时分布如表1 所示。
表1 刷写过程耗时统计Tab.1 Time consumption statistics of brush writing process
由表1 可见,在刷写过程中控制器擦除和数据传输为主要过程。其中控制器擦除速度与刷写流程无关,主要由控制器本身所决定,在本文中不做分析。
在编号6 的数据传输过程中,对控制器的数据接收及写入所需时间同样不做分析,仅考虑其在多包传输过程中的流控参数。控制器支持的传输参数如图2 所示。
图2 控制器的流控参数Fig.2 Flow control parameters of controller
在数据传输过程中,传输耗时由N_As、N_Br、N_Ar、N_Cs 组成。为简化分析,将网络层传输过程以及应用层的交互步骤整理为四个过程:流控帧的接收、续帧间隔、控制器应答以及OTA 设备多包传输间的间隔。步骤描述如图3 所示。
图3 数据传输序列图Fig.3 Data transmission sequence diagram
基于上述步骤的分项耗时统计数据如表2 所示。
表2 数据传输过程耗时明细Tab.2 Time consuming details of data transmission process
在上述步骤中,续帧传输为主要的数据传输过程,流控应答为网联传输层的传输控制,控制器应答为应用层应答确认。由于CAN2.0 协议的数据域只有8 字节,所以传输需要较多的发送次数。为降低刷写时长,可以从减少执行次数和降低单次执行时间方面分析优化方案。
从减少执行次数方面考虑,请求下载阶段的报文交互如图4 所示,可以看出控制器支持最大传输块的长度为0xFFF 字节(4095 字节),当前实际执行的传输块大小为0xFF 字节(255 字节),传输过程有效负载有提升空间。
图4 请求下载服务控制器应答Fig.4 Response of request to download service controller
另外,控制器中的数据分区存储,在数据文件中一般都存在无效的填充区数据,从控制器固件本身分析,减少控制器固件中无效数据,同样可以减少执行次数,缩短刷写时间。
从降低单次执行方面:多包数据的发送间隔较大,主要为OTA 软件程序调度周期的影响,该部分的耗时占比较大,存在优化的空间。
3 控制器刷写优化
在0x36 服务的数据传输过程中,增加每次多包传输的数据块大小,即数据块大小由0xFF 字节(255 字节)增加为0xFFF 字节(4095 字节)。
剔除控制器固件中的无效填充区域,减小需传输数据文件的大小。例如,当前控制器的Data0 分区大小为2MB,范围为0x09100000 ~0x09300000,对固件数据进行分析,去掉无效填充区后,数据可减小为1.86MB,即只包含范围为0x09100000 ~0x092DC3FF 的数据。
优化程序执行主要措施为优化OTA 设备程序中的定时器粒度,调整中断任务管理等。
综合执行以上措施后,刷写过程时间降低到2 分48秒。优化后的刷写过程耗时如表3 所示。
表3 优化后刷写过程耗时统计Tab.3 Time consumption statistics of brush writing process after optimization
4 结语
本文针对控制器刷写耗时,从刷写过程详细分析,结合控制器协议参数,分析关键步骤的优化方案,通过调整传输参数、减少填充区数据、优化OTA 设备软件程序三种措施,有效降低了控制器刷写时间,提高了刷写效率。