您的位置 首页 元件

根据CAN总线的ECU在线编程技术

随着IAP技术的出现以及Flash价格的降低,一般的电控单元(ECU)都具有IAP(InApplicationProgramming)功能和较大的Flash空间,为

  跟着IAP技能的呈现以及Flash价格的下降,一般的电控单元(ECU)都具有IAP(In Application Programming)功用和较大的Flash空间,为完结ECU在线编程功用供给了必要条件。现在依据IAP技能的在线编程的计划有许多,选用的通讯办法和详细完结办法也各不相同。参阅文献[2]选用RS232总线和 YMODEM协议开发的用于智能终端的在线晋级体系,可是RS232总线的传输速率有限。参阅文献[3]选用LIN总线完结的适用于轿车ECU的在线晋级体系,LIN总线除了传输速率有限以外,一起它仅仅一种辅佐总线,并不是一切车身ECU都选用LIN接口。参阅文献[1][4]选用依据CCP(CAN Calibration Protoc01)协议的在线晋级体系,兼具CAN总线传输速率快和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所示。

  

  圈1 PC端下载程序流程图

  1.2 Bootloader规划

  Flash编程的机制首要有两种,分别是调用Flash擦写函数法和 Flash kernel。Flash kernel法需求在进行软件晋级时将Bootloader程序中Flash擦写以及相关的初始化程序都下载到单片机RAM中,这对RAM资源的要求较高,关于单片机来说这是有困难的。选用Flash擦写函数法,只需求在晋级程序时调用Flash擦写函数即可。关于某些单片机,在对Flash进行擦写时,加在Flash区的电压高于一般电压,会引起Flash区的操作不稳定,因而也需求将Flash擦写函数放在RAM中运转,这样选用Flash擦写函数可以有用的削减RAM区的占用。In—fineon XC2000单片机支撑一起对不同页的读/写操作,不会呈现Flash擦写操作不稳定的问题,因而本规划选用Flash擦写函数法。

  1.2.1 Flash空间代码散布

  本规划中ECU选用XC2785A单片机,其片上集成32 KB的PSRAM和832 KB的Flash(0xC00000~oxCCFFFF)用于代码存储。Flash阵列由4个块组成,分别是F0(256 KB,0xC00000~0xC3FFFF)、F1(256 KB,0xC40000~0xC7FFFF)、F2(256 KB,0xC80000~0xCBFFFF)、F3(64 KB,0xCC0000~0xCCFFFF)。每一个Flash块由若干个巨细为4 KB的扇区组成,而每一个扇区可分为32个页(128字节),可封每个页独自进行擦除和编程操作。Flash区段的最开端寄存程序的中止向量表,0xC01000~OxCODFFF区段寄存Bootloader代码,0xC0E000~0xC0EFFF区段中的最开端那个页寄存晋级标志,0xCOF000~0xCOFFFF区段为单片机保存区段,0xCl0000~0xCCFFFF段寄存运用程序,代码空间散布如图2所示。

  

  图2 Flash空间代码散布示惹图

  1.2.2 Bootloader程序流程

  复位中止向量的出口地址是0xC01000,因而单片机上电发动或许软件重启今后,首要跳转到STARTUP.C,经过判别晋级标志是否置位来进行跳转。若置位表明有晋级恳求,则进行Bootloader的初始化,然后履行主函数,晋级完结今后擦除标志位;若无晋级恳求则跳转到用户程序区履行用户程序。用户程序更新时,需求一起更新中止向量,这样确保用户程序可以正常运用中止功用。

  参阅文献[1]中选用的办法是在用户程序运转时,接受到衔接指令,则单片机跳转到Bootloader程序履行晋级流程,可是假如晋级进程中呈现过错,用户程序晋级未完结,则下一次上电体系将无法运转。参阅文献[4]中,选用上电进入Bootloader之前发送握手信号,等候上位机回复,这样每次上电都要先进行Bootloader的初始化,而且等候这种办法不能很好地确保和上位机衔接。本文选用添加晋级状况标志位的办法,用户程序在运转时,如有晋级恳求则置状况标志位,并软件重启。重启今后,单片机先检测状况标志位,有晋级恳求则进入Bootloader进行软件晋级,若晋级进程中呈现过错导致晋级未完结的话,晋级状况标志位将不会铲除,单片机重启今后依然进去Bootloader,直接操作上位机上的编程按钮即可进行程序晋级操作。这种办法可以有用处理晋级进程中呈现失利以及握手等候的问题,下位机软件流程如图3所示。

  

  图3下位机软件流程图

  1.3 在线编程体系作业流程

  体系衔接完结今后,经过上位机载入需求更新的运用程序文件,点击 “CONNECT”按钮,在线编程体系发动,体系作业进程如图4所示。上位机界面中显现衔接成功,则可进行下一步操作。点击擦除按钮,上位机发送擦除指令,下位机擦除相应Flash区域今后发送给上位机应对信号。上位机给下位机发送编程指令的一起,发送给下位机需求编程的页总数。下位机在接纳到页编程地址今后,接衔接纳上位机发送过来的16帧数据(一页128字节),然后擦除相应区域,并将这一页数据写入相应的页,页编程完结今后向上位机发送页编程完结应对,接着接纳上位机发送过来的下一页数据,当一切页编程完结今后向上位机发送编程完结应对信号。此刻断开衔接,ECU将会软件重启。若编程进程中有任一页编程失利,上位机则显现编程失利,断开衔接今后ECU重启,依然进入Bootloader程序,然后直接点击编程即可。

  

  图4 体系作业进程

  2 在线编程功用验证

  在线晋级体系选用PC机(装置有上位机软件),衔接广州周建功单片机发展有限公司的USB—CAN采集卡,ECU的CPU选用Infineon XC2785A单片机,体系衔接完结今后进行晋级测验。本文规划的在线编程计划测验成果如下:图5为待更新程序的HEX文件(经过Tasking环境生成),其间有下划线的位HEX文件记载中的数据记载,开始地址为0xCll000;图6为程序下载到Flash今后的数据,经过Tasking软件的 Debug状况,来检查Flash地址为0xCll000的数据。经过比照两幅图片,发现程序数据正确下载到了相应的Flash区域。在下载进程中,经过过错操作制作在线编程失利现象,然后断开衔接,ECU重启今后依然进入Bootloader程序,直接在上位机界面上点击“Program”,可以完结在线晋级。试验成果表明,所规划的依据CAN总线的在线晋级体系可以完结代码在线下载的功用,而且可以有用改进晋级进程中下载失利的问题。

  

  图5 方针HEX文件2图6 Flash中的数据

  结语

  本文提出的依据CAN总线的ECU在线晋级体系规划计划,切实可行,并已在Infineon XC2785A单片机上完结实践测验。Infineon XC2000单片机具有相同的内核,因而此计划将对这一系列单片机的Bootloader规划具有指导意义。一起选用晋级标志位的办法,关于单片机IAP 功用的完结供给一个有利的参阅。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/263286.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部