
汽车电子控制器的Flash的在线烧写方法.docx
3页汽车电子控制器的Flash的烧写方法专利名称:汽车电子控制器的Flash的烧写方法技术领域:本发明涉及一种汽车电子控制器的编程、软件下载方法背景技术:汽车的ECU (ELECTRONIC CONTROL UNIT,电子控制器)对整车的能量管理及各部件的协调运作起着关键作用在监控汽车的工作状态时,常常需要对ECU中的控制软件进行重新的标定、诊断和更新传统的调试、更新ECU中软件的方法,或者借助于JTAG(JointTest Action Group,联合测试行动小组)接口或BDM(Background Debug Mode,背景调试模式)接口进行烧写,或者将ECU拆卸下来烧写再安装回去显然,在ECU上增加额外的接口会增加ECU的制造成本,而拆卸再安装则大大增加了调试烧写的复杂程度 目前在ECU运行期间,已经可以实现外部信号在RAM中的标定通过专用的测量标定软件,用户可以改变RAM中的参数,但不能改变Flash中的参数为了解决这个问题,用户可以先下载一个特定的Flash服务程序至Flash中,Flash服务程序是完成对Flash的擦除、读写等操作,然后利用该程序改变Flash中的数据由于ECU运行时并不需要经常改写Flash中的数据,这么操作显然会浪费Flash的存储空间。
CCP(CAN Calibration Protocol,CAN标定协议)协议是一个基于CAN总线的标定协议CCP协议采用主从方式通讯,系统中只有一个主设备,它通过CAN总线连接一个或多个从设备主设备与从设备间通过会话实现数据传送等功能,这些功能的实现是进行标定、监控、诊断等工作的基础CCP协议已在某些ECU标定中得到应用,但目前尚无用该协议进行ECU下载的方法发明内容 本发明所要解决的技术问题是提供一种汽车电子控制器的Flash的烧写方法,该方法无需使用ECU的JTAG或B匿接口,也不占用ECU的Flash存储空间,提高了 ECU调试、更新的便利性 为解决上述技术问题,本发明汽车电子控制器的Flash的烧写方法包括如下步骤 第1步,计算机通过CAN总线连接汽车电子控制器,计算机作为主设备以CCP协议与汽车电子控制器建立逻辑连接; 第2步,计算机将Flash Kernel文件传送至汽车电子控制器的RAM,并在RAM中运行Flash Kernel文件; 第3步,计算机作为主设备以CCP协议和所述Flash内核程序建立逻辑连接,计算机调用Flash服务程序对汽车电子控制器的Flash进行擦除、修改、覆盖; 所述CCP协议从设备驱动软件包括CCP协议驱动程序和CAN总线接口驱动程序; 所述Flash Kernel文件包括CCP协议驱动程序、CAN总线接口驱动程序和Flash服务程序。
本发明使用ECU的CAN总线接口,目前汽车上大多使用CAN总线进行通信,因此 ECU都具备CAN总线接口 这样无需ECU具有额外的JTAG或B匿接口 ,因此可以减少ECU 的设计难度,减小体积并降低制作成本同时本发明将Flash Kernel文件下载到ECU的 RAM中,因此不占用ECU的Flash存储空间 下面结合附图和实施例对本发明作进一步详细的说明 图1是本发明所述方法的流程图; 图2是计算机与汽车电子控制器相连接的示意图; 图3是CCP协议从设备驱动软件的模块示意图; 图4是CCP协议驱动程序的流程图; 图5是计算机向汽车ECU的RAM传送Flash Kernel文件的示意图; 图6是计算机向汽车ECU的Flash覆盖Hex文件的示意图; 图7是本发明所述方法全过程中计算机的流程图; 图8是本发明所述方法全过程中汽车ECU的流程图具体实施例方式请参阅图l,本发明汽车电子控制器的Flash的烧写方法包括如下步骤 第1步,计算机通过CAN总线连接汽车电子控制器,计算机作为主设备以CCP协议 与汽车电子控制器建立逻辑连接 请参阅图2,计算机作为主设备和汽车电子控制器(作为从设备)相连接。
计算机 在硬件上具有CAN总线接口卡,汽车ECU在硬件上具有CAN总线驱动器,计算机通过CAN总 线连接汽车ECU CAN总线接口卡例如可采用Vector公司的CAN即e卡计算机还具有CCP 协议主设备驱动软件,包括CCP协议驱动程序和CAN总线接口驱动程序等汽车ECU还具 有CCP协议从设备驱动软件计算机采用CANape测试标定工具对汽车ECU进行各项操作 CAN即e工具包含有CCP协议的所有命令模块以及根据CCP协议编写的子命令模块 首先,配置主设备(计算机)的CAN即e Gr即hic界面在CAN即e软件的菜单栏 中确定需要配置Deviec选项为CCP Drive在Driver Setting配置中,对所需的参数项要 依次配置包括Protocol Parameters,其中CRO ID(命令发送帧)和DTO ID(数据发送 帧)应与从设备(汽车ECU)中CCP. h定义一致Flash参数项中地址段的填写应与从设 备中的Flash地址空间一致在Flash option选项中调入之前编译好的Flash Kernel文 件 其次,在CANape软件主菜单栏的Calibration选项中选择Download toFlash —栏,加载需要下载到Flash中进行覆盖的Hex文件。
CANape内部会对Hex文件进行解包,将地址信息和Flash段的设置进行匹配,并且进行校验和的校验 再次,通过CCP协议的Co皿ect命令,建立主设备与从设备的逻辑连接 第2步,计算机将Flash Kernel文件传送至汽车电子控制器的RAM,并在RAM中运行Flash Kernel文件 请参阅图5,计算机以CCP协议与汽车ECU建立逻辑连接由于CCP协议从设备驱动软件在汽车ECU的Flash中,因此实际上是计算机与汽车ECU的Flash中的CCP协议从 设备驱动软件建立逻辑连接(图中虚线所示)然后,计算机向汽车ECU的RAM传送Flash Kernel文件,传送完毕后在汽车ECU的RAM中运行Flash Kernel文件 首先,调用CCP协议的命令模块中的SET—MTA子模块,设置目标控制器的数据指 针,确定需要下载的FLASH Kernel文件在汽车ECU的RAM中的地址 其次,调用CCP协议的命令模块中的D0WNL0AD6模块向汽车ECU传送Flash Kernel文件,直至最后一个CAN数据帧传送完毕 第3步,计算机作为主设备以CCP协议和所述Flash内核程序建立逻辑连接,计算 机调用Flash服务程序对汽车电子控制器的Flash进行擦除、修改、覆盖。
请参阅图6,计算机以CCP协议与Flash Kernel文件建立逻辑连接由于Flash Kernel文件在汽车ECU的RAM中,因此实际上是计算机与汽车ECU的RAM中的Flash Kernel 文件建立逻辑连接(图中虚线所示)然后,计算机调用Flash Kernel文件中的Flash服务 程序对汽车ECU的Flash进行各项操作,包括擦除、修改、覆盖等例如,计算机调用Flash 服务程序对汽车电子控制器的Flash进行全部擦除,再传送一个新的Hex文件对汽车电子 控制器的Flash进行全部覆盖 首先,调用CCP协议的命令模块中的SET—MTA子模块,设置目标控制器的数据指 针,确定需要下载的HEX文件(即用于覆盖汽车ECU的Flash的文件)在ECU内存中的位置 其次,调用CCP协议的命令模块中的Clear_MTA子模块,擦除汽车ECU的Flash 再次,调用CCP协议的命令模块中的PR0GRAM6命令将需要在汽车ECU上运行的 HEX文件写入FLASH中进行覆盖操作 在上述方法的3个步骤之前,需要首先编写汽车电子控制器的CCP协议从设备驱 动软件和Flash Kernel文件 请参阅图3, CCP协议从设备驱动软件包括CCP协议驱动程序和CAN总线接口驱 动程序。
其中,CCP协议驱动程序用于建立符合CCP协议的通信,可以通过CANbedded工 具配置生成,并且需要按照CAN 2. 0的要求和CAN模块芯片资料的要求对CAN模块进行初 始化,生成相应的.c和.h文件CAN总线接口驱动程序用于建立CAN总线通信,完成CAN 信息帧在CAN总线上的发送和接收,并为CCP协议驱动程序提供两个函数接口 调用CAN_ vPutMsgOb j ()函数可以将CAN信息帧发送到CAN总线上,调用CAN_CAN_vGetMsgOb j ()函 数可以从CAN总线上接受CAN信息帧编写好的CCP协议从设备驱动软件可以存储在汽车 ECU的Flash中 所述Flash Kernel文件是用编译好的Hex文件改写的,包括CCP协议驱动程序、 CAN总线接口驱动程序和Flash服务程序,编译后再生成Hex文件其中的Flash服务程序 实现对Flash的擦除、读写、覆盖等操作的功能Flash Kernel文件在具体组成上分为两 部分其一为Flash Kernel Data (Flash Kernel的数据域),由FLASH、 CAN、 CCP驱动程序 集成编译通过后的Hex文件组成;其二为Flash kernel Config(Flash Kernel的配置头文 件),由Flash_kernel_Name (文件名)、Flash_kernel_f ile_ADDR(HEX文件的起始地址)、 Flash_kernel_size (Hex文件的大小)、Flash_kernel_RAM_ADDR(Hex文件中RAM的地址)、 Flash_kernel_RAM_ADDR_START(Hex文件中RAM的起始地址)组成。
由于Flash Kernel文件最终下载到汽车ECU的RAM中,因此需要在生成HEX文件时,将整段程序都定义到实际 RAM区域内 请参阅图4,这是CCP协议驱动程序的流程图CCP协议驱动程序以一个无限循环 的形式工作首先等待主设备的CRO(命令接收帧),若CAN总线上没有CRO帧,则任务挂 起若发现主设备的CRO帧则继续执行后面的步骤若CAN总线上有CRO帧,则CCP协议 驱动程序调用CAN总线接口驱动程序的CAN_VGetMsgObj ()函数来获取主设备的CRO帧 随后解析CRO命令帧,获取主设备发送的命令码及命令参数根据该命令执行相应动作 执行完毕后,调用ccpSend()函数发送DTO(数据发送帧),在ccpSend()函数中调用CAN_ vPutMsgObj()函数,回送成功执行完毕的应答帧若需回送参数则在DTO帧中相应位置回 送应答参数CCP协议为确保主设备与从设备之间正常通信,每次发送后,程序必须通过调 用CCP driver中的ccpSendCallback()子函数检查刚才的DTO是否已经发送,否则不能发 送下一帧报文针对不同的CAN driver实现,该函数调用的位置不同。
当检测出DTO正常 发送后,主函数将CCP标志位清空,CCP协议驱动程序回到第一步,继续等待CAN总线上的 CRO帧 请参阅图7,这是本发明所述方法全过程中主设备计算机的流程图首先配置计算 机的CAN即e Gr即hic界面,对所需的参数项要依次配置包括Protocol Parameters,其 中CRO ID和DTO ID应与从设备汽车ECU中CCP. h定义一致Flash参数项中地址段的填 写应与汽车ECU中的Flash地址空间一致Flash option选项中调入之前编译好的Flash Kernel文件然后在主菜单栏的Calibration选项中选择Download to Flash—栏,加载 需要下载到Flash中的Hex文件CAN即e内部会对Hex文件进行解包,将地址信息和Flash 段的设置进行匹配,并且进行校验和。
