CN113986393A - 电子控制单元启动方法和装置 - Google Patents
电子控制单元启动方法和装置 Download PDFInfo
- Publication number
- CN113986393A CN113986393A CN202111282769.3A CN202111282769A CN113986393A CN 113986393 A CN113986393 A CN 113986393A CN 202111282769 A CN202111282769 A CN 202111282769A CN 113986393 A CN113986393 A CN 113986393A
- Authority
- CN
- China
- Prior art keywords
- program
- application program
- boot loader
- electronic control
- control unit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000002159 abnormal effect Effects 0.000 claims abstract description 150
- 230000008569 process Effects 0.000 claims description 29
- 230000008672 reprogramming Effects 0.000 claims description 20
- 230000007958 sleep Effects 0.000 claims description 18
- 238000003745 diagnosis Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims 1
- 238000012790 confirmation Methods 0.000 claims 1
- 230000005856 abnormality Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006266 hibernation Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005059 dormancy Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种电子控制单元启动方法和装置,该方法包括:在电子控制单元上电后,启动引导加载程序;在通过引导加载程序确认满足进入停留阶段的条件后,通过引导加载程序读取存储的程序异常运行次数,程序异常运行次数表征电子控制单元中的应用程序运行异常的次数;如程序异常运行次数未达到设定次数,通过引导加载程序启动应用程序;如程序异常运行次数达到设定次数,控制电子控制单元停留在引导加载程序阶段。本申请的方案可以提升电子控制单元的启动速度,提升启动性能。
Description
技术领域
本申请涉及控制技术领域,尤其涉及一种电子控制单元启动方法和装置。
背景技术
汽车的电子控制单元(Electronic Control Unit,ECU)中的软件程序包括:引导加载程序和应用程序两种。
而启动ECU需要完成应用程序的启动。具体的,ECU上电后,ECU会先运行引导加载程序(Bootloader,BL),引导加载程序经过一系列判断后,确认满足进入引导加载程序的停留阶段的条件,会控制ECU停留在引导加载程序阶段设定时长,然后才启动应用程序。然而,每次启动ECU都需要停留在引导加载程序阶段一定的时间,使得ECU的启动性能较差。
发明内容
有鉴于此,本申请提供了一种电子控制单元启动方法和装置,以提升电子控制单元的启动速度,提升启动性能。
为实现上述目的,本申请提供了一种电子控制单元启动方法,包括:
在电子控制单元上电后,启动引导加载程序;
在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,所述程序异常运行次数表征所述电子控制单元中的应用程序运行异常的次数;
如所述程序异常运行次数未达到设定次数,通过所述引导加载程序启动所述应用程序;
如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段。
在一种可能的实现方式中,在所述通过所述引导加载程序启动所述应用程序之前,还包括:
将存储的程序异常运行次数加一。
在又一种可能的实现方式中,在所述通过所述引导加载程序启动所述应用程序之后,还包括如下一种或者多种:
如果在所述应用程序运行过程中接收到休眠指令,通过所述应用程序将所述程序异常运行次数清零,执行所述应用程序的正常休眠操作;
如果在所述应用程序的运行过程中接收到统一诊断服务的编程会话指令,通过所述应用程序执行统一诊断服务的编程会话操作,并将所述程序异常运行次数清零;
如果在所述应用程序的运行过程中所述应用程序发起复位操作,通过所述应用程序将所述程序异常运行次数清零。
在又一种可能的实现方式中,还包括:
在所述电子控制单元停留在引导加载程序阶段的过程中,如果通过所述引导加载程序接收到应用程序刷新指令,通过所述引导加载程序更新所述应用程序;
如果通过所述引导加载程序成功更新所述应用程序,将所述程序异常运行次数清零。
在又一种可能的实现方式中,所述控制所述电子控制单元停留在引导加载程序阶段,包括:
控制所述电子控制单元停留在引导加载程序阶段,直至接收到应用程序刷新指令,并更新所述应用程序为止。
在又一种可能的实现方式中,在所述在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,包括:
如果所述引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数。
在又一种可能的实现方式中,所述如果所述引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,包括:
如果所述引导加载程序没有检测到重编程标志位的信息,读取所述应用程序的有效标志位是否有效,所述有效标志位有效表征所述引导加载程序已完成所述应用程序的更新;
如果所述有效标志为有效,确认满足进入停留阶段的条件,通过所述引导加载程序读取存储的程序异常运行次数。
又一方面,本申请还提供了一种电子控制单元启动装置,包括:
上电启动单元,用于在电子控制单元上电后,启动引导加载程序;
次数获取单元,用于在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,所述程序异常运行次数表征所述电子控制单元中的应用程序运行异常的次数;
程序启动单元,用于如所述程序异常运行次数未达到设定次数,通过所述引导加载程序启动所述应用程序;
阶段停留单元,用于如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段。
在一种可能的实现方式中,该装置还包括:
次数递增单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之前,将存储的程序异常运行次数加一。
在又一种可能的实现方式中,该装置还包括如下一种或者多种单元:
第一清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序运行过程中接收到休眠指令,通过所述应用程序将所述程序异常运行次数清零,执行所述应用程序的正常休眠操作;
第二清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序的运行过程中接收到统一诊断服务的编程会话指令,通过所述应用程序执行统一诊断服务的编程会话操作,并将所述程序异常运行次数清零;
第三清零单元,用于如果在所述应用程序的运行过程中所述应用程序发起复位操作,通过所述应用程序将所述程序异常运行次数清零。
由以上可知,在本申请实施例中,在电子控制单元上电并启动引导加载程序后,如果确认出满足进入引导加载程序的停留阶段的条件后,会先通过引导加载程序读取存储的应用程序已出现异常的程序异常运行次数,只有在该程序异常运行次数达到设定次数后,才会停留在引导加载程序阶段,从而可以减少在应用程序没有异常的情况下也停留在引导加载程序的情况,也就减少了电子控制单元启动过程中停留在引导加载程序阶段而占用的启动时间,进而有利于减少电子控制单元的启动耗时,提升电子控制单元的启动性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请实施例提供的电子控制单元启动方法的一种流程示意图;
图2示出了本申请实施例提供的电子控制单元启动方法的又一种流程示意图;
图3示出了本申请实施例提供电子控制单元启动方法在一种应用场景的流程示意图;
图4示出了本申请实施例提供的电子控制单元启动方法在又一种应用场景中的流程示意图;
图5示出了本申请实施例提供的电子控制单元启动方法在又一种应用场景中的流程示意图;
图6示出了本申请实施例提供的电子控制单元启动装置的一种组成结构示意图。
具体实施方式
本申请实施例的方案适用于各类汽车中电子控制单元(Electronic ControlUnit,ECU)的启动控制。
其中,ECU中运行的软件程序包括:引导加载程序(Bootloader,BL)以及应用程序。其中,引导加载程序用于启动应用程序的更新以及启动应用程序。在ECU中启动引导加载程序之后,引导加载程序完成初始化之后会跳转到应用程序。
但是,如果每次在ECU中启动引导加载程序之后便跳转到应用程序,那么一旦应用程序存在漏洞或者故障,则可能会不断重复ECU上电并进入存在故障的应用程序这一死循环。
为了避免出现这一死循环的情况,在ECU中启动引导加载程序之后,引导加载程序完成初始化之后,经过一系列判断后确认出不存在更新应用程序的需求时,会控制ECU停留在引导加载程序的停留阶段设定时长。如果在该设定时长内没有接收到刷新应用程序的指令,则在到达设定时长后,会启动该应用程序。如果在该设定时长内上位机确定出需要刷新应用程序,则可以向ECU下发刷新应用程序指令,使得引导加载程序可以在引导加载程序的停留阶段对应用程序的代码进行刷新等,从而避免出现以上提到的死循环。
然而发明人经过研究发现,每次启动ECU的时候,在ECU中启动了引导加载程序并完成引导加载程序的初始化之后,无论应用程序是否会存在异常,只需要满足进入停留阶段的条件都会停留在引导加载程序一段时间,从而使得应用程序的启动延后,进而使得ECU的启动耗时较长。
而本申请的ECU启动方法和装置可以优化ECU的启动过程,减少ECU的启动耗时。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,其示出了本申请实施例提供的电子控制单元启动方法的一种流程示意图,本实施例的方法应用于各类汽车中的电子控制单元。本实施例的方法可以包括:
S101,在电子控制单元上电后,启动引导加载程序。
可以理解的是,电子控制单元上电包括启动汽车后,首次启动电子控制单元;也包括由于电子控制单元中应用程序异常、休眠或者断电等各种原因而导致ECU重新上电等情况,对此不加限制。
其中,ECU上电后会首先启动引导加载程序Bootloader,执行Bootloader的初始化等操作。
S102,在通过引导加载程序确认满足进入停留阶段的条件后,通过引导加载程序读取存储的程序异常运行次数。
其中,引导加载程序确认满足进入引导加载程序的停留阶段的条件,本质上为引导加载程序在完成初始化后确认不需要更新应用程序。
与以往在确认满足进入引导加载程序的停留阶段之后,直接控制ECU保持在引导加载程序阶段不同,本申请中,引导加载程序会读取存储的应用程序的程序异常运行次数。
其中,程序异常运行次数表征电子控制单元中的应用程序已出现异常的次数。
其中,应用程序运行异常可以包括应用程序无法启动以及应用程序启动后出现断电等异常情况,应用程序运行异常的次数可以反映应用程序是否出现故障而需要进行刷新修复等。基于此,应用程序的程序异常运行次数越多,则表明该应用程序存在漏洞等需要修复的异常情况的可能性越大。
可以理解的是,在应用程序被更新后,应用程序一些漏洞等异常可能会被修复,因此,在应用程序被更新后,更新该应用程序前所统计得到的程序异常运行次数则无法再表征更新后的应用程序可能存在异常的可能。
另外,在应用程序启动并运行后,如果应用程序接收到休眠指令,则应用程序会正常休眠,而应用程序能够正常休眠,则说明应用程序从启动到进入正常休眠这个阶段是不存在异常的,基于此,可以认为应用程序是不存在异常的。
类似的,由于应用程序主动复位(而不是异常导致的被动复位)可以说明应用程序同样不存在异常,因此,如果应用程序主动发起并执行复位操作,则可以确定从应用启动到主动复位这一过程不存在异常。
基于以上分析,为了能够准确表征出应用程序存在异常的情况,本申请中,应用程序的程序异常运行次数为应用程序最近一次被更新、最近一次进入正常休眠或者主动发起复位操作后,统计得到的该应用程序出现异常的次数。
S103,如程序异常运行次数未达到设定次数,通过引导加载程序启动应用程序。
如果程序异常运行次数小于设定次数,那么不足以说明应用程序自身(如,应用程序的代码)存在异常,比如有可能是由于一些外部原因等特殊情况导致ECU充电上电等,在此基础上,为了减少由于进入引导加载程序的停留阶段而导致ECU启动耗时过长,本申请会跳过引导加载程序的停留阶段,而直接启动应用程序。
在一种可能的实现方式中,考虑到应用程序每次出现运行异常后,都需要ECU重新上电并执行启动流程,而如果应用程序存在运行异常,那么启动应用程序后,很可能无法更新该程序异常运行次数,基于此,如果程序异常运行次数未达到设定次数,那么确认需要启动应用程序之后,可以先将存储的程序异常运行次数加一,然后再启动该应用程序。
可见,每次启动应用程序之前将存储的程序异常运行次数加一,那么下次再启动应用程序时,则可以基于程序异常运行次数确认由于应用程序出现运行异常而导致ECU上电重启的次数。
S104,如程序异常运行次数达到设定次数,控制电子控制单元停留在引导加载程序阶段。
其中,电子控制单元停留到引导加载程序阶段是指使得电子控制单元停留处于引导加载程序设定时长。其中,该设定时长可以根据需要设定。
可以理解的是,如果程序异常运行次数达到设定次数,则说明应用程序的代码存在漏洞等需要修复的异常情况,在该种情况下,控制电子控制单元停留在引导加载程序阶段,则可以使得上位机在该引导加载程序阶段向引导加载程序下发应用程序刷新指令,以使得引导加载程序更新该应用程序。
作为一种可选方式,考虑到程序异常运行次数达到设定次数,可以说明应用程序自身存在异常,需要被更新,因此,本申请在控制电子设备停留在引导加载程序阶段后,可以持续监测是否接收到指定类型指令,该指定类型指令为用于刷新应用程序的应用程序刷新指令;如果接收到该指定类型指令,则执行应用程序的更新;如果没有接收到指定类型指令,则继续停留在引导加载程序阶段,直至接收到应用程序刷新指令,并更新所述应用程序为止。
当然,在引导加载程序阶段更新了应用程序之后的具体过程与目前相似,在此不再赘述。如,在引导加载程序阶段更新了应用程序之后,可以重新启动电子控制单元等。
其中,该特定类型指令用于指示引导加载程序继续停留在引导加载程序阶段,如,该特征类型指令为上面提到的应用程序刷新指令,该应用程序刷新指令用于更新应用程序的代码。例如,特征类型指令可以为0X31 01F 18这样一条报文。
在本申请中,该设定次数可以根据需要设定。如,该设定次数可以为由5到30的任意一个自然数,例如,设定次数可以为20次。可以理解的是,由于该设定次数可以根据需要配置,从而可以灵活控制触发进入引导加载程序的停留阶段所需的应用程序运行异常的次数。
由以上可知,在本申请实施例中,在电子控制单元上电并启动引导加载程序后,如果确认出满足进入引导加载程序的停留阶段的条件后,会先通过引导加载程序读取存储的应用程序已出现异常的程序异常运行次数,只有在该程序异常运行次数达到设定次数后,才会停留在引导加载程序阶段,从而可以减少在应用程序没有异常的情况下也停留在引导加载程序的情况,也就减少了电子控制单元启动过程中停留在引导加载程序阶段而占用的启动时间,进而有利于减少电子控制单元的启动耗时,提升电子控制单元的启动性能。
另外,由于本申请在程序异常运行次数超过设定次数后,同样会控制电子控制单元停留在引导加载程序阶段,从而可以使得上位机能够在该引导加载程序阶段控制刷新应用程序的代码,以确保引导加载程序可以对应用程序进行更新以及升级等,以解决应用程序存在的异常状况。
可以理解的是,为了能够便于统计应用程序存在运行异常的次数,本申请可以在引导加载程序每次启动应用程序之前,通过引导加载程序将存储的程序异常运行次数加一。
在此基础上,结合前面的介绍可知,为了使得程序异常运行次数可以表征应用程序在最近一次更新后、正常休眠或者主动复位操作之后出现运行异常的次数,本申请还需要在应用程序进入正常休眠前或者应用程序被更新后,将程序异常运行次数清零。
如,在一种可能的情况中,在引导加载程序启动应用程序之后,本申请还可以包括如下一种或者多种操作:
在应用程序启动后,如果应用程序接收到休眠指令,通过应用程序将程序异常运行次数清零;
在应用程序启动后,如果应用程序接收到统一诊断服务(Unified diagnosticservices,UDS)的编程会话指令,通过应用程序执行统一诊断服务的编程会话操作,将程序异常运行次数清零;
如果在所述应用程序的运行过程中所述应用程序发起复位操作,通过应用程序将程序异常运行次数清零。
其中,UDS的编程会话指令用于指示应用程序执行UDS的编程会话,而应用程序执行UDS的编程会话相关操作则说明需要更新该应用程序。而应用程序被更新之后,应用程序更新前是否存在运行异常则不需要再关注,因此,可以将程序运行异常次数清零。
可以理解的是,在应用程序发起复位操作后,除了将程序异常次数清零外,还会同步执行复位操作,对此不再赘述。
在又一种可能的情况中,由前面介绍可知,在电子设备停留在引导加载程序阶段的过程中,如果引导加载程序接收到特定类型指令,如,应用程序刷新指令,则会通过引导加载程序更新该应用程序。相应的,如果通过引导加载程序成功更新该应用程序,将该程序异常运行次数清零。
可以理解的是,在本申请中程序异常运行次数可以存储到非易失性存储介质(NonVolatile Memory,NVM)中,该非易失性存储介质中可以是电子控制单元内的一个存储介质,也可以是电子控制单元外的一个存储介质,对此不加限制。
可以理解的是,电子控制单元启动引导加载程序后,引导加载程序可以通过查询是否存在重编码标志位等,如果不存在重编程标志位的信息,还可以通过其他方式进一步检测是否存在更新该应用程序的需求,以确定是否满足进入停留阶段的条件。相应的,如果引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过该引导加载程序读取存储的程序异常运行次数。
为了便于理解本申请的方案,下面结合一种情况进行说明。
如图2所示,其示出了本申请实施例提供的电子控制单元启动方法的又一种流程示意图,本实施例的方法可以包括:
S201,在电子控制单元上电后,启动引导加载程序并完成引导加载程序的初始化。
引导加载程序的启动以及初始化的具体过程不加限制,在此不再赘述。
S202,通过引导加载程序检测是否存在重编程标志位的信息,如果是,则执行步骤S203;如果否,则执行步骤S204。
S203,通过引导加载程序更新电子控制单元中的应用程序。
其中,重编程标志位可以由上位机下发到电子控制单元的,其用于表征应用程序需要被更新。
相应的,如果引导加载程序检测到存在重编程标志位,则通过引导加载程序执行对电子控制单元中应用程序的更新。
S204,检测闪存中该应用程序的有效标志位是否有效,如果是,则执行步骤S205;如果否,则跳到步骤S203,以继续等待应用程序的更新完成。
其中,闪存可以电子控制单元中存储程序的存储器。
其中,应用程序的有效标志位有效表征该引导加载程序已完成该应用程序的更新,也就说明应用程序为有效状态。
可以理解的是,如果应用程序的有效标志位为无效,则说明引导加载程序尚未完成该应用程序的更新,在该种情况下,则需要等待引导加载程序对应用程序的更新。
相应的,如果应用程序的有效标志为有效,则说明引导加载程序完成应用程序的更新。在该种情况下,为了减少由于一些异常原因而导致没有重编程标志位等特殊情况,使得原本需要更新应用程序尚未被更新,则可以确定满足进入引导加载程序的停留阶段的条件。
S205,通过引导加载程序读取非易失性存储介质中存储的程序异常运行次数,判断该程序异常运行次数是否达到设定次数,如果是,则执行步骤S206,如果否,则执行步骤S207。
如,设定次数可以为20,则可以判断该程序异常运行次数是否达到或者超过20。
S206,控制电子控制单元停留在引导加载程序阶段。
其中,控制电子控制单元停留在引导加载程序阶段实际上就是使得电子控制单元处于引导加载程序的停留阶段。
可以理解的是,如果程序异常运行次数达到设定次数,则可以确认应用程序自身存在异常,在该种情况下,跳转到引导加载程序的停留阶段,可以使得引导加载程序在停留阶段执行对应用程序的刷新或者修复等更新操作,具体如前面所述,在此不再赘述。
可以理解的是,与前面实施例相同,在电子控制单元停留在引导加载程序阶段的过程中,如果通过引导加载程序接收到应用程序刷新指令,可以通过引导加载程序更新应用程序,否则会一直停留在引导加载程序阶段。在此基础上,如果通过引导加载程序成功更新所述应用程序,则可以将程序异常运行次数清零。
S207,将程序异常运行次数加一并存储到非易失性存储介质中,通过引导加载程序启动应用程序。
可以理解的是,在应用程序启动后,如果应用程序接收到休眠指令,可以通过应用程序将程序异常运行次数清零,在此基础上,应用程序继续进行正常休眠。
类似的,在应用程序启动后,如果应用程序接收到统一诊断服务的编程会话指令,通过应用程序执行统一诊断服务的编程会话操作,同时,将程序异常运行次数清零。
为了便于更好的理解本申请的方案,下面结合几种实际应用场景对本申请的方案进行说明。为了便于介绍,以设定次数为20次,且引导加载程序处于停留阶段的设定时长为20ms为例说明。
在第一种应用场景中,以应用程序不存在死循环的问题,但是存在断电的情况为例说明。如图3所示,其示出了电子控制单元启动方法在第一种应用场景示例中的流程示意图,该流程可以包括:
S301,电子控制单元上电后,启动引导加载程序并初始化引导加载程序。
S302,如果引导加载程序未检测到重编程编制位且确认应用程序的有效标记位有效,引导加载程序读取程序运行异常次数,读取到程序运行异常次数为3次。
此处是以读取到的程序运行异常次数为3次为例说明,对于程序运行异常次数为小于20的任意次数,均与图3的这一场景的实施例的实现流程相似,对此不再赘述。
S303,引导加载程序确认程序运行异常次数(3次)小于20次,将程序运行异常次数加一后存储到非易失性存储介质中,并跳转到启动应用程序。
由于3次小于设定次数20次,因此,无需在引导加载程序等待20ms,便可以将电子控制单元跳转到运行应用程序。
S304,在应用程序运行中出现断电。
S305,在电子控制单元重新上电且完成引导加载程序初始化后,如果引导加载程序未检测到重编程编制位且确认应用程序的有效标记位有效,引导加载程序读取程序运行异常次数,确认程序运行异常次数为4次。
S306,引导加载程序确认程序运行异常次数小于20次,将程序运行异常次数加一后,向非易失性存储介质中存储程序运行异常次数为5次,并跳转到启动应用程序。
可以理解的是,如果在步骤S306之后,应用程序运行过程中又出现断电,则会在电子控制单元重新上电后,仍继续执行步骤S305和S306的操作,只不过引导加载程序获得的运行异常次数是5次。如此不断重复,在断电次数达到20次时,引导加载程序会控制ECU停留在引导加载程序阶段,直至接收到特定类型的指令,更新该应用程序。
在第二种应用场景中,以应用程序不存在死循环的问题,且应用程序需要正常休眠的情况为例说明。其中,在某些情况下,可能会需要应用程序进入到休眠状态,以实现切换到低功耗状态的目的。可以理解的是,如果应用程序从启动到休眠这段时间没有异常,则说明应用程序自身不存在异常。
基于此,如图4所示,其示出了电子控制单元启动方法在第一种应用场景示例中的流程示意图,该流程可以包括:
S401,电子控制单元上电后,启动引导加载程序并初始化引导加载程序。
S402,如果引导加载程序未检测到重编程编制位且确认应用程序的有效标记位有效,引导加载程序读取程序运行异常次数,读取到程序运行异常次数为2次。
与图3类似,图4流程中仅仅是以程序运行异常次数为2次为例说明,但是对于程序运行异常次数为小于20次的任意次数,其流程与图4相似,在此不再赘述。
S403,引导加载程序确认程序运行异常次数(2次)小于20次,将程序运行异常次数加一后存储到非易失性存储介质中,并跳转到启动应用程序。
S404,在应用程序正常运行中,应用程序获得休眠指令,在应用程序进入休眠前,将程序运行异常次数清零并写入到非易失性存储介质中。
可以理解的是,将程序运行异常次数清零后,非易失性存储介质中记录的运行异常次数更新为0次。
S405,在电子控制单元重新启动且完成引导加载程序的初始化后,如果引导加载程序未检测到重编程编制位且确认应用程序的有效标记位有效,引导加载程序读取程序运行异常次数,读取到程序运行异常次数为0次。
S406,引导加载程序确认程序运行异常次数(0次)小于20次,将程序运行异常次数加一并存储到非易失性存储介质中,并跳转到启动应用程序。
由于引导加载程序将运行异常次数加一后,程序运行异常次数变为1次,因此,非易失性存储介质中记录的运行异常次数更新为1次。
当然,在该步骤S406之后,启动应用程序之后针对应用程序运行中的不同情况,可以按照本申请前面图1和图2实施例的相关介绍继续进行相应的操作,对此不再赘述。
在第三种应用场景中,以应用程序每次启动后进入到死循环这一情况为例说明。如图5所示,其示出了电子控制单元启动方法在第一种应用场景示例中的流程示意图,该流程可以包括:
S501,电子控制单元启动引导加载程序并初始化引导加载程序。
S502,如果引导加载程序未检测到重编程编制位且确认应用程序的有效标记位有效,引导加载程序读取程序运行异常次数。
S503,引导加载程序检测运行异常次数是否小于20次,如果是,则执行步骤S504;如果否,则执行步骤S506。
例如,假设步骤S502中读取到程序运行异常次数可以5次,则需要执行步骤S504。如果程序运行异常次数为20次,则需要执行步骤S506。
S504,将程序运行异常次数加一后存储到非易失性存储介质中,并跳转到启动应用程序。
S505,在应用程序进入到死循环状态的情况下,电子控制单元确认看门狗定时器超时,启动复位,执行步骤S501。
其中,在应用程序进入到死循环状态下,应用程序无法更新看门狗定时器的时间,因此,在看门狗定时器超时的情况下,则说明应用程序进入到死循环状态,需要启动复位。而复位之后的操作实际上就是重复执行以上步骤S501至503的操作。
S506,引导加载程序控制电子控制单元停留在引导加载程序阶段。
S507,在进入引导加载程序阶段内,检测是否接收到设定类型指令,如果是,则执行步骤S508;如果否,则继续监测是否接收到设定类型指令。
S508,引导加载程序执行应用程序的更新。
引导加载程序更新应用程序之后的操作可以是重启电子控制单元等,对此不加限制。
对应本申请的一种电子控制单元启动方法,本申请还提供了一种电子控制单元启动装置。
如图6所示,其示出了本申请一种电子控制单元启动装置的一种组成结构示意图,本实施例的装置可以包括:
上电启动单元601,用于在电子控制单元上电后,启动引导加载程序;
次数获取单元602,用于在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,所述程序异常运行次数表征所述电子控制单元中的应用程序运行异常的次数;
程序启动单元603,用于如所述程序异常运行次数未达到设定次数,通过所述引导加载程序启动所述应用程序;
阶段停留单元604,用于如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段。
在一种可能的实现方式中,该装置还包括:
次数递增单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之前,将存储的程序异常运行次数加一。
在又一种可能的实现方式中,该装置还可以包括如下一种或者多种单元:
第一清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序运行过程中接收到休眠指令,通过所述应用程序将所述程序异常运行次数清零,执行所述应用程序的正常休眠操作;
第二清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序的运行过程中接收到统一诊断服务的编程会话指令,通过所述应用程序执行统一诊断服务的编程会话操作,并将所述程序异常运行次数清零;
第三清零单元,用于如果在所述应用程序的运行过程中所述应用程序发出复位指令,通过所述应用程序将所述程序异常运行次数清零。
在又一种可能的情况中,该装置还可以是包括:
特定指令接收单元,用于在所述电子控制单元停留在引导加载程序阶段的过程中,如果通过所述引导加载程序接收到应用程序刷新指令,通过所述引导加载程序更新所述应用程序;
第四清零单元,用于如果通过所述引导加载程序成功更新所述应用程序,将所述程序异常运行次数清零。
在又一种可能的实现方式中,阶段停留单元,具体为,用于如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段,直至接收到应用程序刷新指令,并更新所述应用程序为止。
在又一种可能的实现方式中,次数获得单元具体为,用于如果所述引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数。
在又一种可能的实现方式中,次数获得单元,包括:
标志读取子单元,用于如果所述引导加载程序没有检测到重编程标志位的信息,读取所述应用程序的有效标志位是否有效,所述有效标志位有效表征所述引导加载程序已完成所述应用程序的更新;
次数获得子单元,用于如果所述有效标志为有效,确认满足进入停留阶段的条件,通过所述引导加载程序读取存储的程序异常运行次数。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。同时,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种电子控制单元启动方法,其特征在于,包括:
在电子控制单元上电后,启动引导加载程序;
在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,所述程序异常运行次数表征所述电子控制单元中的应用程序运行异常的次数;
如所述程序异常运行次数未达到设定次数,通过所述引导加载程序启动所述应用程序;
如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段。
2.根据权利要求1所述的方法,其特征在于,在所述通过所述引导加载程序启动所述应用程序之前,还包括:
将存储的程序异常运行次数加一。
3.根据权利要求2所述的方法,其特征在于,在所述通过所述引导加载程序启动所述应用程序之后,还包括如下一种或者多种:
如果在所述应用程序运行过程中接收到休眠指令,通过所述应用程序将所述程序异常运行次数清零,执行所述应用程序的正常休眠操作;
如果在所述应用程序的运行过程中接收到统一诊断服务的编程会话指令,通过所述应用程序执行统一诊断服务的编程会话操作,并将所述程序异常运行次数清零;
如果在所述应用程序的运行过程中所述应用程序发起复位操作,通过所述应用程序将所述程序异常运行次数清零。
4.根据权利要求2所述的方法,其特征在于,还包括:
在所述电子控制单元停留在引导加载程序阶段的过程中,如果通过所述引导加载程序接收到应用程序刷新指令,通过所述引导加载程序更新所述应用程序;
如果通过所述引导加载程序成功更新所述应用程序,将所述程序异常运行次数清零。
5.根据权利要求1所述的方法,其特征在于,所述控制所述电子控制单元停留在引导加载程序阶段,包括:
控制所述电子控制单元停留在引导加载程序阶段,直至接收到应用程序刷新指令,并更新所述应用程序为止。
6.根据权利要求1所述的方法,其特征在于,在所述在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,包括:
如果所述引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数。
7.根据权利要求6所述的方法,其特征在于,所述如果所述引导加载程序没有检测到重编程标志位的信息,且确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,包括:
如果所述引导加载程序没有检测到重编程标志位的信息,读取所述应用程序的有效标志位是否有效,所述有效标志位有效表征所述引导加载程序已完成所述应用程序的更新;
如果所述有效标志为有效,确认满足进入停留阶段的条件,通过所述引导加载程序读取存储的程序异常运行次数。
8.一种电子控制单元启动装置,其特征在于,包括:
上电启动单元,用于在电子控制单元上电后,启动引导加载程序;
次数获取单元,用于在通过引导加载程序确认满足进入停留阶段的条件后,通过所述引导加载程序读取存储的程序异常运行次数,所述程序异常运行次数表征所述电子控制单元中的应用程序运行异常的次数;
程序启动单元,用于如所述程序异常运行次数未达到设定次数,通过所述引导加载程序启动所述应用程序;
阶段停留单元,用于如所述程序异常运行次数达到设定次数,控制所述电子控制单元停留在引导加载程序阶段。
9.根据权利要求8所述的装置,其特征在于,还包括:
次数递增单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之前,将存储的程序异常运行次数加一。
10.根据权利要求9所述的装置,其特征在于,还包括如下一种或者多种单元:
第一清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序运行过程中接收到休眠指令,通过所述应用程序将所述程序异常运行次数清零,执行所述应用程序的正常休眠操作;
第二清零单元,用于在所述程序启动单元通过所述引导加载程序启动所述应用程序之后,如果在所述应用程序的运行过程中接收到统一诊断服务的编程会话指令,通过所述应用程序执行统一诊断服务的编程会话操作,并将所述程序异常运行次数清零;
第三清零单元,用于如果在所述应用程序的运行过程中所述应用程序发起复位操作,通过所述应用程序将所述程序异常运行次数清零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282769.3A CN113986393B (zh) | 2021-11-01 | 2021-11-01 | 电子控制单元启动方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282769.3A CN113986393B (zh) | 2021-11-01 | 2021-11-01 | 电子控制单元启动方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986393A true CN113986393A (zh) | 2022-01-28 |
CN113986393B CN113986393B (zh) | 2024-07-09 |
Family
ID=79745344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111282769.3A Active CN113986393B (zh) | 2021-11-01 | 2021-11-01 | 电子控制单元启动方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986393B (zh) |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060075824A (ko) * | 2004-12-29 | 2006-07-04 | 노틸러스효성 주식회사 | 금융 자동화 기기 및 그 프로그램 운영 방법 |
JP2011100416A (ja) * | 2009-11-09 | 2011-05-19 | Denso Corp | 車載電子制御装置およびメモリ制御方法 |
CN102314363A (zh) * | 2011-07-27 | 2012-01-11 | 深圳市航盛电子股份有限公司 | 一种汽车控制器的引导启动方法以及汽车控制器 |
CN103294511A (zh) * | 2013-05-31 | 2013-09-11 | 哈尔滨工业大学 | 基于CAN总线的bootloader软件的升级方法 |
WO2014183516A1 (zh) * | 2013-11-18 | 2014-11-20 | 中兴通讯股份有限公司 | 一种应用程序加载方法及其装置、终端、存储介质 |
CN104866334A (zh) * | 2014-12-12 | 2015-08-26 | 北汽福田汽车股份有限公司 | 一种控制器软件代码分区方法及其运行方法 |
CN105511976A (zh) * | 2015-12-01 | 2016-04-20 | 长城信息产业股份有限公司 | 一种嵌入式系统中的应用程序自恢复运行方法及装置 |
JP2016143103A (ja) * | 2015-01-30 | 2016-08-08 | 日立オートモティブシステムズ株式会社 | 制御装置 |
CN105959462A (zh) * | 2016-04-20 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 异常启动的控制方法及系统 |
CN107861746A (zh) * | 2017-12-06 | 2018-03-30 | 北京经纬恒润科技有限公司 | 一种车辆电子控制单元的刷新方法及系统 |
CN108055583A (zh) * | 2017-12-28 | 2018-05-18 | 深圳市九洲电器有限公司 | 机顶盒自动恢复方法及系统 |
CN110362327A (zh) * | 2019-07-12 | 2019-10-22 | 北京经纬恒润科技有限公司 | 应用程序更新方法、装置及系统 |
CN110688136A (zh) * | 2019-09-25 | 2020-01-14 | 北京经纬恒润科技有限公司 | 一种应用程序更新方法及装置 |
CN110795159A (zh) * | 2019-10-30 | 2020-02-14 | 福建省汽车工业集团云度新能源汽车股份有限公司 | 一种防止车载ecu错误升级无法重刷的方法及存储设备 |
CN111767172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳市宽宏科技有限公司 | 一种基于看门狗及bootloader的机顶盒自修复办法 |
CN112764786A (zh) * | 2021-01-04 | 2021-05-07 | 东风商用车有限公司 | 汽车ECU Bootloader的启动方法及装置 |
CN113176891A (zh) * | 2021-05-10 | 2021-07-27 | 常州易控汽车电子股份有限公司 | 一种基于Bootloader带有备份功能的ECU的程序烧写方法 |
CN113360175A (zh) * | 2021-08-11 | 2021-09-07 | 新石器慧通(北京)科技有限公司 | 车辆控制器的应用更新方法及车辆控制器 |
CN113419755A (zh) * | 2021-06-04 | 2021-09-21 | 江铃汽车股份有限公司 | 汽车ecu程序刷写方法、系统、可读存储介质及计算机设备 |
-
2021
- 2021-11-01 CN CN202111282769.3A patent/CN113986393B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060075824A (ko) * | 2004-12-29 | 2006-07-04 | 노틸러스효성 주식회사 | 금융 자동화 기기 및 그 프로그램 운영 방법 |
JP2011100416A (ja) * | 2009-11-09 | 2011-05-19 | Denso Corp | 車載電子制御装置およびメモリ制御方法 |
CN102314363A (zh) * | 2011-07-27 | 2012-01-11 | 深圳市航盛电子股份有限公司 | 一种汽车控制器的引导启动方法以及汽车控制器 |
CN103294511A (zh) * | 2013-05-31 | 2013-09-11 | 哈尔滨工业大学 | 基于CAN总线的bootloader软件的升级方法 |
WO2014183516A1 (zh) * | 2013-11-18 | 2014-11-20 | 中兴通讯股份有限公司 | 一种应用程序加载方法及其装置、终端、存储介质 |
CN104866334A (zh) * | 2014-12-12 | 2015-08-26 | 北汽福田汽车股份有限公司 | 一种控制器软件代码分区方法及其运行方法 |
JP2016143103A (ja) * | 2015-01-30 | 2016-08-08 | 日立オートモティブシステムズ株式会社 | 制御装置 |
CN105511976A (zh) * | 2015-12-01 | 2016-04-20 | 长城信息产业股份有限公司 | 一种嵌入式系统中的应用程序自恢复运行方法及装置 |
CN105959462A (zh) * | 2016-04-20 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | 异常启动的控制方法及系统 |
CN107861746A (zh) * | 2017-12-06 | 2018-03-30 | 北京经纬恒润科技有限公司 | 一种车辆电子控制单元的刷新方法及系统 |
CN108055583A (zh) * | 2017-12-28 | 2018-05-18 | 深圳市九洲电器有限公司 | 机顶盒自动恢复方法及系统 |
CN110362327A (zh) * | 2019-07-12 | 2019-10-22 | 北京经纬恒润科技有限公司 | 应用程序更新方法、装置及系统 |
CN110688136A (zh) * | 2019-09-25 | 2020-01-14 | 北京经纬恒润科技有限公司 | 一种应用程序更新方法及装置 |
CN110795159A (zh) * | 2019-10-30 | 2020-02-14 | 福建省汽车工业集团云度新能源汽车股份有限公司 | 一种防止车载ecu错误升级无法重刷的方法及存储设备 |
CN111767172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳市宽宏科技有限公司 | 一种基于看门狗及bootloader的机顶盒自修复办法 |
CN112764786A (zh) * | 2021-01-04 | 2021-05-07 | 东风商用车有限公司 | 汽车ECU Bootloader的启动方法及装置 |
CN113176891A (zh) * | 2021-05-10 | 2021-07-27 | 常州易控汽车电子股份有限公司 | 一种基于Bootloader带有备份功能的ECU的程序烧写方法 |
CN113419755A (zh) * | 2021-06-04 | 2021-09-21 | 江铃汽车股份有限公司 | 汽车ecu程序刷写方法、系统、可读存储介质及计算机设备 |
CN113360175A (zh) * | 2021-08-11 | 2021-09-07 | 新石器慧通(北京)科技有限公司 | 车辆控制器的应用更新方法及车辆控制器 |
Non-Patent Citations (2)
Title |
---|
D. PEHRSSON 等: "Bootloader with reprogramming functionality for electronic control units in vehicles: Analysis, design and Implementation", 《ENGINEERING》, 31 December 2012 (2012-12-31) * |
季鑫: "汽车电子驻车制动控制系统的设计研究", 《CNKI学位论文》, vol. 2019, no. 02, 15 February 2019 (2019-02-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN113986393B (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1769351B1 (en) | Method, software and apparatus for using application state history information when re-launching applications | |
CN100578461C (zh) | 一种引导程序的备份方法及其备份装置 | |
US20090217257A1 (en) | Apparatus and Method for Firmware Update | |
CN101826027A (zh) | 一种嵌入式系统及其升级方法 | |
CN105354063B (zh) | 程序在线升级方法及系统 | |
CN114694728A (zh) | NVMe SSD的断电持续时间确定 | |
CN109408122B (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
CN115237644B (zh) | 系统故障处理方法、中央运算单元以及车辆 | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
CN109634781A (zh) | 一种基于嵌入式程序双区备份映像系统及启动方法 | |
CN110597532A (zh) | 一种数据采集模块及其固件升级方法和存储介质 | |
CN108829442B (zh) | 程序启动方法及装置 | |
KR100451777B1 (ko) | 차량 프로세서-기반 시스템 및 그 동작 방법 | |
CN113986393A (zh) | 电子控制单元启动方法和装置 | |
CN116301973A (zh) | 固件升级方法、装置、设备及可读存储介质 | |
JP4381788B2 (ja) | アダプタ装置、プログラム及び該プログラムを格納した記録媒体 | |
CN114741119A (zh) | 系统的启动方法、装置、计算机设备和存储介质 | |
CN111042932B (zh) | 停机时间获取方法、装置及电子控制单元 | |
CN113672302A (zh) | 一种路由器启动方法、装置、路由器及存储介质 | |
JP2021089643A (ja) | 電子制御装置及び電子制御方法 | |
CN109783150A (zh) | 一种嵌入式系统启动防砖方法及装置 | |
WO2023141832A1 (zh) | 程序更新方法和程序更新装置 | |
CN118260130B (zh) | 双芯片系统升级后的启动方法及系统 | |
JP6723400B1 (ja) | 情報処理装置および情報処理方法 | |
CN115469935A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |