0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用CAN总线的ECU在线编程系统的设计方案介绍

电子设计 作者:电子设计 2018-11-01 08:08 次阅读

随着IAP技术的出现以及Flash价格的降低,一般的电控单元(ECU)都具有IAP(In Application Programming)功能和较大的Flash空间,为实现ECU在线编程功能提供了必要条件。目前基于IAP技术的在线编程的方案有很多,采用的通信方式和具体实现方法也各不相同。采用RS232总线和YMODEM协议开发的用于智能终端的在线升级系统,但是RS232总线的传输速率有限。采用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所示。

采用CAN总线的ECU在线编程系统的设计方案介绍

圈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所示。

采用CAN总线的ECU在线编程系统的设计方案介绍

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

1.2.2 Bootloader程序流程

复位中断向量的出口地址是0xC01000,因此单片机上电启动或者软件重启以后,首先跳转到STARTUP.C,通过判断升级标志是否置位来进行跳转。若置位表示有升级请求,则进行Bootloader的初始化,然后执行主函数,升级完成以后擦除标志位;若无升级请求则跳转到用户程序区执行用户程序。用户程序更新时,需要同时更新中断向量,这样保证用户程序能够正常使用中断功能。

采用的方法是在用户程序运行时,接受到连接命令,则单片机跳转到Bootloader程序执行升级流程,但是如果升级过程中出现错误,用户程序升级未完成,则下一次上电系统将无法运行。参考文献[4]中,采用上电进入Bootloader之前发送握手信号,等待上位机回复,这样每次上电都要先进行Bootloader的初始化,并且等待这种方式不能很好地保证和上位机连接。本文采用增加升级状态标志位的方法,用户程序在运行时,如有升级请求则置状态标志位,并软件重启。重启以后,单片机先检测状态标志位,有升级请求则进入Bootloader进行软件升级,若升级过程中出现错误导致升级未完成的话,升级状态标志位将不会清除,单片机重启以后仍然进去Bootloader,直接操作上位机上的编程按钮即可进行程序升级操作。这种方法能够有效解决升级过程中出现失败以及握手等待的问题,下位机软件流程如图3所示。

采用CAN总线的ECU在线编程系统的设计方案介绍

图3 下位机软件流程图

1.3 在线编程系统工作流程

系统连接完成以后,通过上位机载入需要更新的应用程序文件,点击“CONNECT”按钮,在线编程系统启动,系统工作过程如图4所示。上位机界面中显示连接成功,则可进行下一步操作。点击擦除按钮,上位机发送擦除指令,下位机擦除相应Flash区域以后发送给上位机应答信号。上位机给下位机发送编程命令的同时,发送给下位机需要编程的页总数。下位机在接收到页编程地址以后,连续接收上位机发送过来的16帧数据(一页128字节),然后擦除相应区域,并将这一页数据写入相应的页,页编程完成以后向上位机发送页编程完成应答,接着接收上位机发送过来的下一页数据,当所有页编程完成以后向上位机发送编程完成应答信号。此时断开连接,ECU将会软件重启。若编程过程中有任一页编程失败,上位机则显示编程失败,断开连接以后ECU重启,仍然进入Bootloader程序,然后直接点击编程即可。

采用CAN总线的ECU在线编程系统的设计方案介绍

图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总线的在线升级系统能够实现代码在线下载的功能,并且能够有效改善升级过程中下载失败的问题。

采用CAN总线的ECU在线编程系统的设计方案介绍

图5 目标HEX文件2图6 Flash中的数据

结语

本文提出的基于CAN总线的ECU在线升级系统设计方案,切实可行,并已在Infineon XC2785A单片机上完成实际测试。Infineon XC2000单片机具有相同的内核,因此此方案将对这一系列单片机的Bootloader设计具有指导意义。同时采用升级标志位的方法,对于单片机IAP功能的实现提供一个有益的参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43970

    浏览量

    620786
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129588
  • usb
    usb
    +关注

    关注

    59

    文章

    7422

    浏览量

    258061
收藏 人收藏

    评论

    相关推荐

    一种CAN总线与以太网互连系统设计方案

    本文介绍了一种CAN总线与以太网互连系统设计方案设计方案
    发表于 03-19 11:31 4047次阅读

    基于CAN总线ECU在线编程技术

    本文提出的基于CAN总线ECU在线升级系统设计方案,切实可行,并已在Infineon XC27
    发表于 08-07 13:58 2728次阅读
    基于<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的<b class='flag-5'>ECU</b><b class='flag-5'>在线</b><b class='flag-5'>编程</b>技术

    汽车CAN总线系统原理、设计与应用

    控制器局域网(CAN)是现代汽车网络通信与控制系统中的重要组成部分,《汽车CAN总线系统原理、设计与应用》全面、
    发表于 04-09 22:27

    什么是ECU在线编程技术?

      随着IAP技术的出现以及Flash价格的降低,一般的电控单元(ECU)都具有IAP(In Application Programming)功能和较大的Flash空间,为实现ECU在线编程
    发表于 10-29 06:07

    分享一款不错的LPC2294 CAN总线主节点设计方案

    本文提出一种基于LPC2294微控制器,使用μCLinux作为操作系统CAN主节点软硬件设计方案。主节点通过扩展SRAM、FLASH提高了系统的性能,
    发表于 05-25 06:59

    基于CAN总线的温度测控系统介绍

    ,而且能够将分布在不同地点的温度测控模块通过cAN现场总线连接起来,接入PC机进行集中监控和管理。本系统采用CAN现场
    发表于 09-19 06:45

    基于CAN总线的多ECU通信平台设计

    介绍CAN 总线及其通信协议J1939, 并设计基于CAN 总线的多ECU 通信平台的硬件结构;
    发表于 04-15 09:49 22次下载

    基于CAN 总线的多ECU 通信平台设计

    介绍CAN 总线及其通信协议J1939, 并设计基于CAN 总线的多ECU 通信平台的硬件结构;
    发表于 05-16 14:19 28次下载

    基于ARM的CAN总线智鹾节点的i殳计

    CAN总线是一种应用广泛的实时性现场总线,提出了基于具有ARM7TDMI内核的32位微控制器的CAN总线智能节点
    发表于 12-01 14:27 18次下载

    基于CAN-bus 总线的海关车场设备网方案

    基于CAN-bus 总线的海关车场设备网方案 CAN-bus 总线介绍
    发表于 03-22 15:44 34次下载

    基于P87C591的CAN总线超声测距系统设计方案

    基于P87C591的CAN总线超声测距系统设计方案  介绍一种以Philips公司的P87C591作为超声波传感器控制核心及
    发表于 03-29 15:08 1041次阅读
    基于P87C591的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>超声测距<b class='flag-5'>系统</b><b class='flag-5'>设计方案</b>

    CAN总线冗余的船舶监控系统设计方案

    CAN总线冗余的船舶监控系统设计方案  针对我国造船业的发展现状和现有系统中存在的一些问题,提出一种基于冗余
    发表于 03-29 15:08 950次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>冗余的船舶监控<b class='flag-5'>系统</b><b class='flag-5'>设计方案</b>

    多通道实时CAN总线模拟器设计方案解析

    及实时响应的场合,单通道CAN总线不能满足实际通信的要求。为此,介绍一种基于多通道实时CAN模拟器的设计方案。 1
    发表于 11-30 11:05 22次下载
    多通道实时<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>模拟器<b class='flag-5'>设计方案</b>解析

    CAN总线接口EMC标准电路设计方案

    CAN总线接口EMC标准电路设计方案
    发表于 07-12 10:45 199次下载

    CAN总线在汽车ECU中的作用

    CAN作为汽车ECU之间广泛应用的通信总线,有一些和应用相关的基础问题。
    的头像 发表于 08-19 09:38 2962次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>在汽车<b class='flag-5'>ECU</b>中的作用