CN115480795A - 一种支持休眠功能的车载ecu控制单元的升级方法及系统 - Google Patents
一种支持休眠功能的车载ecu控制单元的升级方法及系统 Download PDFInfo
- Publication number
- CN115480795A CN115480795A CN202211011393.7A CN202211011393A CN115480795A CN 115480795 A CN115480795 A CN 115480795A CN 202211011393 A CN202211011393 A CN 202211011393A CN 115480795 A CN115480795 A CN 115480795A
- Authority
- CN
- China
- Prior art keywords
- ecu
- page
- upgrading
- partition
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于汽车ECU数据刷写技术领域,具体提供了一种支持休眠功能的车载ECU控制单元的升级方法及系统,其中方法包括:升级请求控制器向ECU发送升级请求指令帧;ECU开始升级并下载升级包;根据升级包大小及编程页大小计算出可编程总页数N;ECU向升级请求控制器请求发送第i页数据,i为从1开始递增的整数,升级数据并校验成功后,刷写第i页数据到待升级固件区的第i页,直到升级完毕。该汽车ECU升级方法可靠、安全,在ECU即时收到升级指令即时进入升级状态,无需用户进行确认,无需对车辆行驶状态进行判断。升级中ECU甚至可与车辆正常进行数据交互而不影响车辆行驶,从而做到不停车安全升级,极大提高用户体验,防止交通拥堵,提高通行效率。
Description
技术领域
本发明涉及汽车ECU数据刷写技术领域,更具体地,涉及一种支持休眠功能的车载ECU控制单元的升级方法及系统。
背景技术
随着汽车电子电气化、智能化的程度提高,功能集成越来越多。很多功能性、安全性缺陷在产品设计阶段往往无法预知。因此,主机厂大多要求部分车载设备的ECU控制单元在出厂状态时必须具备升级功能,市场反馈设备缺陷时,特别是当这种缺陷能够通过软件升级来补救时,通过远程OTA的方式由车联网设备或车载智能网关设备向ECU发起升级的方式来处理,俗称打补丁。这种方式往往是最经济最快的处理手段,也是广大主机厂的不二选择。
不同的ECU升级安全条件也不同,但大多ECU单元在启动安全升级流程包括对车辆停车状态、档位、车速等关键信号进行判断,甚至是通过人车交互系统确认来保证车辆处于绝对安全升级环境中。
ECU单元收到升级指令时,采用复位方式跳转到bootloader区以单任务方式处理升级刷写操作,ECU一旦进入刷写模式就不再响应与升级无关外部指令。ECU刷新未完成状态下,车辆无法启动。
尽管ECU在升级前已对一些关键信号进行采样判断,但由于车辆长时间抖动及老化产生的线束接触问题、车辆保险故障、等红路灯时临时停车等诸多外部因素都可能导致ECU异常进入刷写状态。当涉及行车安全的ECU进入刷写状态后,由于原运行代码已擦除,临时退出升级启动车辆变得不可能,必须等到刷写完成才能启动汽车,这样就会因汽车升级导致的长时间堵车问题,极大影响了公交通秩序和同行效率。
发明内容
本发明针对现有技术中存在的当涉及行车安全的ECU进入刷写状态后无法启动汽车导致交通堵塞的技术问题。
本发明提供了一种支持休眠功能的车载ECU控制单元的升级方法,包括以下步骤:
步骤一,升级请求控制器向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧;
步骤二,ECU向升级请求控制器回复待升级应用程序分区的起始地址Program_entry和可编程页大小;
步骤三,升级请求控制器通过通信接口继续向ECU发送请求下载升级包的命令;
步骤四,若ECU判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;
步骤五,置位ECU参数分区第四页已编程状态标识域,并将全局变量升级标识并赋值为真,记全局变量update_sts=升级包数据update_data;
步骤六,ECU向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;
步骤七,ECU接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;
步骤八,ECU向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
优选地,所述步骤一具体包括:
若当前ECU处于休眠低功耗状态时,升级控制器的唤醒帧用于唤醒ECU;
若当前ECU处于运行状态时,不响应唤醒帧操作。
优选地,所述步骤一之前还包括步骤0:
首先,将存放ECU运行代码的Flash存储器进行线性连续的Bootloader区、参数区、第一应用程序分区及第二应用程序分区,且每个分区大小是最小擦除单元的整数倍;
其中,Bootloader区用于存放系统启动引导代码,引导程序读取第二分区参数区内容确定应用程序入口地址;
参数分区包括第一页、第二页、第三页及第四页;第一页用于存放应用程序的当前入口地址及其校验码,Bootloader代码首先读取此内容并进行校验,用于确定执行第一应用程序分区的程序还是执行第二应用程序分区的程序;第二页用于备份存放数据内容,每次在编程第一页的数据内容前,将第一页的数据内容复制到第二页的地址空间;第三页用于存放存储器最小擦除单元页大小、第一应用程序分区起始地址及分区大小、第二应用程序分区起始地址及分区大小;第四页用于存放待升级应用程序擦除状态标识、待升级应用程序区编程状态;
第一应用程序分区,用于存放应用程序代码,且在生产初始状态时存放应用程序代码;第二应用程序分区,存放应用程序代码,且在生产初始状态时为空。
其次,当ECU收到升级请求控制器发来的升级请求指令帧后,ECU跳转至Bootloader区开始运行。
优选地,所述ECU跳转至Bootloader区开始运行具体包括:
S01,ECU读取参数区的第一页内容,解析出应用程序入口地址A1和校验码V1;
S02,计算应用程序入口地址A1的校验值V11;
若V1的值等于V11的值,跳转至地址A1开始执行应用程序;
若V1的值不等于V11的值,则读取参数区第二页内容,解析出应用程序入口地址A2和校验码V2;跳转至地址A2开始执行。
优选地,所述步骤二具体包括:
若当前程序入口地址为第一应用程序分区地址,则待升级应用程序分区为第二应用程序分区;反之则待升级应用程序分区为第一应用程序分区。
优选地,在步骤三之后且在步骤四之前包括S100:
创建优先级高于通讯线程的休眠检测线程,用于检测ECU是否能进入休眠状态,当休眠线程检测到点火信号由无效信号跳变成有效信号后,创建所有与行车相关的任务,以保证跟车辆的正常信息交互。
优选地,所述S100具体包括以下情形:
(1),当休眠线程检测到点火信号由有效信号跳变成无效信号后,关闭所有与车辆行车相关的线程,查询全局变量update_sts的值;
(2),若当前的update_sts的值为升级包数据update_data,则继续等待update_sts的值被更新为更新参数update_para;
(3),若当前全局变量update_sts的值为update_none,则查询参数区第四页的待升级应用程序分区擦除状态标识。
优选地,所述S100具体包括以下情形:
若当前的全局变量update_sts的值为更新参数update_para,执行下列步骤:
S101,擦除参数分区第二页的数据内容;
S102,将参数分区第一页的数据内容复制写入到参数分区第二页做备份;
S103,擦除参数分区第一页的数据内容;
S104,向参数区第一页写入应用程序入口地址为已升级应用程序分区,并更新其校验值;
S105,擦除参数分区第二页的数据内容;
S106,将参数分区第一页的数据内容复制写入到参数分区第二页做同步;
S107,对全局变量升级标识赋值升级完成,记update_sts=更新完毕update_end;
S108,ECU判断点火信号为无效状态且update_sts为update_end持续5s后进入休眠状态。
优选地,在点火信号为无效状态、设备休眠前条件下执行步骤S101至S108,且在本次编程完成前不能擦除当前运行区。
本发明还提供了一种支持休眠功能的车载ECU控制单元的升级,所述系统用于实现支持休眠功能的车载ECU控制单元的升级方法,包括:
升级请求控制器,用于向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧及请求下载升级包的命令;
ECU,用于判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;
并向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;
向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
有益效果:本发明提供的一种支持休眠功能的车载ECU控制单元的升级方法及系统,其中方法包括:步骤一,升级请求控制器向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧;步骤二,ECU向升级请求控制器回复待升级应用程序分区的起始地址Program_entry和可编程页大小;步骤三,升级请求控制器通过通信接口继续向ECU发送请求下载升级包的命令;步骤四,若ECU判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;步骤五,置位ECU参数分区第四页已编程状态标识域,并将全局变量升级标识并赋值为真,记全局变量update_sts=升级包数据update_data;步骤六,ECU向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;步骤七,ECU接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;步骤八,ECU向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。该汽车ECU升级方法可靠、安全,在ECU即时收到升级指令即时进入升级状态,无需用户进行确认,无需对车辆行驶状态进行判断。升级中ECU甚至可与车辆正常进行数据交互而不影响车辆行驶,从而做到不停车安全升级,极大提高用户体验,防止交通拥堵,提高通行效率。
附图说明
图1为本发明提供的一种支持休眠功能的车载ECU控制单元的升级方法流程图;
图2为本发明提供的Flash分区示意图;
图3为本发明提供的休眠任务示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明提供的一种支持休眠功能的车载ECU控制单元的升级方法,包括:步骤一,升级请求控制器向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧;步骤二,ECU向升级请求控制器回复待升级应用程序分区的起始地址Program_entry和可编程页大小;步骤三,升级请求控制器通过通信接口继续向ECU发送请求下载升级包的命令;步骤四,若ECU判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;步骤五,置位ECU参数分区第四页已编程状态标识域,并将全局变量升级标识并赋值为真,记全局变量update_sts=升级包数据update_data;步骤六,ECU向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;步骤七,ECU接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;步骤八,ECU向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。该汽车ECU升级方法可靠、安全,在ECU即时收到升级指令即时进入升级状态,无需用户进行确认,无需对车辆行驶状态进行判断。升级中ECU甚至可与车辆正常进行数据交互而不影响车辆行驶,从而做到不停车安全升级,极大提高用户体验,防止交通拥堵,提高通行效率。
在一个具体的实施场景中:
步骤一,升级请求控制器向ECU发送唤醒帧。升级请求控制器在发送完唤醒帧后等待1秒钟向ECU发送升级请求指令帧。ECU通过通信接口收到升级请求指令帧。
需要说明的是:若当前ECU处于休眠低功耗状态时,升级控制器的唤醒帧用于唤醒ECU;若当前ECU处于运行状态时,不响应唤醒帧操作。
步骤二,ECU向升级请求控制器设备回复待升级应用程序分区起始地址Program_entry和可编程页大小。
需要说明的是当前程序入口地址和待升级应用程序分区入口地址是相对而言的。若当前程序入口地址为第一应用程序分区地址,则待升级应用程序分区为第二应用程序分区;反之则待升级应用程序分区为第一应用程序分区。当前应用程序分区可通过应用程序当前PC指针值是否小于第二应用分区起始地址来判断,如当前PC指针值是否小于第二应用分区起始地址,则当前程序入口地址为第一应用分区起始地址;如当前PC指针值是否大于第二应用分区起始地址,则当前程序入口地址为第二应用分区起始地址。前程序入口地址还可以通过读取参数区第一页内容或第二页内容来确定。
步骤三,升级请求控制器收到待升级应用程序分区起始地址Program_entry和可编程页大小参数后,升级请求控制器通过通信接口继续向ECU发送请求下载命令包的命令,命令含升级包大小。
步骤四,若ECU判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N。否则回复编程失败,退出升级程序。
步骤五,置位ECU参数分区第四页已编程状态标识域,并将全局变量升级标识并赋值为真,记全局变量update_sts=升级包数据update_data。
步骤六,ECU请求发送第i页数据(i从1开始的整数),只允许最后一页的数据长度小于最小擦除页大小。可以按页大小接收数据,也可以不按页大小接收数据长度。
升级请求控制器回复编程数据格式如下表所示:
步骤七,ECU接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页。具体包括以下步骤:
a,ECU判断当前页i值是否等于可编程总页数N,若否,将i值加1,跳转至步骤五执行;若是,继续执行下一步。
b,对刷新固件区代码进行校验,校验通过,则整个待升级应用程序编程完成。
步骤八,ECU向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
其中,如图2所示,将存放ECU运行代码的Flash存储器进行线性连续分区,每个分区大小是最小擦除单元的整数倍,具体分区至少包含以下四个区:
Bootloader区:系统上电/复位入口地址,用于存放系统启动引导代码,引导程序读取第二分区参数区内容确定应用程序入口地址。
参数区:参数分区大小至少分为4个页空间大小,4个页空间分别为第一页、第二页、第三页及第四页。
第一页用于存放应用程序的当前入口地址及其校验码,Bootloader代码首先读取此内容并进行校验,用于确定执行第一应用程序分区的程序还是执行第二应用程序分区的程序。
第二页用于备份存放数据内容,该数据内容为第一页数据内容的备份。每次在编程第一页的数据内容前,将第一页的数据内容复制到第二页的地址空间,防止极端条件下更新第一页的数据内容不完整,还可以防止数据校验不通过时导致的应用程序入口地址丢失问题,进而导致程序无法运行。其中,生产阶段第一页和第二页存放的应用程序入口地址均为第一应用程序分区的起始地址。
第三页用于存放存储器最小擦除单元页大小、第一应用程序分区起始地址及分区大小、第二应用程序分区起始地址及分区大小。此页内容不允许再修改,出厂后应启用写保护机制防止此页数据内容发生变化。
第四页用于存放待升级应用程序擦除状态标识、待升级应用程序区编程状态。编程状态即否已编程过,部分被编程和全部被编程都算作是已编程状态。此页出厂时默认写入的待升级应用程序擦除状态标识为已擦除状态、已编程标识域为空(未写入任何数据)。
第一应用程序分区即app1,用于存放应用程序代码,且在生产初始状态时存放应用程序代码。
第二应用程序分区即app2,存放应用程序代码,且在生产初始状态时为空。
优选的方案,当ECU程序上电/复位或被唤醒源唤醒后,即当ECU收到升级请求控制器发来的升级请求指令帧后,ECU跳转至Bootloader区开始运行;Bootloader代码执行开始,具体步骤如下:
S01,ECU读取参数区的第一页内容,解析出应用程序入口地址A1和校验码V1;
S02,计算应用程序入口地址A1的校验值V11;
若V1的值等于V11的值,跳转至地址A1开始执行应用程序;
若V1的值不等于V11的值,则读取参数区第二页内容,解析出应用程序入口地址A2和校验码V2;跳转至地址A2开始执行。
优选的方案,参考图3,Bootloader代码执行完成后具体包括以下步骤:
S1,跳转到应用程序代码区(app1和app2)。
S2,初始化用于编程操作的通讯接口,通信接口须具备休眠唤醒功能(通讯接口可以是CAN、SPI、IIC、USART、USB等具有外部通讯能力的一种或多种)。
S3,获取当前待升级应用程序入口地址Program_entry。
S4,创建全局变量升级标识赋初值为update_none,记全局变量update_sts=全局变量升级标识初值update_none。
S5,创建优先级为P+1的休眠检测线程,用于检测ECU是否能进入休眠状态。
S6,创建优先级为P的通讯线程。其中,数字P越大,线程优先级越低,即P+1优先级大于P优先级。
S7,当休眠线程检测到点火信号由无效信号跳变成有效信号后,创建所有与行车相关的任务,以保证跟车辆的正常信息交互。具体分为以下几种情况:
当休眠线程检测到点火信号由有效信号跳变成无效信号后,关闭所有与车辆行车相关的线程,查询全局变量update_sts的值。
若当前全局变量update_sts的值为升级包数据update_data,则继续等待update_sts的值被更新为更新参数update_para。
若当前的全局变量update_sts的值为更新参数update_para,执行下列步骤,以下步骤应在点火信号为无效状态、设备休眠前条件下执行,本次编程完成前不能擦除当前运行区:
S71,擦除参数分区第二页的数据内容;
S72,将参数分区第一页的数据内容复制写入到参数分区第二页做备份;
S73,擦除参数分区第一页的数据内容;
S74,向参数区第一页写入应用程序入口地址为已升级应用程序分区,并更新其校验值;
S75,擦除参数分区第二页的数据内容;
S76,将参数分区第一页的数据内容复制写入到参数分区第二页做同步;
S77,对全局变量升级标识赋值升级完成,记update_sts=更新完毕update_end;
S78,ECU判断点火信号为无效状态且update_sts为update_end持续5s后进入休眠状态。
若当前全局变量update_sts的值为update_none,则查询参数区第四页的待升级应用程序分区擦除状态标识,如待升级应用程序分区擦除状态标识处于已擦除状态,且已编程标识未置位,ECU等待5S后自动进入休眠状态;如待升级应用程序分区处于未擦除状态,或待升级应用程序分区擦除状态标识为已擦除且已编程标识已被置位,则ECU执行擦除待升级应用程序分区操作,擦除待升级应用程序分区操作完成后,擦除第四页地址空间,更新待升级应用程序分区擦除状态标识为已擦除,将待升级应用程序分区地址和擦除状态标识更新到参数分区第四页地址空间中,待升级应用程序已编程状态标识域保持为空。最后ECU进入休眠状态。
本发明实施例还提供了一种支持休眠功能的车载ECU控制单元的升级,所述系统用于实现支持休眠功能的车载ECU控制单元的升级方法,包括:
升级请求控制器,用于向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧及请求下载升级包的命令;
ECU,用于判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;
并向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;
向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
其中ECU满足以下功能:
(1)ECU点火信号检测模块。用于点火信号可用于唤醒ECU工作,同时用于创建与行车相关的线程。
(2)通信模块。用于ECU休眠状态时可用作唤醒源;接收到升级指令;接收升级数据;
(3)编程模块。用于通信模块接收的编程数据,对待升级应用程序进行编程。
(4)休眠管理模块。用于检测ECU休眠的条件,使ECU进入休眠状态
升级请求控制器设备满足以下功能:
升级请求控制器可以是便携式诊断仪也可以是车辆网关或支持远程下载升级文件的车联网终端或等同具有类似功能的升级设备。升级请求控制器需同时存储有符合第一应用程序分区和第二应用程序分区的固件。待升级ECU可以是正常运行的ecu也可以是休眠状态升级。
有益效果:
(1)无须判断车辆行车状态可直接进行安全升级。
(2)以线程方式工作,可保证ECU在升级的时候也可与车辆进行信息交互。
(3)升级中无需客户等待,车辆可做到即用即走,对车辆驾乘人员来说可以做到无感升级,可避免升级引起的各种交通事故。
(4)升级中断电不会影响设备下次升级,只需下次升级前保证设备先休眠一次。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种支持休眠功能的车载ECU控制单元的升级方法,其特征在于,包括以下步骤:
步骤一,升级请求控制器向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧;
步骤二,ECU向升级请求控制器回复待升级应用程序分区的起始地址Program_entry和可编程页大小;
步骤三,升级请求控制器通过通信接口继续向ECU发送请求下载升级包的命令;
步骤四,若ECU判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;
步骤五,置位ECU参数分区第四页已编程状态标识域,并将全局变量升级标识并赋值为真,记全局变量update_sts=升级包数据update_data;
步骤六,ECU向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;
步骤七,ECU接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;
步骤八,ECU向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
2.根据权利要求1所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述步骤一具体包括:
若当前ECU处于休眠低功耗状态时,升级控制器的唤醒帧用于唤醒ECU;
若当前ECU处于运行状态时,不响应唤醒帧操作。
3.根据权利要求1所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述步骤一之前还包括步骤0:
首先,将存放ECU运行代码的Flash存储器进行线性连续的Bootloader区、参数区、第一应用程序分区及第二应用程序分区,且每个分区大小是最小擦除单元的整数倍;
其中,Bootloader区用于存放系统启动引导代码,引导程序读取第二分区参数区内容确定应用程序入口地址;
参数分区包括第一页、第二页、第三页及第四页;第一页用于存放应用程序的当前入口地址及其校验码,Bootloader代码首先读取此内容并进行校验,用于确定执行第一应用程序分区的程序还是执行第二应用程序分区的程序;第二页用于备份存放数据内容,每次在编程第一页的数据内容前,将第一页的数据内容复制到第二页的地址空间;第三页用于存放存储器最小擦除单元页大小、第一应用程序分区起始地址及分区大小、第二应用程序分区起始地址及分区大小;第四页用于存放待升级应用程序擦除状态标识、待升级应用程序区编程状态;
第一应用程序分区,用于存放应用程序代码,且在生产初始状态时存放应用程序代码;第二应用程序分区,存放应用程序代码,且在生产初始状态时为空;
其次,当ECU收到升级请求控制器发来的升级请求指令帧后,ECU跳转至Bootloader区开始运行。
4.根据权利要求3所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述ECU跳转至Bootloader区开始运行具体包括:
S01,ECU读取参数区的第一页内容,解析出应用程序入口地址A1和校验码V1;
S02,计算应用程序入口地址A1的校验值V11;
若V1的值等于V11的值,跳转至地址A1开始执行应用程序;
若V1的值不等于V11的值,则读取参数区第二页内容,解析出应用程序入口地址A2和校验码V2;跳转至地址A2开始执行。
5.根据权利要求3所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述步骤二具体包括:
若当前程序入口地址为第一应用程序分区地址,则待升级应用程序分区为第二应用程序分区;反之则待升级应用程序分区为第一应用程序分区。
6.根据权利要求1所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,在步骤三之后且在步骤四之前包括S100:
创建优先级高于通讯线程的休眠检测线程,用于检测ECU是否能进入休眠状态,当休眠线程检测到点火信号由无效信号跳变成有效信号后,创建所有与行车相关的任务,以保证跟车辆的正常信息交互。
7.根据权利要求6所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述S100具体包括以下情形:
(1),当休眠线程检测到点火信号由有效信号跳变成无效信号后,关闭所有与车辆行车相关的线程,查询全局变量update_sts的值;
(2),若当前的update_sts的值为升级包数据update_data,则继续等待update_sts的值被更新为更新参数update_para;
(3),若当前全局变量update_sts的值为update_none,则查询参数区第四页的待升级应用程序分区擦除状态标识。
8.根据权利要求6所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,所述S100具体包括以下情形:
若当前的全局变量update_sts的值为更新参数update_para,执行下列步骤:
S101,擦除参数分区第二页的数据内容;
S102,将参数分区第一页的数据内容复制写入到参数分区第二页做备份;
S103,擦除参数分区第一页的数据内容;
S104,向参数区第一页写入应用程序入口地址为已升级应用程序分区,并更新其校验值;
S105,擦除参数分区第二页的数据内容;
S106,将参数分区第一页的数据内容复制写入到参数分区第二页做同步;
S107,对全局变量升级标识赋值升级完成,记update_sts=更新完毕update_end;
S108,ECU判断点火信号为无效状态且update_sts为update_end持续5s后进入休眠状态。
9.根据权利要求8所述的支持休眠功能的车载ECU控制单元的升级方法,其特征在于,在点火信号为无效状态、设备休眠前条件下执行步骤S101至S108,且在本次编程完成前不能擦除当前运行区。
10.一种支持休眠功能的车载ECU控制单元的升级,其特征在于,所述系统用于实现如权利要求1-7任一项所述的支持休眠功能的车载ECU控制单元的升级方法,包括:
升级请求控制器,用于向ECU发送唤醒帧,等待1秒钟向ECU发送升级请求指令帧及请求下载升级包的命令;
ECU,用于判断升级包大小满足小于或等于待升级应用程序分区大小,则ECU根据升级包大小及编程页大小计算出可编程总页数N;否则回复编程失败,退出升级程序;
并向升级请求控制器请求发送第i页数据,i为从1开始递增的整数;接收第i页升级数据并校验成功,刷写第i页数据到待升级固件区的第i页;
向升级请求控制器回复升级成功,ECU对全局变量升级标识赋值升级完成,记全局变量update_sts=更新参数update_para,ECU退出编程线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211011393.7A CN115480795A (zh) | 2022-08-23 | 2022-08-23 | 一种支持休眠功能的车载ecu控制单元的升级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211011393.7A CN115480795A (zh) | 2022-08-23 | 2022-08-23 | 一种支持休眠功能的车载ecu控制单元的升级方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115480795A true CN115480795A (zh) | 2022-12-16 |
Family
ID=84423152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211011393.7A Pending CN115480795A (zh) | 2022-08-23 | 2022-08-23 | 一种支持休眠功能的车载ecu控制单元的升级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115480795A (zh) |
-
2022
- 2022-08-23 CN CN202211011393.7A patent/CN115480795A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
JP4548601B2 (ja) | 自動車用制御ユニット | |
CN102135922B (zh) | 应用程序的刷新方法和系统 | |
CN112000358B (zh) | 充电桩的升级方法与智能充电桩 | |
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
CN112540725A (zh) | 非易失性数据存储方法、嵌入式系统以及存储介质 | |
CN112631625B (zh) | 嵌入式设备的系统升级方法、装置及嵌入式设备 | |
CN111142911A (zh) | 具有异常恢复功能的嵌入式系统及其升级方法 | |
CN111782246A (zh) | 基于总线的多节点设备嵌入式程序升级方法 | |
US7934050B2 (en) | Microcomputer for flash memory rewriting | |
CN111459508B (zh) | 一种BootLoader自升级的方法及系统 | |
CN113093694A (zh) | 一种基于uds的车载电控单元数据刷写方法及系统 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN116431186A (zh) | 一种车载ecu的升级方法、装置及介质 | |
CN115480795A (zh) | 一种支持休眠功能的车载ecu控制单元的升级方法及系统 | |
CN117215827A (zh) | 基于can诊断的mcu软件刷新及加载备份的方法 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN102799496A (zh) | 一种与非型闪存操作系统内核和文件系统校验方法及装置 | |
CN100492293C (zh) | 一种客制化基本输入输出系统的更新方法 | |
JP2002175193A (ja) | プログラム書き換え装置及びプログラム書き換え方法 | |
CN112732301A (zh) | 一种车辆升级方法和装置 | |
CN114047715A (zh) | Ecu应用层软件更新时外围器件的控制方法和存储介质 | |
CN112599172B (zh) | 电子控制单元的数据写入方法、装置及存储介质 | |
CN115437670B (zh) | 基于tftp的汽车控制器程序升级系统 | |
CN116185461B (zh) | 固件升级方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |