一种重编程方法、系统、重编程设备及电子控制单元的制作方法_3

文档序号:8512220阅读:来源:国知局
[0105]当目标电子控制单元判定所述密钥不合符预设要求时,则向重编程设备发送否定响应。
[0106]步骤S136、向所述目标电子控制单元发送SetMta命令和ClearMemory命令,使所述目标电子控制单元从CAN标定协议中MTA指针指向的应用程序擦除的首地址开始,擦除与所述ClearMemory命令相同的数据长度;
[0107]SetMta命令即为指针放置命令,主要作用是告知目标电子控制单元需要将CAN标定协议中MTA指针指向某一地址,目标电子控制单元将MTA指针具体指向某地址主要由于下一条命令需要通过该地址执行操作,所以一般SetMta命令是需要配套使用的。
[0108]ClearMemory命令即为擦除命令,用于对应用程序中的原程序进行擦除,进行擦除操作一般需要擦除的首地址以及擦除数据长度信息,首地址信息在SetMta命令中已获取,数据长度信息则是通过ClearMemory命令进行传输。
[0109]本步骤中,SetMta命令的MTA指针指向应用程序擦除的首地址,用于配合ClearMemory命令的操作,因此重编程设备需要向目标电子控制单元同时发送SetMta命令和 ClearMemory 命令。
[0110]步骤S137、接收所述目标电子控制单元发送的擦除肯定响应;
[0111]所述擦除肯定响应由所述目标电子控制单元在判定利用所述首地址和所述数据长度得到的擦除长度没有超过所述应用程序地址长度范围后发送,否则向重编程设备反馈否定响应。
[0112]步骤S138、向所述目标电子控制单元发送SetMta命令和Program/Program_6命令,使所述MTA指针指向所述应用程序编程的首地址,对所述应用程序进行编程;
[0113]本步骤中,SetMta命令的MTA
[0114]指针指向应用程序编程的首地址,用于配合Program/Program_6命令的操作,因此重编程设备需要向目标电子控制单元同时发送SetMta命令和Program/Program_6命令。
[0115]步骤S139、利用校验算法计算编程数据的第一校验和;
[0116]本申请采用的校验算法为32位循环冗余校验算法,简称CRC32,当然,也可以采用其它的算法,本发明在此不做限定。
[0117]步骤S140、获取所述目标电子控制单元发送的第二校验和;
[0118]所述第二校验和由所述目标电子控制单元在重编程完成后对编程数据利用校验算法计算得到。
[0119]具体的,目标电子控制单元接收到重编程设备发送的SetMta命令和BuildChksum命令后,对编程数据利用校验算法计算得到第二校验和。
[0120]BuildChksum命令即为建立校验和命令,BuildChksum命令中包含了一次需要进行校验的数据长度,再加上SetMta命令传递的地址信息,则可以对该长度的数据进行校验。
[0121]若有多组待校验数据,则每校验完一组待校验数据后,需再次接收到重编程设备发送的SetMta命令和BuildChksum命令后,才可对下一组待校验数据进行校验,直到所有重编程的数据校验完毕。
[0122]步骤S141、判断所述第一校验和与所述第二校验和是否相等,如果是,则执行步骤S142 ;
[0123]步骤S142、向所述目标电子控制单元发送校验和通过的提示信息。
[0124]综上可以看出,重编程设备与目标电子控制单元建立连接后,首先重编程设备对目标电子控制单元进行安全访问,在目标电子控制单元由当前的刷写功能状态转变为解锁状态后,重编程设备对目标电子控制单元中的应用程序进行擦除重编程,并在应用程序重编程完成后,利用由编程数据得到的校验和对目标电子控制单元下载数据的完整性和正确性进行校验,并在确定校验和通过后,告知相应的目标电子控制单元。本发明中,重编程设备和目标电子控制单元信息交互过程采用的命令为CAN标定协议预先定义的命令,因此本发明实现了在基于CAN标定协议的基础上对重编程过程进行了完善,解决了因重编程程序下载不完全或是下载错误而导致的重编程功能不完善、操作过程繁琐等问题。
[0125]为进一步优化上述实施例,在步骤S142之后,还包括:
[0126]向所述目标电子控制单元发送Disconnect命令,与所述目标电子控制单元断开连接。
[0127]Disconnect命令即为断开连接命令,表示重编程设备和目标电子控制单元断开连接,表示流程结束。Disconnect命令中携带有与目标电子控制单元对应的逻辑地址,用于区分不同的目标电子控制单元。
[0128]在校验阶段过后,重编程设备通过Disconnect命令将校验结果发送给对应的目标电子控制单元,若传输的逻辑地址正确,则对应的目标电子控制单元会与重编程设备断开连接并发送肯定响应,否则发送否定响应并终止流程。
[0129]断开连接后的目标电子控制单元接收到重编程设备发送的校验和通过的提示信息后,会将应用程序标识为有效并进行复位,然后整个系统进行启动并引导运行应用程序。
[0130]其中,重编程设备向目标电子控制单元发送校验和通过的提示信息也是通过Disconnect命令发送。
[0131]在上述流程架构的指导下,应用程序已经能够完整地下载到目标电子控制单元中。在实际应用中经常还有一种需求,当应用程序只有一部分需要更新时,采用上述方法可以只更新其所在块的数据,不必更新整个应用程序,从而节约了更新数据的时间。
[0132]需要说明的是,本申请提供的重编程方法除可以解决CAN标定协议的局限性外,还可以满足“程序分割独立下载”和“多节点下载”等应用方面的需求,也就是说,本申请提供的重编程方法具有兼容性强的优点。
[0133]为进一步优化上述实施例,步骤S138具体包括:
[0134]将连续的重编程数据作为一个数据段,判断所述数据段中未进行编程的数据长度是否大于预设字节数,如果是,则向所述目标电子控制单元发送SetMta命令和Program_6命令,否则,向所述目标电子控制单元发送SetMta命令和Program命令。
[0135]具体的,假设预设字节数为6字节,则若数据段中还未进行编程的数据长度大于6字节,则使用Pr0gram_6命令进行编程操作,该命令依次能够进行6字节数据的编程;若数据段中未进行编程的数据长度不大于6字节,则使用Program命令进行编程操作,该命令中有一个字节表示数据长度,该数据长度与数据段中剩余的数据长度相等,表示进行当前数据段中最后一组数据的编程任务。目标电子控制单元收到SetMta命令和Pix)gram_6/Program命令后进行编程以及下一条SetMta命令和Program_6/Program命令的MTA指针的偏移计算,如果编程成功,则回复下一次MTA指针的数值及肯定响应,否则进行否定响应并终止流程。
[0136]需要说明的是,数据段包括两种:一种当重编程数据为连续数据时,将整个重编程数据作为一个数据段;另一种是当重编程数据为非连续数据时,将重编程数据分成多个数据段,每个数据段中为连续的数据。
[0137]需要说明的是,上述实施例中,若重编程设备接收到目标电子控制单元发送的否定响应后,会向对应的目标电子控制单元发送Disconnect命令,目标电子控制单元接收到该Disconnect命令后进行复位重启。
[0138]参见图3,本发明实施例公开的另一种重编程方法流程图,该方法应用于电子控制单元,包括:
[0139]步骤S21、接收重编程设备发送的Connect命令;
[0140]其中,Connect命令即为连接命令,用来使重编程设备与目标电子控制单元连接,Connect命令携带有重编程请求指示和与各目标电子控制单元对应的逻辑地址,重编程请求指示用于告知目标电子控制单元连接时重编程设备是否有重编程请求,逻辑地址用于区分不同的目标电子控制单元。
[0141]步骤S22、在确定当前需要重编程后,向所述重编程设备反馈连接肯定响应,与所述重编程设备建立连接;
[0142]电子控制单元根据自身当前状况进行判断,如果当前在重编程程序中运行,则直接根据在线情况向重编程设备反馈连接肯定响应;如果当前在应用程序中运行,则需要先进行复位,由在应用程序中运行转为在重编程程序中运行,然后再根据当前的在线情况向重编程设备反馈连接肯定响应。
[0143]步骤S23、接收所述重编程设备发送的包含刷写功能请求掩码的GetSeed命令;
[0144]其中,GetSeed命令即为请求种子命令,用来使重编程设备向目标电子控制单元获取种子。
[0145]步骤S24、在确定刷写功能符合安全访问要求后,将种子通过响应报文反馈给所述重编程设备;
[0146]步骤S25、接收所述重编程设备通过Unlock命令发送的密钥;
[0147]所述密钥由所述重编程设备利用安全访问算法计算所述种子后得到。
[0148]Unlock命令即为密钥解锁命令,用于使重编程设备根据种子计算得到的密钥发送给对应的目标电子控制单元。
[0149]步骤S26、在判定所述密钥符合预设要求后,向所述重编程设备发送密钥正确肯定响应和功能状态掩码;
[0150]具体的,目标电子控制单元将接收到的密钥和利用自身的安全访问算法计算得到的密钥进行比较,并在两个密钥相同时认定安全访问通过,从而向重编程设备发送密钥正确肯定响应。
[0151]所述功能状态掩码表征目标电子控制单元已将当前的刷写功能状态转变为解锁状态,若重编程设备没有接收到功能状态掩码,则表明整个流程已结束。
[0152]步骤S27、接收所述重编程设备发送的SetMta命令和ClearMemory命令,并从CAN标定协议中MTA指针指向的应用程序擦除的首地址开始,擦除与所述ClearMemory命令相同的数据长度;
[0153]SetMta命令即为指针放置命令,主要作用是告知目标电子控制单元需要将CAN标定协议中MTA指针指向某一地址,目标电子控制单元将MTA指针具体指向某地址主要由于下一条命令需要通过该地址执行操作,所以一般SetMta命令是需要配套使用的。
[0154]ClearMemory命令即为擦除命令,用于对应用程序中的原程序进行擦除,进行擦除操作一般需要擦除的首地址以及擦除数据长度信息,首地址信息在SetMta命令中已获取,数据长度信息则是通过ClearMemory命令进行传输。
[0155]本步骤中,SetMta命令的MTA指针指向应用程序擦除的首地址,用于配合ClearMemory命令的操作,因此重编程设备需要向目标电子控制单元同时发送SetMta命令和 ClearMemory 命令。
[0156]步骤S28、在判定利用所述首地址和所述数据长度得到的擦除长度没有超过所述应用程序地址长度范围后,向所述重编程设备发送擦除肯定响应;
[0157]步骤S29、接收所述重编程设备发送的SetMta
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1