一种ecu程序刷写和检测方法

文档序号:9844312阅读:2622来源:国知局
一种ecu程序刷写和检测方法
【技术领域】
[0001 ]本发明涉及一种E⑶程序刷写和检测方法。
【背景技术】
[0002]在汽车电控单元ECU产品开发、生产以及售后服务等各个阶段,不便于采用DEBUG方式进行程序下载,需要采用CAN总线通信来完成程序更新刷写,此时就需要在ECU里运行引导程序BootLoader来完成软件系统启动和程序更新刷写。
[0003]引导程序BootLoader通常包含三个部分:系统启动引导程序,CAN通信驱动程序,FlashDriver编程驱动程序;其中前两部分通常固化在E⑶中。针对第三部分FlashDriver编程驱动程序,如果固化在ECU中,就有可能意外调用,而将导致严重的错误;因此通常采用两次下载的方式,即第一次下载上位机将FlashDriver编程驱动程序下载到E⑶的RAM中,第二次下载的是需要更新的代码和数据,运行在RAM中的FlashDriver负责将需要更新的代码和数据写入到指定的存储区域。

【发明内容】

[0004]本发明旨在提供一种安全性较高的ECU刷写和检测方法。
[0005]本发明通过以下方案实现:
[0006]—种E⑶程序刷写和检测方法,按以下步骤:
[0007]SI:系统复位E⑶初始化,包括初始化微控制器、系统时钟、CAN通信,建立存储空间映射;所述存储空间分为BootLoader模式用代码区、APP(即应用程序)模式用代码区、RAM区和EEPROM区;所述1?00让03(161.模式用代码区包括BootLoade FlashDriver编程驱动程序代码区、BootLoader程序区、复位中断向量表;APP模式用代码区包括APP入口函数、APP程序区、APP重映射中断向量表;RAM区包括BootLoader模式与APP模式共享RAM区、BootLoader模式与APP模式default RAM区、BootLoader FlashDriver编程驱动程序映射区;EEPR0M区包括BootLoader模式用区和APP模式用区;BootLoader模式用代码区中的复位中断向量表只会处理系统复位中断,并将其他中断指向APP模式用代码区中的APP重映射中断向量表,也就是说BootLoader程序包含了复位中断服务程序,APP程序包含了非复位中断服务程序。BootLoader模式与APP模式共享RAM区记录了由应用程序请求跳转到BootLoader程序的标识;EEPROM区中的BootLoader模式用区用于保存应用程序APP的有效标识信息,记录是否有可正常运行的应用程序;EEPROM中的APP模式用区则留给APP程序使用;
[0008]S2:读取存储空间的EEPROM区中APP模式用区的应用程序有效标识,读取RAM区中BootLoader模式与APP模式共享RAM区的应用程序请求跳转到BootLoader程序的标识,和BootLoader模式与APP模式default RAM区的用户强制要求进入BootLoader程序的标识;若应用程序有效标识为无效或应用程序请求跳转到BootLoader程序标识为跳转或用户强制要求进入BootLoader程序标识为强制要求进入,则执行S3,否则执行S4;
[0009]S3:进入BootLoader程序,包括:(I Wl^WtBootLoader FlashDriver编程驱动程序,将BootLoader FlashDriver编程驱动程序从BootLoade FlashDriver编程驱动程序代码区拷贝到BootLoade FlashDriver编程驱动程序映射区,并标记EQJ进入BootLoader刷写模式;(2)接收上位机下载的程序文件,将应用程序设置为无效,在将程序文件写入APP程序区之前先调用BootLoader FlashDriver编程驱动程序映射区中的FlashDriver擦除指令,然后调用编程指令,直到完成所有的程序文件写入;(3)通过CHECKSUM校验,检查刷写是否正确,如果不正确则等待系统复位;如果刷写成功,则更新应用程序为有效,并将APP有效标识写入EEPROM中的BootLoader模式用区;(4)删除BootLoader FlashDriver编程驱动程序映射区中的程序,然后调用APP入口函数AppMain(),执行S4 ;
[0010]S4:运行应用程序,并周期性的循环检测是否有ECU检测请求或者刷写请求;若有E⑶检测请求,则执行S5;若有E⑶刷写请求,则执行S6;
[0011 ] S5: E⑶接收到检测请求后,进入检测模式运行,与上位机进行问-答式通信,完成E⑶输入或者输出端口的检测;
[0012]S6:E⑶接收到刷写请求后,读取包括车辆运行工况、发动机工况、车速、发动机转速的信息,确定系统安全后,触发系统复位,并设置应用程序请求跳转到BootLoader程序的标识为有效。
[0013]所述S5步骤具体为:首先,HOST发出控制指令,ECU接收到后解析控制指令,并根据控制指令要求读取传感器输入信号或者控制执行器输出,然后根据控制指令要求和硬件在环系统HIL反馈的实际状态对控制结果进行对比分析,并反馈给HOST,最后由HOST对所有的控制指令和检测结果进行统计分析,完成ECU输入或者输出端口的检测。
[0014]若所述S3步骤中BootLoader刷写中断,则系统复位后再进入BootLoader刷写模式。
[0015]BootLoader模式代码区位于有保护功能的FLASH区域,通过设定专门的寄存器,使得BootLoader模式代码区是具有防止被擦除和被编写操作功能的代码区。在进入BootLoader刷写模式后,BootLoader模式用代码区中的BootLoader FlashDriver编程驱动程序会被从BootLoader FlashDriver编程驱动程序代码区拷贝到RAM区中的BootLoaderFlashDriver编程驱动程序映射区,也就是说BootLoader模式代码区中的BootLoaderFlashDriver编程驱动程序代码区只是用来存放代码,而不会被调用执行。
[0016]本发明的一种ECU程序刷写和检测方法,分离BootLoader FlashDriver编程驱动程序的代码区和映射区,将BootLoader FlashDriver编程驱动程序代码区中的BootLoaderFlashDriver复制到BootLoader FlashDriver编程驱动程序映射区,刷写完成后删除BootLoader FlashDriver编程驱动程序映射区里的代码,防止BootLoader FlashDriver编程驱动程序被意外调用执行。同时为了确保安全性,根据用户的刷写请求,通过结合车辆运行工况如车速、发动机转速等变量值判定系统是否可以进入BootLoader刷写模式,确保安全的进入刷写模式。完成程序刷写后,可以根据用户的指令进入检测模式,通过CAN通信采用问答的方式实现电控单元ECU的输入、输出端的检测。本发明的ECU程序刷写和检测方法,安全性较高。
【附图说明】
[0017]图1:实施例1中ECU程序刷写和检测流程图
[0018]图2:实施例1中E⑶存储空间示意图
[0019]图3:实施例1中E⑶检测流程框图
【具体实施方式】
[0020]以下结合实施例对本发明作进一步说明,但本发明并不局限于实施例之表述。
[0021]实施例1
[0022]—种ECU程序刷写和检测方法,其流程图如图1所示,按以下步骤:
[0023]SI:系统复位E⑶初始化,包括初始化微控制器、系统时钟、CAN通信,建立存储空间映射;如图2所示,存储空间分为BootLoader模式用代码区、APP(即应用程序)模式用代码区、RAM区和EEPROM区;BootLoader模式用代码区包括BootLoade FlashDriver编程驱动程序代码区、BootLoader程序区、复位中断向量表;APP模式用代码区包括APP入口函数、APP程序区、APP重映射中断向量表;RAM区包括BootLoader模式与APP模式共享RAM区、BootLoader
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1