掌桥专利:专业的专利平台
掌桥专利
首页

一种用于车身控制ECU的安全无感OTA刷新方法

文献发布时间:2024-04-18 20:02:18


一种用于车身控制ECU的安全无感OTA刷新方法

技术领域

本发明涉及BCM控制固件升级技术,更具体地说,它涉及一种用于车身控制ECU的安全无感OTA刷新方法。

背景技术

OTA是一种通过无线网络对汽车固件和软件进行升级的技术。它不仅为车辆升级提供了便捷途径,也为消费者带来了更智能化、便捷的驾驶体验,同时还能节约升级所需的时间和成本。

目前的OTA技术在嵌入式操作系统中,主要用于对车机系统的升级刷写,而在微控制单元(MCU)的升级刷写方面却鲜少应用。针对MCU的升级刷写只能在车辆静止、处于P档、应用报文停止的状态下,并需要进入BOOTLOAD模式进行。这意味着在升级期间,用户无法正常使用车辆,影响了用户的驾驶体验。

此外,目前的MCU升级刷写方式也无法实现续传升级,升级成功率和效率都较低。对于新能源汽车,控制逻辑的更新可能导致需要对控制器进行软件更新。现有的技术方案是通过进入FBL程序进行更新,即使通过OTA刷新,也可能会有一定的失败率,导致应用程序失效。随着整车电控系统的复杂度不断提高,开发周期的紧缩,程序更新升级的频次和数量显著增加,因此在不拆机的状态下对ECU进行刷写的功能变得尤为重要。

然而,现有的电控软件刷新方案在刷新程序时,电控单元会进入刷新状态,不响应正常整车状态请求。且如果刷新失败,电控单元可能无法运行,这会导致用户体验差。因此,需要改进现有的电控软件刷新方案。

发明内容

针对现有技术存在的不足,本发明的目的在于提供一种为了实现ECU无感刷写,且在刷写失败时,对BCM运行状态不产生影响的用于汽车BCM控制器的ECU的无感刷新方法。

为实现上述目的,本发明提供了如下技术方案:

一种用于车身控制ECU的安全无感OTA刷新方法,包括步骤:

S1、将ECU闪存均分为执行区和编程区,微控制单元MCU将程序存储器均分为A面和B面并分别对应执行区和编程区;

S2、在车辆正常运行期间,执行区的程序会被执行,并且在这个时间段内不能被写入或擦除,

编程区是新软件或更新被写入的地方,当车辆处于编程模式时,该区域是可访问的;

S3、通过将ECU 闪存分为执行区和编程区两个独立的区域,它允许无缝的更新而不会中断BCM控制的正常运行;如果有软件更新,新软件会被写入编程区,而旧的软件会继续在执行区运行;新软件完全写入并验证,就可以被换到执行区来替换旧的软件;

S4、将原有的应用程序linker中flash的地址映射于A面;将应用程序集成FBL协议栈,flash操作擦除和编写的接口打包为flash driver,在刷写序列中下载;

程序接收到刷写序列后,执行编程区编程流程;

刷新完成且校验成功后将新程序的启动地址写入固件配置段;

固件配置段是ECU闪存的区域,用于存储固件的配置信息,包括固件的版本号、启动地址信息;

S5、等待BCM控制低压重新上电后,固件启动完成,切换地址映射调用新写入的启动地址代码,无感刷新完成。

进一步的,于步骤S3中,新软件的最新升级版本文件可读取当前已升级刷写的数据偏移位置,并根据数据偏移位置,在最新升级版本文件中截取出数据长度与可刷写数据长度相同的升级数据。

进一步的,于步骤S4中,将FBL协议栈指定封装为CAN协议或者CANFD协议之间,并将升级数据封装成升级报文。

进一步的,于步骤S4中,MCU接收到刷写指令后,开启编程区编程,步骤为:

A1、读取当前程序的启动地址,若该启动地址在A面定义的地址段内,则代表需要编程区域为B面,设置刷写地址偏移为B面起始地址减去A面起始地址;若该启动地址在B面定义的地址段内,则代表需要编程区域为A面,设置刷写地址偏移为0;

A2、刷入flash driver代码段并完成校验;

A3、设置刷写地址为上位机下传地址+预设好的偏移地址,并完成新程序地址块擦除和下载;

A4、刷写完成后将新程序的启动地址写入固件配置段;

A5、切换地址映射,互换A面和B面的状态;

A6、清除flash driver,并退出刷新流程,重新上锁刷写功能。

通过采用上述技术方案,本发明的有益效果为:

1、本发明可通过软件操作Flash达到了无感更新软件的功能,将ECU闪存划分为执行区和编程区,从而有助于提高软件更新的效率和可靠性,降低软件故障的风险,提高用户体验。

2、无需限制车辆必须要处于静态、P档、应用报文停止的状态下,并需要进入BOOTLOAD模式下才能进行车辆升级,例如,车辆处于行驶状态下,也可以实现无感刷写升级,并实现目标ECU的MCU的无感升级刷写,且可支持续传升级,即可承接上一次未升级刷写完成的位置继续进行续传刷写,无需完全从头开始进行传输刷写,极大地提高了升级成功率和效率。

附图说明

图1为本发明实施例的结构框图。

图2为MCU编程的流程框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

车身控制ECU的安全无感OTA刷新方法,包括步骤:

S1、将ECU闪存均分为执行区和编程区,微控制单元MCU将程序存储器均分为A面和B面并分别对应执行区和编程区;

S2、在车辆正常运行期间,执行区的程序会被执行,并且在这个时间段内不能被写入或擦除,编程区是新软件或更新被写入的地方,当车辆处于编程模式时,该区域是可访问的;

S3、通过将ECU 闪存分为执行区和编程区两个独立的区域,它允许无缝的更新而不会中断BCM控制的正常运行;如果有软件更新,新软件会被写入编程区,而旧的软件会继续在执行区运行;新软件完全写入并验证,就可以被换到执行区来替换旧的软件;

S4、将原有的应用程序linker(链接器)中flash的地址映射于A面;将应用程序集成FBL协议栈,flash操作擦除和编写的接口打包为flash driver,在刷写序列中下载;程序接收到刷写序列后,执行编程区编程流程;刷新完成且校验成功后将新程序的启动地址写入固件配置段;

S5、等待BCM控制低压重新上电后,固件启动完成,切换地址映射调用新写入的启动地址代码,无感刷新完成。

为了保证针对目标ECU的MCU的升级刷写的成功率和升级功能完整性,通常要求最新升级版本文件的大小不超过备用区的区总容量。如果最新升级版本文件的大小超过编程区的区总容量,则备用区将无法完全写入最新升级版本文件的所有升级数据,这就会使得部分的升级功能缺失,从而导致升级刷写失败。

针对目标ECU进行升级刷写的可刷写数据长度:

可刷写数据长度,表示本次可传输至目标ECU的升级报文中的升级数据的数据长度,可记录为L字节。

最新升级版本文件中读取当前已升级刷写的数据偏移位置,并根据数据偏移位置,在最新升级版本文件中截取出数据长度与可刷写数据长度相同的升级数据;

数据偏移位置,是指已成功传输至目标ECU的备用区中的升级数据的末位数据位置,可记录为位置M。若是完全未开始升级,则位置M为0。若上一次已成功将最新升级版本文件中的第0~第6000字节的升级数据传输至目标ECU的编程区,那么已传输至目标ECU的备用区中的升级数据的末位数据位置为第6000字节,即位置M为第6000字节;

若上一次已成功将最新升级版本文件中的第0~第6000字节的升级数据传输至目标ECU的编程区,即位置M为第6000字节,并且确定可刷写数据长度为L字节;那么,从最新升级版本文件中的第6001字节开始往后截取L字节长度的升级数据(即第6001字节至第6001+L-1字节)。

按照指定封装协议将升级数据封装成升级报文:

指定封装协议可以是CAN协议或者CANFD协议;若指定封装协议为CAN协议,则对应的升级报文为CAN报文;若指定封装协议为CANFD协议,则升级报文为CANFD报文;

根据数据偏移位置和扇区容量,确定目标刷写扇区,假设目标ECU 1有4个块区,每个块区有4个扇区,每个扇区的和扇区容量为512个字节,数据偏移位置为第511字节,那么由此可确定上一次已刷写完成块区1的扇区1,则接下来本次刷写的目标刷写扇区为块区1的扇区2。

MCU接收到刷写指令后,仅使能刷写流程,开启编程区编程:

①读取当前的程序的启动地址,若在A面定义的地址段内,则代表需要编程区域为B面,设置刷写地址偏移为B面起始地址减去A面起始地址;若在B面定义的地址段内,则代表需要编程区域为A面,设置刷写地址偏移为0;

②刷入flash driver代码段并完成校验;

③设置刷写地址为上位机下传地址+预设好的偏移地址,并完成新程序地址块擦除和下载;

④刷写完成后将新程序的启动地址写入固件配置段;

⑤切换地址映射,互换A面和B面的状态。

⑥清除flashdriver,并退出刷新流程,重新上锁刷写功能;刷写过程中需要保证其他功能块保持运行,刷写流程退出阶段并没有硬件复位,所以需要额外执行flashdriver清除功能,从而尽量防止刷新后,由于程序运行导致程序错误擦除。

刷新完成且校验成功后将新程序的启动地址写入固件配置段:

这是在固件更新过程中的一个关键步骤——刷新完成并且校验成功后,新程序的启动地址将被写入固件配置段;这就意味着,当电子控制单元(ECU)下次启动时,它将从新程序的启动地址开始运行,而不是旧程序的地址。

固件配置段是ECU闪存的一个特殊区域,用于存储固件的配置信息,包括固件的版本号、启动地址等信息。在固件更新过程中,新程序的启动地址被写入这个区域是为了确保ECU能够正确地运行新的固件;

这个过程是自动的,通常由固件更新程序控制。这个程序会先将新的固件写入flash的编程区,然后进行校验。如果校验成功,它就会将新程序的启动地址写入固件配置段。这样当ECU下次启动时,它就会从新程序的启动地址开始运行。

运行切换功能,切换地址映射,互换A面B面状态:

为了实现无缝切换,需要在切换过程中保存A面的状态,包括各种变量的值、CPU的状态等;然后在切换到B面后,将这些状态恢复到B面,从而保证切换前后的连续性。

无感刷新的前提对MCU的核心处理能力要求较高,并且MCU的固件运行完成后跳转用户代码的地址可编程。

通过上述方式,可实现对ECU的MCU的无感升级刷写,可很好地解决现有技术中在车辆升级过程中用户无法正常用车而带来的用车焦虑问题。

在运行区正常提供各种应用功能的情况下,可通过上述方式去升级刷新备用区的软件版本,在此情况下,即使备用区升级失败也不会影响运行区正常提供功能。

上述方式可以实现扇区的断点续传,相较于全覆盖刷写升级文件的数据量要少得多,可大大节约升级刷写的时间,提升刷写的成功率和效率;并有利于延长FLASH的使用寿命。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,本领域的技术人员在本发明技术方案范围内进行通常的变化和替换都应包含在本发明的保护范围内。

相关技术
  • 一种实现新能源电动汽车ECU软件OTA功能的系统及方法
  • 一种用于不含字库单色点阵显示屏的字符快速刷新显示方法
  • 一种电机驱动与ECU控制的智能制动助力系统及其工作方法
  • 一种多ECU的OTA升级控制方法及系统
  • 一种用于整车ECU的OTA安全升级方法及系统
技术分类

06120116585627