基于基于CAN总线的总线的ECU在线编程技术在线编程技术
本文采用CAN总线,基于CCP原理自定义协议的在线升级系统,具有传输速度快的特点。自定义协议各命令基
本沿用CCP协议,但内容做了改动,这样通过改动协议内容能够很好地适合特定环境的应用。同时在升级过程
中加入升级请求标志位,能够很好地改进程序下载过程中命令延时等待、应用程序下载失败以后下次无法连接
的问题。
本文采用CAN总线,基于CCP原理自定义协议的在线升级系统,具有传输速度快的特点。自定义协议各命令基本沿用CCP协
议,但内容做了改动,这样通过改动协议内容能够很好地适合特定环境的应用。同时在升级过程中加入升级请求标志位,能够
很好地改进程序下载过程中命令延时等待、应用程序下载失败以后下次无法连接的问题。
1 在线编程系统设计
在线编程系统硬件主要包含三个部分:带有下载上位机软件的PC机、USB-CAN接口卡和安装有Bootloader程序的ECU.上位
机通过USB-CAN接口卡与ECU通信,并进行代码的升级。软件主要包含两个部分:上位机的Bootloader下载程序和下位机的
Bootloader程序。
1.1 通信协议与上位机程序设计
1.1.1 通信协议的制定
系统通信协议的以CCP协议原理为基础,结合实际操作过程的需求来制定。CCP协议提供11个基本命令和17个可选命令,基
本命令包括:CONNECT、GET_CCP_VERS lON、EXCHANGE_ID、SET_MTA、DNLOAD、UPLOAD、
GET_DAQ_PTR、WRITE_DAQ、START_STOP、DISCONNECT。本协议采用其中CONNECT、DISCONNECT、
CLEAR_MEMORY、PROGRAM、SETMTA.命令内容根据实际需要自定义;消息应答信号有连接成功应答、编程准备就绪应
答、页编程完成应答、编程完成应答、编程失败应答、SECTION擦除就绪应答、SEC-TION擦除完成应答等。本套自定义协
议能够很好地应用在实际下载过程中。
1.1.2 PC端下载程序的组成
PC端的Bootloader下载程序主要功能是实现对目标文件的解析和与下位机软件通信。下载程序采用VisualC++6.0编写,主要
分成目标文件加载与解析以及Flash编程两个模块。
(1)目标文件的生成和解析
系统应用程序文件采用*.HEX格式文件,该文件是记录文本行的ASCII文本文件,每一行是一条记录,每条记录是16进制数组
成的机械码或数据常量。记录格式::LL ADDR TT[DDD…]CC
其中,冒号是记录开始;LL表示数据长度,即[DDD…]的字节数;ADDR表示地址信息;TT表示记录的类型;[DDD…]表示数
据内容;CC表示校验和。
利用Tasking开发环境,能够生成包含应用程序的*.HEX文件,文件中的记录类型只有数据记录、线性扩展地址记录和文件结
束记录。通过上位机载入目标文件,逐条检索文件内容将带有地址信息的数据解析出来,并以CAN数据帧(8字节)的形式存
放,每16帧数据组合成一个页,同时记录每个数据页的首地址。
(2)Flash编程模块
Flash编程模块实现与下位机的通信,主要包含命令的解析、CAN总线驱动、数据发送和状态显示等部分。CAN总线驱动采用
广州周立功单片机发展有限公司的USB-CAN采集卡的驱动程序,加入提供的库函数,来实现对于CAN总线数据的发送和接
收。上位机软件提供相关命令的按钮,下载过程中通过按动相应按钮来实现命令的发送。下载过程中如果接收到连接成功、编
程完成或者编程失败等信号以后,显示相应状态。
1.1.3 PC端下载程序的运行流程
PC端程序运行以后,通过上位机界面上的“载入文件”按钮,将要升级程序HEX文件载入,点“解析按钮”,程序自动将HEX文件
分成包含有效数据长度为128字节的页,同时将页首地址保存。根据已经制定好的协议,上位机将这些命令封装成CAN总线消
息发送到下位机。编程过程中,上位机将所需要发送的程序页总数发送给下位机,然后从第一页开始发送,每一页发送完成以
后,等待下位机发送页编程完成信号,完成以后继续发送下一页,直到所有程序页都发送完成,这时如果无错误,接收下位机
编程完成应答消息,显示编程完成;否则显示编程失败。程序流程图如图l所示。
评论0