一种基于UDS的CAN节点Bootloader设计方法及系统技术方案

技术编号:20024832 阅读:42 留言:0更新日期:2019-01-06 04:04
本发明专利技术公开了一种基于UDS的CAN节点Bootloader设计方法及系统,包括:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。在软件升级期间,将Flash驱动程序复制到指定RAM空间中,升级完成后清空指定RAM空间,保证了系统中不存在Flash驱动程序的任何拷贝。

【技术实现步骤摘要】
一种基于UDS的CAN节点Bootloader设计方法及系统
本专利技术属于汽车电子
,更具体的说是一种基于UDS的CAN节点Bootloader设计方法及系统。
技术介绍
在日新月异的电子行业中,新技术的出现往往导致产品的升级和更新换代。此外,电子产品都具有一定的生命周期,在使用过程中可能会暴露一些产品部署初期未能测试出来的bug,导致产品存在被修复的需要。更换烧录了最新程序的电子产品,成本高,操作复杂,甚至无法实现,相比之下,在产品现有的硬件上,通过无线网络、总线网络或其它通讯手段升级软件程序,部署实施新技术,或修复产品bug,成本低,操作简便,是一种得到广泛应用的方式。汽车电子零部件安装空间受限,拆卸不方便,通过拆卸并更换新的电子零部件的方式进行功能升级或者bug修复,成本高昂,操作复杂,而且更换电子零部件之后除了需要下载一些汽车相关信息,还需要重新和其它零部件进行学习和匹配。因此,在实施了CAN总线系统的汽车中,一般方法为设计一种Bootloader,通过CAN总线进行汽车电子零部件功能的升级。为了进行应用程序的擦除和烧写,Bootloader中设计了Flash驱动程序,Bootloader和应用程序都存放在CAN节点的程序Flash中。在汽车产品一般多达10年以上的整个生命周期中,如果发生了代码跑飞,程序跳转到Flash驱动程序中的擦除或者写入函数中时,会导致程序Flash数据被误擦除或错误写入,造成程序功能失效,而且无法恢复。现有方案公开了一种通过CAN总线升级CAN节点程序的方法,提出在进行节点程序更新之前,禁止报文发送和故障码的设置,避免了程序升级过程中网络负载率过高导致升级失败的问题,但是这种方法主要阐述了CAN节点升级系统的拓扑结构和降低网络负载率的方法,没有描述应用程序升级过程中的技术细节,也没有考虑Bootloader会在产品生命周期内因为发生故障擦除程序Flash数据的问题。现有方案公开了一种划分Bootloader以及应用程序的Flash空间的方法,以及CAN节点上电时判断是否存在应用程序的方法,没有描述升级过程,也没有描述应用程序升级过程中的技术细节,同样没有考虑Bootloader会在产品生命周期内因为发生故障擦除程序Flash数据的问题。
技术实现思路
为了克服现有技术中存在的不足,本专利技术提供一种基于UDS的CAN节点Bootloader设计方法及系统。通过UDS服务降低程序升级期间的网络负载率,避免了因网络负载率过高导致升级失败的问题,同时避免了DTC误检测。在程序升级期间将Flash驱动程序下载到指定RAM中,执行程序Flash数据的擦除和烧写,完成后将指定RAM空间清零。产品正常运行期间,程序Flash中不存在Flash驱动程序,从而避免了代码跑飞导致Flash数据误擦除和错误写入的问题。为了实现上述目的,本专利技术采用如下技术方案:在一个或多个实施方式公开的一种基于UDS的CAN节点Bootloader设计方法,包括:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。进一步地,通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送,具体为:通过功能寻址的UDS服务先禁止节点DTC检测,再禁止节点的报文发送。进一步地,校验通过后,在数据Flash中存储应用程序的有效标志。进一步地,所述Flash驱动程序,包括Flash擦除函数和Flash编程函数,Flash擦除函数的作用是擦除指定地址范围的Flash数据,Flash编程函数的作用是向指定地址的Flash位置写入指定长度的数据。进一步地,生成Flash驱动程序对应的二进制数据,具体为:编写Flash擦除函数和Flash编程函数,在链接文件中指定特殊代码段,记为FLASH_SEG;将Flash擦除函数和Flash编程函数放入FLASH_SEG中编译、链接,分别生成映射文件和程序数据文件;在生成的“映射文件”中找到Flash擦除函数和Flash编程函数对应的首地址和长度;在生成的“程序数据文件”中,将代码段FLASH_SEG中的数据提取出来。进一步地,所述Flash驱动程序对应的RAM空间的大小不小于Flash擦除函数的长度与Flash编程函数的长度之和。进一步地,对应用程序Flash数据进行校验,具体为:在应用程序Flash数据下载期间,对下载数据进行CRC32校验;数据下载完成后,通过UDS服务检查Flash数据的一致性:UDS报文中包含下载数据的CRC32校验值,如果报文中的CRC32校验值和Bootloader计算得出的CRC32校验值一致,数据校验通过。进一步地,通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测,具体为:先恢复CAN节点的报文发送,再恢复CAN节点的DTC检测。在一个或多个实施方式中公开的一种基于UDS的CAN节点Bootloader设计系统,包括服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。在一个或多个实施方式中公开的一种计算机可读存储介质,其上存储有计算机程序,包括:该程序被处理器执行时执行以下步骤:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。本专利技术有益效果:1、在下载程序数据之前,禁止CAN网络中所有节点的报文发送,降低了CAN节点的应用报文和网络管理报文发送对CAN总线带宽资源的消耗,避免了因网络负载率过高导致升级失败的问题;2、在软件升级期间,将Flash驱动程序复制到指定RAM空间中,升级完成后清空指定RAM空间,保证了系统中不存在Flash驱动程序的任何拷贝。3、Bootloader和应用程序中均不包含Flash驱动程序,避免了因程序跑飞导致Flash被误擦除和错误写入的问题;4本文档来自技高网
...

【技术保护点】
1.一种基于UDS的CAN节点Bootloader设计方法,其特征在于,包括:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。

【技术特征摘要】
1.一种基于UDS的CAN节点Bootloader设计方法,其特征在于,包括:通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送;生成并下载Flash驱动程序对应的二进制数据,将Flash驱动程序对应的二进制数据存储至设定的RAM空间;下载应用程序对应的二进制数据,通过执行Flash驱动程序,擦除并烧写应用程序Flash数据;应用程序下载并烧写完成后,对应用程序Flash数据进行校验;校验通过后,将Flash驱动程序对应的RAM空间中的数据清零;通过功能寻址的UDS服务恢复各个节点的报文发送和DTC检测。2.如权利要求1所述的一种基于UDS的CAN节点Bootloader设计方法,其特征在于,通过功能寻址的UDS服务禁止各个节点的DTC检测和报文发送,具体为:通过功能寻址的UDS服务先禁止节点DTC检测,再禁止节点的报文发送。3.如权利要求1所述的一种基于UDS的CAN节点Bootloader设计方法,其特征在于,校验通过后,在数据Flash中存储应用程序的有效标志。4.如权利要求1所述的一种基于UDS的CAN节点Bootloader设计方法,其特征在于,所述Flash驱动程序,包括Flash擦除函数和Flash编程函数,Flash擦除函数的作用是擦除指定地址范围的Flash数据,Flash编程函数的作用是向指定地址的Flash位置写入指定长度的数据。5.如权利要求1所述的一种基于UDS的CAN节点Bootloader设计方法,其特征在于,生成Flash驱动程序对应的二进制数据,具体为:编写Flash擦除函数和Flash编程函数,在链接文件中指定特殊代码段,记为FLASH_SEG;将Flash擦除函数和Flash编程函数放入FLASH_SEG中编译、链接,分别生成映射文件和程序数据文件;在生成的“映射文件”中找到Flash擦除函数和Flash编程函数对应的首地址和长度;在生成的“程序数据文件”中,将代码段FLASH_SEG中的数据提取出来。6.如权利要求5所述的一种基于UDS的CAN节点Bootloader设计方法,其特征在于,所述Flash驱动程序对应的RAM空间的大小不小于Flash擦除函...

【专利技术属性】
技术研发人员:马建辉于良杰李研强车晓波
申请(专利权)人:山东省科学院自动化研究所
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1