CN112667265B - 一种引导程序更新方法及装置 - Google Patents
一种引导程序更新方法及装置 Download PDFInfo
- Publication number
- CN112667265B CN112667265B CN202110075061.4A CN202110075061A CN112667265B CN 112667265 B CN112667265 B CN 112667265B CN 202110075061 A CN202110075061 A CN 202110075061A CN 112667265 B CN112667265 B CN 112667265B
- Authority
- CN
- China
- Prior art keywords
- program
- bootstrap
- code
- storage area
- boot
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000008672 reprogramming Effects 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 16
- 230000006870 function Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提出一种引导程序更新方法及装置,该方法包括:获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。上述处理过程实现了对控制器引导程序的远程自更新,大大提高了对控制器引导程序更新的便捷性,提高了引导程序更新效率。
Description
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种引导程序更新方法及装置。
背景技术
控制器引导程序(boot loader)通常是出厂时固化的程序,其功能相对简单,需要更新的情况相对较少。但是,随着控制器功能的不断丰富,尤其是控制器联网后的业务类型越来越多,简单的引导程序无法胜任复杂的功能需求,因此对引导程序进行更新的需求也与日俱增。
现有的引导程序更新一般是通过现场更新的方式实现,该方式的便利性较差,更新效率低。
发明内容
基于上述技术现状,本申请提出一种引导程序更新方法及装置,能够提升引导程序更新的便利性和效率。
为了达到上述目的,本申请具体提出如下技术方案:
一种引导程序更新方法,包括:
获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;
运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;
运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
可选的,所述运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区,包括:
运行引导程序存储区中的引导程序,判断重编程标志是否有效;其中,所述重编程标志由应用程序在接收到重编程指令时置为有效;
如果所述重编程标志有效,则将所述引导程序更新代码写入应用程序存储区;
检查写入所述应用程序存储区的引导程序更新代码的完整性;
当确定写入所述应用程序存储区的引导程序更新代码完整时,将所述引导程序更新代码的状态置为有效状态。
可选的,所述运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新,包括:
运行所述用于对引导程序进行更新的程序代码,判断所述引导程序存储区中的引导程序是否为最新的引导程序;
如果所述引导程序存储区中的引导程序不是最新的引导程序,则将所述新版本的引导程序代码更新至所述引导程序存储区;
将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态,并将所述引导程序更新代码的状态置为无效状态。
可选的,所述将所述新版本的引导程序代码更新至所述引导程序存储区,包括:
将所述引导程序存储区中的引导程序的状态置为无效状态;
擦除所述引导程序存储区中的引导程序;
将所述新版本的引导程序代码存储至所述引导程序存储区。
可选的,在将所述新版本的引导程序代码更新至所述引导程序存储区后,所述方法还包括:
校验是否成功将所述新版本的引导程序代码更新至所述引导程序存储区;
如果未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则重复执行将所述新版本的引导程序代码更新至所述引导程序存储区的处理;
如果在设定重复次数内,成功将所述新版本的引导程序代码更新至所述引导程序存储区,则将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态;
如果在设定重复次数内,均未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则触发上位机对所述引导程序存储区中的引导程序进行更新。
可选的,所述方法还包括:
运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码。
可选的,所述运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码,包括:
运行所述引导程序存储区中的新版本的引导程序代码,判断所述应用程序存储区中的引导程序更新代码是否有效;其中,所述引导程序更新代码的状态在其被写入所述应用程序存储区时被置为有效状态,并且,在其成功更新所述引导程序存储区中的引导程序后被置为无效状态;
当所述应用程序存储区中的引导程序更新代码无效时,触发上位机在所述应用程序存储区刷写应用程序代码。
一种引导程序更新装置,包括:
数据获取单元,用于获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;
第一更新单元,用于运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;
第二更新单元,用于运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
可选的,所述第一更新单元运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区时,具体用于:
运行引导程序存储区中的引导程序,判断重编程标志是否有效;其中,所述重编程标志由应用程序在接收到重编程指令时置为有效;
如果所述重编程标志有效,则将所述引导程序更新代码写入应用程序存储区;
检查写入所述应用程序存储区的引导程序更新代码的完整性;
当确定写入所述应用程序存储区的引导程序更新代码完整时,将所述引导程序更新代码的状态置为有效状态。
可选的,所述第二更新单元运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新时,具体用于:
运行所述用于对引导程序进行更新的程序代码,判断所述引导程序存储区中的引导程序是否为最新的引导程序;
如果所述引导程序存储区中的引导程序不是最新的引导程序,则将所述新版本的引导程序代码更新至所述引导程序存储区;
将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态,并将所述引导程序更新代码的状态置为无效状态。
本申请提出的引导程序更新方法,对控制器芯片划分引导程序存储区和应用程序存储区,在对引导程序进行更新时,先获取引导程序更新代码,然后由引导程序存储区中的引导程序,将引导程序更新代码写入应用程序存储区,再运行该应用程序存储区中的引导程序更新代码,实现对引导程序存储区中的引导程序的更新。上述处理过程实现了对控制器引导程序的远程自更新,大大提高了对控制器引导程序更新的便捷性,提高了引导程序更新效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请实施例提供的引导程序存储区域划分示意图;
图2是本申请实施例提供的boot manager程序工作流程示意图;
图3是本申请实施例提供的一种引导程序更新方法的流程示意图;
图4是本申请实施例提供的boot loader程序工作流程示意图;
图5是本申请实施例提供的引导程序更新代码对引导程序进行更新时的工作流程示意图;
图6是本申请实施例提供的引导程序更新过程示意图;
图7是本申请实施例提供的一种引导程序更新装置的结构示意图。
具体实施方式
本申请实施例技术方案适用于对控制器引导程序进行更新的应用场景。采用本申请实施例技术方案,能够实现对控制器引导程序的远程自更新,从而提高引导程序更新效率及更新便捷性。
上述的控制器,可以是任意的控制器,例如电子设备控制器、车载控制器、机械设备控制器等。理论上,只要是具有引导程序的控制器,均可以采用本申请实施例技术方案实现对引导程序的更新。
示例性的,本申请实施例提出的引导程序更新方法应用于车载控制器时,可以实现对车载控制器引导程序的远程更新,因此,不论是处于研发测试阶段的车辆,或是已生产待售车辆,还是已售车辆,都可以通过远程自更新的方式,实现车载控制器引导程序的更新,从而提高制造商和用户的车辆管理便捷性,提高车载控制器引导程序更新效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,为了便于实现对控制器引导程序的更新,本申请实施例对存储控制器引导程序的Flash区域进行区域划分,将其划分为三个区域。
如图1所示,第一个区域为boot manager区域,即引导管理程序存储区;第二个区域为boot loader区域,即引导程序存储区;第三个区域为APP区域,即应用程序存储区。
其中,引导管理程序存储区存储boot manager引导管理程序,当该Flash区域上电时,引导管理程序存储区中存储的boot manager程序最先启动运行,boot manager主要用于判断引导程序存储区中的引导程序和应用程序存储区中的程序哪个有效,哪个有效,则跳转到相应区域运行。该boot manager引导管理程序的具体工作内容,可参见图2所示。
引导程序存储区存储boot loader引导程序,boot loader除了具备基本的引导加载功能之外,在本申请实施例中,其还特别具备更新应用程序存储区中的程序代码的功能。
应用程序存储区存储APP应用程序代码或者引导程序更新代码APP_BT,其中,APP应用程序代码即为应用程序的程序代码;引导程序更新代码APP_BT,是专用于对引导程序进行更新的程序代码。可以理解,该应用程序存储区既可以存储应用程序代码,又可以存储引导程序更新代码,在正常状态下,该区域存储应用程序代码,以便实现应用程序功能;当需要对引导程序bootloader进行更新时,由上位机通过UDS协议将引导程序更新代码APP_BT传输至应用程序存储区。
基于上述的程序存储区域划分形式,参见图3所示,本申请实施例提出的引导程序更新方法,包括:
S301、获取引导程序更新代码。
具体的,上述的引导程序更新代码包括两部分代码,一部分是用于对引导程序进行更新的程序代码,也就是执行对引导程序进行更新操作的程序代码;另一部分是新版本的引导程序代码,也就是在对引导程序进行更新时,相对于需要被升级的引导程序的版本更新的引导程序的程序代码。
该引导程序更新代码运行时,其中的用于对引导程序进行更新的程序代码将上述的新版本的引导程序代码更新至引导程序存储区,从而实现对该引导程序存储区原有的引导程序的更新。
示例性的,当控制器芯片启动运行时,应用程序存储区原有的应用程序运行,当需要对boot loader进行更新时,应用程序通过网络远程获取boot loader更新指令,并将芯片的重编程标志设置为有效状态(比如将重编程标志置为A5A5A5A5),然后复位。
其中,上述的复位,是指重新进入boot manager区域,运行boot manager程序,即重新判断引导程序存储区和应用程序存储区哪个区域的程序代码有效,并进入相应区域运行。
与此同时,上位机通过网络远程获取引导程序更新代码APP_BT,并通过UDS协议下载至控制器芯片。
上述的上位机,是指车载通讯处理模块,其具体可以是车载电脑等。该上位机具有无线通信功能,能够与服务器建立远程连接,接受服务器的控制指令,并从服务器下载引导程序更新代码。该上位机与车载端本地各功能部件之间可以通过有线连接或无线连接,进行数据和指令传输。
S302、运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区。
具体的,参见上述介绍,在通过上位机获取到引导程序更新代码的同时,应用程序接收到boot loader更新指令,并完成重编程标志的置位以及复位后,控制器芯片程序进入boot manager区域运行。
此时boot manager判断引导程序存储区的boot loader代码有效,因此运行引导程序存储区中的引导程序。
引导程序存储区中的引导程序运行时,先对内部寄存器和一些功能模块进行相应的初始化,然后,将引导程序更新代码APP_BT写入应用程序存储区,也就是对应用程序存储区的原有程序代码进行更新,将其更新为上述的引导程序更新代码。
S303、运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
具体的,引导程序存储区中的引导程序在完成对应用程序存储区中的程序代码更新后,进一步检查应用程序存储区中的代码是否有效,如果有效,则跳转到应用程序存储区运行,即运行应用程序存储区中的引导程序更新代码。
引导程序更新代码运行时,其中的用于对引导程序进行更新的程序代码开始运行,该程序代码首先会检查一些信息,看是否满足对引导程序代码进行更新的要求,如果满足要求,就会将该程序代码中的新版本的引导程序代码更新到引导程序存储区。
通过上述介绍可见,本申请实施例提出的引导程序更新方法,对控制器芯片划分引导程序存储区和应用程序存储区,在对引导程序进行更新时,先获取引导程序更新代码,然后由引导程序存储区中的引导程序,将引导程序更新代码写入应用程序存储区,再运行该应用程序存储区中的引导程序更新代码,实现对引导程序存储区中的引导程序的更新。上述处理过程实现了对控制器引导程序的远程自更新,大大提高了对控制器引导程序更新的便捷性,提高了引导程序更新效率。
示例性的,参见图4所示,上述的引导程序存储区中的引导程序运行时,将引导程序更新代码写入应用程序存储区的具体处理过程如下:
首先,引导程序存储区中的引导程序boot loader启动运行时,先对内部寄存器和一些功能模块进行相应的初始化。
然后,判断重编程标志是否有效。该重编程标志,由控制器中的应用程序在接收到重编程指令时设置为有效状态。具体的,当需要对控制器中的引导程序boot loader更新时,服务器远程向控制器应用程序发送重编程指令,控制器应用程序接收到重编程指令时,将控制器中的重编程标志设置为有效状态并复位,控制器程序返回boot manager重新运行。
如果重编程标志有效,则停留在引导程序存储区继续运行引导程序,引导程序将引导程序更新代码APP_BT写入应用程序存储区,实现对应用程序存储区的代码更新。在执行应用程序存储区中的引导程序更新代码之前,上述的重编程标志即被置为无效状态,下一次再运行引导程序时,不会再次执行对应用程序存储区的代码更新。
在完成对应用程序存储区的代码更新后,检查写入应用程序存储区的引导程序更新代码APP_BT的完整性,如果确定该引导程序更新代码APP_BT完整,则将该引导程序更新代码APP_BT的状态设置为有效状态,收到复位指令后复位。
如果引导程序运行时判断确定重编程标志无效,则进一步判断应用程序存储区的应用程序或引导程序更新代码是否有效,如果有效,则跳转到应用程序存储区,运行其中存储的应用程序或引导程序更新代码。
如果应用程序存储区的应用程序或引导程序更新代码也无效,则触发上位机通过UDS协议来更新应用程序存储区中的应用程序或引导程序更新代码。示例性的,当应用程序存储区的应用程序或引导程序更新代码无效时,程序会停留在引导程序存储区,但停留设定时长无下一步动作时,触发上位机通过UDS协议来更新应用程序存储区中的应用程序或引导程序更新代码。
则可以理解,按照上述处理规则,当引导程序在判断重编程标志有效,将引导程序更新代码写入应用程序存储区,并将该引导程序更新代码设置为有效状态并复位后,程序返回boot manager区域运行,并再次进入引导程序存储区运行引导程序,此时引导程序确定重编程标志无效,则进一步判断应用程序存储区的程序代码是否有效。由于在引导程序上一次运行中,已经将引导程序更新代码写入应用程序存储区并设置为有效状态,则可以确定应用程序存储区的引导程序更新代码有效,因此跳转到应用程序存储区,运行其中的引导程序更新代码,对引导程序存储区中的引导程序进行更新。
示例性的,应用程序存储区中的引导程序更新代码运行时的具体处理过程可参见图5所示。基于该引导程序更新代码的处理过程,上述的运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新,包括如下步骤S1~S13:
程序跳进应用程序存储区后,运行应用程序存储区中的引导程序更新代码APP_BT,具体是运行APP_BT中的用于对引导程序进行更新的程序代码,该程序代码首先执行步骤S1、对内部寄存器和一些功能模块进行基本的初始化,之后,该程序代码判断引导程序存储区中的引导程序是否为最新的引导程序。
示例性的,该程序代码先执行步骤S2、读取自身携带的新版本的引导程序的相关信息,以及引导程序存储区中的原有引导程序的相关信息,然后,执行步骤S3、将新版本的引导程序的相关信息与原有的引导程序的相关信息进行对比,判断两者是否相同;如果相同,则说明引导程序存储区中原有的引导程序就是最新的引导程序;否则,可以确定引导程序存储区中原有的引导程序不是最新的引导程序。
如果经过判断确定引导程序存储区中的引导程序是最新的引导程序,则可以确定该引导程序不需要更新,此时执行步骤S4、将引导程序更新代码的有效标志清除并执行步骤S13、复位,程序返回boot manager重新执行。
如果经过判断确定引导程序存储区中的引导程序不是最新的引导程序,则将新版本的引导程序代码更新至引导程序存储区。
具体的,在更新过程中,先执行步骤S5、将控制器boot loader芯片的Flash存储区的驱动拷贝到RAM区,然后,执行步骤S6、清除引导程序存储区中的引导程序boot loader的有效标志,也就是将引导程序存储区中的引导程序boot loader的状态置为无效状态。
接下来,执行步骤S7、擦除引导程序存储区中的引导程序boot loader,也就是擦除原有的引导程序。
之后,执行步骤S8、将引导程序更新代码中的新版本的引导程序代码,存储至该引导程序存储区,即实现了将新版本的引导程序代码更新至引导程序存储区。
进一步的,在将新版本的引导程序代码存储至引导程序存储区后,该程序代码还进一步执行步骤S9、校验是否成功将该新版本的引导程序代码更新至引导程序存储区,也就是校验是否成功地将该新版本的引导程序代码存储至引导程序存储区。
如果没有成功将该新版本的引导程序代码更新至引导程序存储区,则执行步骤S10、判断重复更新次数是否满足要求,也就是判断重复更新次数是否小于设定的重复次数。
如果重复更新次数满足要求,即重复更新次数小于设定重复次数,则返回执行步骤S5~S9;如果重复更新次数不满足要求,即重复更新次数不小于设定重复次数,则执行步骤S11、触发上位机对引导程序存储区中的引导程序进行更新。
示例性的,当重复设定次数均无法成功将新版本的引导程序代码更新至引导程序存储区时,程序停留在应用程序存储区,在设定时长未执行动作时,触发上位机,对引导程序存储区中的引导程序进行更新。具体的,上位机按照UDS协议将最新版本的引导程序下载到引导程序存储区。
引导程序更新代码经过上述处理,或经过上述的循环处理,可以将新版本的引导程序代码更新至引导程序存储区。
然后,执行步骤S12、将引导程序存储区中的该新版本的引导程序代码的状态设置为有效状态,并将该应用程序存储区中的引导程序更新代码的状态设置为无效状态,完成上述状态设置后执行步骤S13、复位。
具体的,将该引导程序存储区中的新版本的引导程序代码的状态设置为有效状态,则当复位重新从boot manager执行时,boot manager检测到引导程序存储区的引导程序有效,则会进入引导程序存储区,运行该新版本的引导程序。
同时,将应用程序存储区中的引导程序更新代码的状态设置为无效状态,可以使得新版本的引导程序运行时,发现应用程序存储区中的代码无效,此时不会再次进入应用程序存储区,运行引导程序更新代码再次对引导程序进行更新,即避免对引导程序进行重复更新。
通过图5所示的处理过程,即可完成对引导程序存储区中的引导程序的更新。
通过上述引导程序更新过程介绍可以理解,此时,在应用程序存储区中的存储的,是在完成对引导程序存储区中的引导程序的更新后,被设置为无效状态的引导程序更新代码。
而一般情况下,控制器是通过运行应用程序存储区中的应用程序,来实现各种功能的。因此,为了使控制器正常运行,需要保证应用程序存储区存储有效的应用程序代码。
为此,本申请实施例提出的引导程序更新方法在对引导程序存储区中的引导程序更新完毕后,运行引导程序存储区中的更新后的新版本的引导程序代码,触发上位机在应用程序存储区刷写应用程序代码。
具体的,当完成对引导程序存储区中的引导程序的更新后,程序复位,重新执行boot manager程序,boot manager程序判断引导程序存储区中的引导程序有效,则更新后的新版本的引导程序代码运行起来。
新版本的引导程序运行时,判断应用程序存储区中的程序代码是否有效。
由于此时应用程序存储区中存储的依然是引导程序更新代码,则上述的判断,实际上是判断应用程序存储区中的引导程序更新代码是否有效。
通过上述的引导程序更新过程的介绍可以确定,在引导程序更新完成后,应用程序存储区中的引导程序更新代码已经被置为无效状态。因此,上述判断可以确定应用程序存储区中的引导程序更新代码无效,也就是确定应用程序存储区中的程序代码无效。
此时,触发上位机在应用程序存储区刷写应用程序代码。
示例性的,当引导程序判断确定应用程序存储区中的程序代码无效时,无法跳转到应用程序存储区运行程序,因此会停留在引导程序存储区继续运行引导程序,经过设定时长后,没有后续处理动作,则上位机通过UDS协议,在应用程序存储区刷写应用程序代码。
其中,上位机向应用程序存储区刷写的应用程序代码,可以是将更新引导程序之前,在应用程序存储区已有的应用程序代码再次写入该应用程序存储区,也可以是将新的应用程序代码写入该应用程序存储区。
综上所述,本申请实施例提出的引导程序更新方法,通过对存储引导程序的Flash芯片划分存储区域,实现了对不同区域的程序先后更新。具体的,参见图6所示,在更新开始时,引导程序存储区存储的是旧版本的boot loader代码BT_Old,应用程序存储区存储的是旧版本的应用程序代码APP_Old。
首先,经过第1部分处理,旧版本的boot loader代码BT_Old运行,对应用程序存储区中的程序代码进行更新,将其更新为引导程序更新代码APP_BT。
然后,经过第2部分处理,引导程序更新代码APP_BT运行,对引导程序存储区中的旧版本的boot loader代码BT_Old进行更新,将其更新为新版本的boot loader代码BT_New。
最后,经过第3部分处理,新版本的boot loader代码BT_New运行,触发上位机对应用程序存储区中的程序代码进行更新,将其更新为新的应用程序代码APP_New。
经过上述处理,引导程序存储区和应用程序存储区中的程序均更新为最新的程序,这样不仅完成了对引导程序的更新,还可以实现对应用程序的更新。
可见,本申请实施例提出的引导程序更新方法,能够实现控制器引导程序的远程自更新,将该方案应用于控制器引导程序更新场景,可以提高控制器引导程序更新效率,提升控制器引导程序更新便利性。
本申请另一实施例还提出一种引导程序更新装置,参见图7所示,该装置包括:
数据获取单元100,用于获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;
第一更新单元110,用于运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;
第二更新单元120,用于运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
可选的,所述第一更新单元运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区时,具体用于:
运行引导程序存储区中的引导程序,判断重编程标志是否有效;其中,所述重编程标志由应用程序在接收到重编程指令时置为有效;
如果所述重编程标志有效,则将所述引导程序更新代码写入应用程序存储区;
检查写入所述应用程序存储区的引导程序更新代码的完整性;
当确定写入所述应用程序存储区的引导程序更新代码完整时,将所述引导程序更新代码的状态置为有效状态。
可选的,所述第二更新单元运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新时,具体用于:
运行所述用于对引导程序进行更新的程序代码,判断所述引导程序存储区中的引导程序是否为最新的引导程序;
如果所述引导程序存储区中的引导程序不是最新的引导程序,则将所述新版本的引导程序代码更新至所述引导程序存储区;
将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态,并将所述引导程序更新代码的状态置为无效状态。
可选的,所述将所述新版本的引导程序代码更新至所述引导程序存储区,包括:
将所述引导程序存储区中的引导程序的状态置为无效状态;
擦除所述引导程序存储区中的引导程序;
将所述新版本的引导程序代码存储至所述引导程序存储区。
可选的,在将所述新版本的引导程序代码更新至所述引导程序存储区后,所述第二更新单元还用于:
校验是否成功将所述新版本的引导程序代码更新至所述引导程序存储区;
如果未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则重复执行将所述新版本的引导程序代码更新至所述引导程序存储区的处理;
如果在设定重复次数内,成功将所述新版本的引导程序代码更新至所述引导程序存储区,则将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态;
如果在设定重复次数内,均未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则触发上位机对所述引导程序存储区中的引导程序进行更新。
可选的,所述装置还包括:
第三更新单元,用于运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码。
可选的,所述运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码,包括:
运行所述引导程序存储区中的新版本的引导程序代码,判断所述应用程序存储区中的引导程序更新代码是否有效;其中,所述引导程序更新代码的状态在其被写入所述应用程序存储区时被置为有效状态,并且,在其成功更新所述引导程序存储区中的引导程序后被置为无效状态;
当所述应用程序存储区中的引导程序更新代码无效时,触发上位机在所述应用程序存储区刷写应用程序代码。
具体的,上述的引导程序更新装置的各个单元的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种引导程序更新方法,其特征在于,对存储控制器引导程序的Flash区域进行区域划分,将其划分为三个区域:第一个区域为boot manager区域,即引导管理程序存储区;第二个区域为bootloader区域,即引导程序存储区;第三个区域为APP区域,即应用程序存储区;其中,引导管理程序存储区存储boot manager引导管理程序,当该Flash区域上电时,引导管理程序存储区中存储的boot manager引导管理程序最先启动运行,boot manager引导管理程序用于判断引导程序存储区中的引导程序和应用程序存储区中的程序的有效性,并跳转到相应有效程序所在区域运行,包括:
获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;
运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;
运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
2.根据权利要求1所述的方法,其特征在于,所述运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区,包括:
运行引导程序存储区中的引导程序,判断重编程标志是否有效;其中,所述重编程标志由应用程序在接收到重编程指令时置为有效;
如果所述重编程标志有效,则将所述引导程序更新代码写入应用程序存储区;
检查写入所述应用程序存储区的引导程序更新代码的完整性;
当确定写入所述应用程序存储区的引导程序更新代码完整时,将所述引导程序更新代码的状态置为有效状态。
3.根据权利要求1所述的方法,其特征在于,所述运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新,包括:
运行所述用于对引导程序进行更新的程序代码,判断所述引导程序存储区中的引导程序是否为最新的引导程序;
如果所述引导程序存储区中的引导程序不是最新的引导程序,则将所述新版本的引导程序代码更新至所述引导程序存储区;
将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态,并将所述引导程序更新代码的状态置为无效状态。
4.根据权利要求3所述的方法,其特征在于,所述将所述新版本的引导程序代码更新至所述引导程序存储区,包括:
将所述引导程序存储区中的引导程序的状态置为无效状态;
擦除所述引导程序存储区中的引导程序;
将所述新版本的引导程序代码存储至所述引导程序存储区。
5.根据权利要求3所述的方法,其特征在于,在将所述新版本的引导程序代码更新至所述引导程序存储区后,所述方法还包括:
校验是否成功将所述新版本的引导程序代码更新至所述引导程序存储区;
如果未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则重复执行将所述新版本的引导程序代码更新至所述引导程序存储区的处理;
如果在设定重复次数内,成功将所述新版本的引导程序代码更新至所述引导程序存储区,则将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态;
如果在设定重复次数内,均未成功将所述新版本的引导程序代码更新至所述引导程序存储区,则触发上位机对所述引导程序存储区中的引导程序进行更新。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码。
7.根据权利要求6所述的方法,其特征在于,所述运行所述引导程序存储区中的新版本的引导程序代码,触发上位机在所述应用程序存储区刷写应用程序代码,包括:
运行所述引导程序存储区中的新版本的引导程序代码,判断所述应用程序存储区中的引导程序更新代码是否有效;其中,所述引导程序更新代码的状态在其被写入所述应用程序存储区时被置为有效状态,并且,在其成功更新所述引导程序存储区中的引导程序后被置为无效状态;
当所述应用程序存储区中的引导程序更新代码无效时,触发上位机在所述应用程序存储区刷写应用程序代码。
8.一种引导程序更新装置,其特征在于,对存储控制器引导程序的Flash区域进行区域划分,将其划分为三个区域:第一个区域为boot manager区域,即引导管理程序存储区;第二个区域为bootloader区域,即引导程序存储区;第三个区域为APP区域,即应用程序存储区;其中,引导管理程序存储区存储boot manager引导管理程序,当该Flash区域上电时,引导管理程序存储区中存储的boot manager引导管理程序最先启动运行,boot manager引导管理程序用于判断引导程序存储区中的引导程序和应用程序存储区中的程序的有效性,并跳转到相应有效程序所在区域运行,包括:
数据获取单元,用于获取引导程序更新代码,所述引导程序更新代码包括用于对引导程序进行更新的程序代码,以及新版本的引导程序代码;
第一更新单元,用于运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区;
第二更新单元,用于运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新。
9.根据权利要求8所述的装置,其特征在于,所述第一更新单元运行引导程序存储区中的引导程序,将所述引导程序更新代码写入应用程序存储区时,具体用于:
运行引导程序存储区中的引导程序,判断重编程标志是否有效;其中,所述重编程标志由应用程序在接收到重编程指令时置为有效;
如果所述重编程标志有效,则将所述引导程序更新代码写入应用程序存储区;
检查写入所述应用程序存储区的引导程序更新代码的完整性;
当确定写入所述应用程序存储区的引导程序更新代码完整时,将所述引导程序更新代码的状态置为有效状态。
10.根据权利要求8所述的装置,其特征在于,所述第二更新单元运行所述用于对引导程序进行更新的程序代码,对所述引导程序存储区中的引导程序进行更新时,具体用于:
运行所述用于对引导程序进行更新的程序代码,判断所述引导程序存储区中的引导程序是否为最新的引导程序;
如果所述引导程序存储区中的引导程序不是最新的引导程序,则将所述新版本的引导程序代码更新至所述引导程序存储区;
将所述引导程序存储区中的新版本的引导程序代码的状态置为有效状态,并将所述引导程序更新代码的状态置为无效状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075061.4A CN112667265B (zh) | 2021-01-20 | 2021-01-20 | 一种引导程序更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110075061.4A CN112667265B (zh) | 2021-01-20 | 2021-01-20 | 一种引导程序更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667265A CN112667265A (zh) | 2021-04-16 |
CN112667265B true CN112667265B (zh) | 2024-05-07 |
Family
ID=75415822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110075061.4A Active CN112667265B (zh) | 2021-01-20 | 2021-01-20 | 一种引导程序更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667265B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880008A (zh) * | 2022-05-17 | 2022-08-09 | 联陆智能交通科技(上海)有限公司 | 软件升级方法及系统 |
CN115033261A (zh) * | 2022-06-16 | 2022-09-09 | 中国第一汽车股份有限公司 | 一种程序更新方法、装置、设备及存储介质 |
CN116302019B (zh) * | 2023-05-11 | 2023-08-04 | 江苏大秦新能源科技有限公司 | 一种BootLoader程序自更新方法、系统及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007148695A (ja) * | 2005-11-25 | 2007-06-14 | Konica Minolta Business Technologies Inc | 情報処理装置およびブートプログラムの書き換え方法 |
CN104360877A (zh) * | 2014-10-24 | 2015-02-18 | 同济大学 | 基于Bootloader自更新的ECU固件更新方法 |
CN104572141A (zh) * | 2013-10-10 | 2015-04-29 | 上海信耀电子有限公司 | 车用电控单元ecu的引导程序的在线更新方法 |
CN107977220A (zh) * | 2017-12-04 | 2018-05-01 | 清华大学 | 一种刷写应用程序的方法、装置及系统 |
CN110209420A (zh) * | 2019-08-01 | 2019-09-06 | 潍柴动力股份有限公司 | 一种更新引导加载程序的方法及装置 |
CN110597532A (zh) * | 2019-08-06 | 2019-12-20 | 厦门科灿信息技术有限公司 | 一种数据采集模块及其固件升级方法和存储介质 |
CN110647333A (zh) * | 2018-06-26 | 2020-01-03 | 霍尼韦尔环境自控产品(天津)有限公司 | 固件升级方法及配置成对其中的固件进行升级的设备 |
CN111506330A (zh) * | 2020-04-23 | 2020-08-07 | 北京微纳星空科技有限公司 | 一种程序更新方法、装置、星务计算机及存储介质 |
-
2021
- 2021-01-20 CN CN202110075061.4A patent/CN112667265B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007148695A (ja) * | 2005-11-25 | 2007-06-14 | Konica Minolta Business Technologies Inc | 情報処理装置およびブートプログラムの書き換え方法 |
CN104572141A (zh) * | 2013-10-10 | 2015-04-29 | 上海信耀电子有限公司 | 车用电控单元ecu的引导程序的在线更新方法 |
CN104360877A (zh) * | 2014-10-24 | 2015-02-18 | 同济大学 | 基于Bootloader自更新的ECU固件更新方法 |
CN107977220A (zh) * | 2017-12-04 | 2018-05-01 | 清华大学 | 一种刷写应用程序的方法、装置及系统 |
CN110647333A (zh) * | 2018-06-26 | 2020-01-03 | 霍尼韦尔环境自控产品(天津)有限公司 | 固件升级方法及配置成对其中的固件进行升级的设备 |
CN110209420A (zh) * | 2019-08-01 | 2019-09-06 | 潍柴动力股份有限公司 | 一种更新引导加载程序的方法及装置 |
CN110597532A (zh) * | 2019-08-06 | 2019-12-20 | 厦门科灿信息技术有限公司 | 一种数据采集模块及其固件升级方法和存储介质 |
CN111506330A (zh) * | 2020-04-23 | 2020-08-07 | 北京微纳星空科技有限公司 | 一种程序更新方法、装置、星务计算机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112667265A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
CN112667265B (zh) | 一种引导程序更新方法及装置 | |
CN109933348B (zh) | 一种电子控制单元中Bootloader的更新方法和装置 | |
WO2022007656A1 (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
US8539471B2 (en) | Updating firmware of an electronic device | |
KR100584338B1 (ko) | 소프트웨어 업데이트 방법 및 시스템 | |
US7275153B2 (en) | Booting and boot code update system using boot strapper code to select between a loader and a duplicate backup loader | |
US8136108B2 (en) | Updating firmware with multiple processors | |
US20070074201A1 (en) | Method and system for updating software and computer readable recording medium storing the method | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
US20140325496A1 (en) | Apparatus and method for firmware upgrade using usb | |
CN107678762B (zh) | 一种系统版本升级方法及装置 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN110825563A (zh) | 系统恢复方法、装置以及电子设备 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN111045713A (zh) | 一种计算机系统的升级方法、系统及装置 | |
CN110597545A (zh) | 一种基于ota组件的热补丁智能升级方法及系统 | |
US20140258699A1 (en) | Boot fault tolerant device and method thereof | |
CN114020211B (zh) | 存储空间管理方法、装置、设备及存储介质 | |
CN114064077A (zh) | 一种基于tc397微控制器地址映射的汽车ecu云端软件升级方法 | |
CN116954674A (zh) | eMMC固件升级方法、固件升级设备和存储装置 | |
CN112214353A (zh) | 固件恢复方法、装置、计算机设备和存储介质 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN114296764A (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 |