汽车ECU Bootloader的启动方法及装置制造方法及图纸

技术编号:28372711 阅读:26 留言:0更新日期:2021-05-07 23:59
本申请涉及一种汽车ECU Bootloader的启动方法及装置,涉及汽车电子软件开发技术领域,通过对有效的应用程序中的预设的Stay‑In‑Boot激活条件标志位是否置位的信息进行提取,并根据提取到的Stay‑In‑Boot激活条件标志位是否置位的信息,执行Stay‑In‑Boot定时器的初始化操作或直接运行应用程序,通过对该Stay‑In‑Boot激活条件标志位的检查,可以使得正常的应用程序直接进入运行状态;对于存在缺陷的应用程序,对Stay‑In‑Boot定时器进行初始化操作,并通过接收ECU外部发送的更新应用程序请求以激活Stay‑In‑Boot功能,强制应用程序进入Bootloder刷写程序中完成更新。因此,本申请实施例不仅可保证ECU初始化时间符合实际需求,且可保证陷入死循环的应用程序也可利用Bootloader进行应用程序的更新。

【技术实现步骤摘要】
汽车ECUBootloader的启动方法及装置
本申请涉及汽车电子软件开发
,特别涉及一种汽车ECUBootloader的启动方法及装置。
技术介绍
汽车ECU(ElectronicControlUnit,电子控制单元)中的Bootloader(启动装载程序)是固化在ECUFlash中的一段特定程序,用于通过CAN总线在线刷写更新ECU的应用程序。Bootloader的启动流程指的是在ECU上电或复位后、进入应用程序之前或者运行Bootloader刷写程序之前的一段流程。传统的启动流程通常有以下两种:第一种:参见图1所示,ECU上电或复位后,首先完成基本的初始化工作,然后查询是否有应用程序更新请求,如果有,则进入Bootloader刷写程序运行;如果没有,则检查应用程序是否有效,如果有效,则跳转到应用程序执行,否则进入Bootloader刷写程序内运行;但是,该方法会存在以下问题:当应用程序有效,但其运行陷入异常(比如跑飞),应用程序就会执行复位,然后经过Bootloader再次进入到应用程序运行,而应用程序会再次执行复位,进而陷入到一种死循环,在这种情况下ECU就永远无法利用Bootloader进行应用程序的更新。第二种:参见图2所示,在完成基本初始化后,增加了停留在Bootloader一段时间的步骤,在此期间查询是否有来自外部CAN总线的应用程序更新请求,如果有更新请求,则直接进入到Bootloader刷写程序运行,如果时间超时且没有更新请求,则检查应用程序是否有效,如果有效,则跳转到应用程序执行,否则进入Bootloader刷写程序内运行;但是,该方法会存在以下问题:在任何情况下,ECU上电/复位后(不管是否有应用程序更新的请求)都必须要等待一段时间才能进入应用程序运行,使得ECU需要经过较长时间的初始化过程才能正常运行,其不符合系统或整车的初始化时间需求,可能会导致整车各ECU之间的同步通信、信号采集丢失等问题。
技术实现思路
本申请实施例提供一种汽车ECUBootloader的启动方法及装置,以解决相关技术中ECU初始化时间过长以及由于应用程序陷入死循环而导致的无法利用Bootloader进行应用程序更新的问题。第一方面,提供了一种汽车ECUBootloader的启动方法,包括以下步骤:ECU上电或复位,从ECU中获取应用程序信息;检测所述应用程序信息中是否包含更新应用程序请求信息,若未包含所述更新应用程序请求信息,则判断所述应用程序是否为有效程序,若确定所述应用程序为有效程序,则提取所述应用程序中预设的Stay-In-Boot激活条件标志位的信息;根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序;在执行Stay-In-Boot定时器的初始化操作之后,根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序;在运行所述应用程序之后,判断运行中的应用程序是否处于死循环状态,若处于死循环状态,则设置所述应用程序中的Stay-In-Boot激活条件标志位为1,并返回至ECU上电或复位的操作;若不处于死循环状态,则返回至运行所述应用程序的操作。一些实施例中,在所述设置所述应用程序中的Stay-In-Boot激活条件标志位为置位状态之前,还包括步骤:进入软复位中断程序中。所述根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序的具体步骤包括:若所述Stay-In-Boot激活条件标志位为1,则执行Stay-In-Boot定时器的初始化操作;若所述Stay-In-Boot激活条件标志位为0,则运行所述应用程序。所述根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序的具体步骤包括:若在Stay-In-Boot定时器溢出前接收到ECU外部发送的更新应用程序请求,则执行Bootloder刷写程序;若在Stay-In-Boot定时器溢出前未接收到ECU外部发送的更新应用程序请求,则运行所述应用程序。所述检测所述应用程序信息中是否包含更新应用程序请求信息的具体步骤包括:若所述应用程序信息中包含所述更新应用程序请求信息,则进入Bootloder刷写程序。所述判断所述应用程序是否为有效程序的具体步骤包括:若确定所述应用程序为无效程序,则进入Bootloder刷写程序。第二方面,提供了一种汽车ECUBootloader的启动装置,包括:信息获取单元,其用于在ECU上电或复位后,从ECU中获取应用程序信息;判定单元,其用于检测所述应用程序信息中是否包含更新应用程序请求信息,若未包含所述更新应用程序请求信息,则判断所述应用程序是否为有效程序,若确定所述应用程序为有效程序,则提取所述应用程序中预设的Stay-In-Boot激活条件标志位的信息;第一执行单元,其用于根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序;第二执行单元,其用于在执行Stay-In-Boot定时器的初始化操作之后,根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序;第三执行单元,其用于在运行所述应用程序之后,判断运行中的应用程序是否处于死循环状态,若处于死循环状态,则设置所述应用程序中的Stay-In-Boot激活条件标志位为1,并返回至ECU上电或复位的操作;若不处于死循环状态,则返回至运行所述应用程序的操作。一些实施例中,所述第三执行单元还用于:在所述设置所述应用程序中的Stay-In-Boot激活条件标志位为1之前,进入软复位中断程序中。所述第三执行单元具体还用于:若所述Stay-In-Boot激活条件标志位为1,则执行Stay-In-Boot定时器的初始化操作;若所述Stay-In-Boot激活条件标志位为0,则运行所述应用程序。所述第二执行单元具体还用于:若在Stay-In-Boot定时器溢出前接收到ECU外部发送的更新应用程序请求,则执行Bootloder刷写程序;若在Stay-In-Boot定时器溢出前未接收到ECU外部发送的更新应用程序请求,则运行所述应用程序。本申请提供的技术方案带来的有益效果包括:不仅可以保证ECU初始化时间符合实际需求,且可保证陷入死循环的应用程序也可利用Bootloader进行应用程序的更新。本申请实施例提供了一种汽车ECUBootloader的启动方法及装置,通过对有效的应用程序中的预设的Stay-In-Boot激活条件标志位的信息进行提取本文档来自技高网
...

【技术保护点】
1.一种汽车ECU Bootloader的启动方法,其特征在于,包括以下步骤:/nECU上电或复位,从ECU中获取应用程序信息;/n检测所述应用程序信息中是否包含更新应用程序请求信息,若未包含所述更新应用程序请求信息,则判断所述应用程序是否为有效程序,若确定所述应用程序为有效程序,则提取所述应用程序中预设的Stay-In-Boot激活条件标志位的信息;/n根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序;/n在执行Stay-In-Boot定时器的初始化操作之后,根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序;/n在运行所述应用程序之后,判断运行中的应用程序是否处于死循环状态,若处于死循环状态,则设置所述应用程序中的Stay-In-Boot激活条件标志位为1,并返回至ECU上电或复位的操作;若不处于死循环状态,则返回至运行所述应用程序的操作。/n

【技术特征摘要】
1.一种汽车ECUBootloader的启动方法,其特征在于,包括以下步骤:
ECU上电或复位,从ECU中获取应用程序信息;
检测所述应用程序信息中是否包含更新应用程序请求信息,若未包含所述更新应用程序请求信息,则判断所述应用程序是否为有效程序,若确定所述应用程序为有效程序,则提取所述应用程序中预设的Stay-In-Boot激活条件标志位的信息;
根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序;
在执行Stay-In-Boot定时器的初始化操作之后,根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序;
在运行所述应用程序之后,判断运行中的应用程序是否处于死循环状态,若处于死循环状态,则设置所述应用程序中的Stay-In-Boot激活条件标志位为1,并返回至ECU上电或复位的操作;若不处于死循环状态,则返回至运行所述应用程序的操作。


2.如权利要求1所述的一种汽车ECUBootloader的启动方法,其特征在于,在所述设置所述应用程序中的Stay-In-Boot激活条件标志位为1之前,还包括步骤:进入软复位中断程序中。


3.如权利要求1所述的一种汽车ECUBootloader的启动方法,其特征在于,所述根据所述Stay-In-Boot激活条件标志位的信息,执行Stay-In-Boot定时器的初始化操作或运行所述应用程序的具体步骤包括:
若所述Stay-In-Boot激活条件标志位为1,则执行Stay-In-Boot定时器的初始化操作;
若所述Stay-In-Boot激活条件标志位为0,则运行所述应用程序。


4.如权利要求1所述的一种汽车ECUBootloader的启动方法,其特征在于,所述根据在Stay-In-Boot定时器溢出前是否接收到ECU外部发送的更新应用程序请求,执行Bootloder刷写程序或运行所述应用程序的具体步骤包括:
若在Stay-In-Boot定时器溢出前接收到ECU外部发送的更新应用程序请求,则执行Bootloder刷写程序;
若在Stay-In-Boot定时器溢出前未接收到ECU外部发送的更新应用程序请求,则运行所述应用程序。


5.如权利要求1所述的一种汽车ECUBootloader的启动方法,其特征在于,所述检测所述应用程序信息中是否包含更新应用程序请求信息的具体步骤包括:若所述应用...

【专利技术属性】
技术研发人员:刘福伟贺兴亮姚元吉李斌方鑫张衡代鹏
申请(专利权)人:东风商用车有限公司
类型:发明
国别省市:湖北;42

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

1