基于LabVIEW实现Flash Bootloader刷写方法的研究
2017-09-04曾宇文
曾宇文
【摘 要】目前现有的ECU软件刷写方法有PE刷写和Flash Bootloader刷写两种,且Flash Bootloader是主流的方法;本文从Flash Bootloader的角度阐述了利用普通USB CAN工具基于LabVIEW软件如何实现ECU刷写的方法,同时更好的熟悉Flash Bootloader的流程。
【关键词】Flash Bootloader;车载电控单元
【Abstract】Currently existing ECU brush method have PE parts and Flash Bootloader, and Flash Bootloader is the mainstream method; This paper describes that how to realize the ECU brush method by using ordinary USB CAN Device based on LabVIEW software from the perspective of?Flash Bootloader, at the same time, be familiar with the process of Flash Bootloader better.
【Key words】Flash Bootloader; ECU
0 引言
随着汽车市场新产品迭代更新速度的加快,ECU的开发周期也要跟随着整车开发周期缩短。从而ECU的软件更新也要越来越快,主机厂也渐渐的使用自身制定的Flash Bootloader规范要求供应商或自主开发的电子零部件按照自己的规范编程软件,以使主机厂自己也可对车辆ECU刷写软件,提高工作效率,减少供应商的出差成本,缩短整车开发周期。
1 Flash Bootloader介绍
Flash Bootloader就是一种通过CAN总线诊断服务来实现刷写ECU软件的引导程序。主要应用于研发、生产、以及售后服务当中,由硬件设备相关的CAN驱动层、实现ISO15765-2协议的传输层、实现所有下载相关的诊断服务层(符合ISO 14229协议)、Bootloader、用于安全访问的模块、Flash驱动数据以及应用下载数据组成。
2 USB CAN工具以及LabVIEW软件的介绍
1)USB CAN工具成本低,体积小巧,即插即用,符合CAN2.0A/B 规范,支持 5Kbps~1Mbps 之间的任意波特率,并支持LabVIEW软件进行二次开发,能够满足各种应用开发需求,为工业通讯 CAN 网络提供了可靠性、高效率的解决方案,被开发者广泛使用。本文就是基于这些工具作为硬件接口进行的开发。
2)LabVIEW软件是一种程序开发环境,类似于C/C++和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是容易理解的框图和流程图的形式。
3 刷写程序设计
设计开始之初,首先需要把整体的设计思路构思出来,才能快速高效的把程序写出来。
3.1 USB CAN设备驱动集成
把各个USB CAN工具的动态函数库DLL按照Open Device.vi、Send CAN data.vi、Receive CAN data.vi、Close Device.vi封库起来,保证LabVIEW软件中CAN驱动底层的可靠性,稳定性。
1)Open Device.vi:用于初始化程序时打开对应的USB CAN设备
2)Send CAN Data.vi:用于配置文件(Flash Drive,应用数据APP)以及由诊断报文形成的FBL数据流发送给ECU,以达到刷写目的
3)Receive CAN data.vi:用于接收ECU报文,用于判断下一帧FBL数据流的发送和整体刷写进度条的确认
4)Close Device.vi:用于关闭当前使用的USB CAN设备,以便下次能正常打开运行设备
3.2 FBL刷写数据流
根据软件刷写的流程规范把FBL的数据按顺序排列,形成FBL数据流,数据流就是一连串的CAN总线诊断报文。
3.3 FBL刷写数据流入发送队列
创建用于临时存放的FBL数据流的队列,利用LabVIEW队列的生产者-消费者模式,有时序的把需要发送的诊断服务报文、Flash驱动文件和应用数据文件按照规范处理成可CAN诊断报文,并按照FBL刷写数据流的先后顺序封装入列到发送队列中。
3.4 FBL刷写数据流出发送队列
把已经入发送队列的FBL刷写数据流按时序出发送列到Send CAN Data.vi中,时序是根据Receive CAN data.vi发送出来的诊断响应报文来判断的,以防FBL刷寫数据流发送过快,被刷ECU来不及响应造成刷写失败。
3.5 Flash驱动文件与应用数据文件解析
软件刷写最为关键的就是要把Flash驱动文件与应用数据文件写入到ECU中去,而Flash文件与应用文件都是十六进制文本,同时经过软件组同事加密,使用文本打开是一连串长长的16进制,同时只能以CAN总线诊断报文形式写入ECU,所以需要按照规范解析,解析的过程就是用LabVIEW软件把文本的16进制进行折分组合形成CAN报文的过程,同时需要校验提取数据的完整性和正确性。
3.6 安全算法DLL的制作
在下载Flash驱动文件之前需要使ECU进行安全访问模式,因为各个ECU出于安全考虑都会设置安全访问算法,以防被恶意程序篡改软件,对车辆来说是非常致命的。考虑到本刷写程序是支持多个ECU Flash Bootloader刷写的工具,则制作了安全算法DLL接口,来对应不同的ECU安全算法。
3.7 报文呈现
由于整车总线上的存在有多个ECU节点,每个ECU节点都有很多CAN报文ID发出,为了防止程序处理时出现检索不到正在进行刷写ECU的诊断响应报文ID,需要在软件里把其它报文ID过滤掉,只接收响应ID。同时为了更好的界面显示,把诊断请求ID与诊断响应ID按照先后顺序排列,相同ID只显示最新状态,并统计ID的出现次数。
3.8 刷写进度显示
刷写进度条非常直观的体现了刷写的速度与完成度,所以也是设计的重点之一,程序编序时的思路是把诊断服务的总数与诊断肯定响应的总计数器相比得到刷写进度百分比,当100%时结果指示灯亮绿灯,Flash Bootloader刷写成功,当刷写过程中诊断响应ID回复否定响应或者超时不回复,结果指示灯亮红灯,FBL刷写失败。
4 验证总结
按照思路设计,并经过多次的调试优化后,程序终于完成。同时在台架与整车上对自主开发的不同ECU进行多次实验验证,并在刷写过程中故意制造干扰,经过100多次不完全统计,成功率高达98%。从而验证了基于LabVIEW设计刷写程序的可行性与稳定性。
【参考文献】
[1]阮奇桢.我和LabVIEW:一个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2012.
[2]ISO 14229,统一诊断服务--规范和需求[S].
[3]ISO 15765-2,基于控制器局域网的诊断--第2部分:网络层服务[S].
[4]ISO 15765-3,基于控制器局域网的诊断--第3部分:统一诊断服务的应用[S].
[责任编辑:朱丽娜]endprint