一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种程序启动方法、系统、存储介质及电子设备与流程

2022-06-11 09:06:53 来源:中国专利 TAG:


1.本发明涉及嵌入式技术领域,特别是涉及一种程序启动方法、系统、存储介质及电子设备。


背景技术:

2.bootloader(引导加载)程序是嵌入式系统在上电后执行的第一段代码,bootloader负责下载应用程序到处理器的存储空间上,并引导处理器启动运行应用程序,通过bootloader引导启动应用程序可以使处理器执行正常功能。
3.bootloader程序会被注入处理器,bootloader程序在处理器中运行以引导处理器运行应用程序。但是,当前的bootloader程序存在一旦注入处理器便无法再进行bootloader程序更新的弊端。当注入到处理器中的bootloader程序出现问题时,无法引导处理器运行应用程序。由于上述弊端,使得注入到处理器中的bootloader程序无法通过更新进行修复,导致bootloader程序出现问题时无法引导处理器运行应用程序这一问题得不到解决。


技术实现要素:

4.本发明实施例的目的在于提供一种程序启动方法、系统、存储介质及电子设备,能够解决bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题。具体技术方案如下:
5.本发明提供了一种程序启动方法,所述方法应用于处理器,所述处理器中设置有第一bootloader程序和第二bootloader程序,所述方法包括:
6.对所述第一bootloader程序的第一启动配置信息进行验证;其中,所述第一启动配置信息表征的程序启动模式为abm模式;
7.在所述第一启动配置信息验证未通过的情况下,对所述第二bootloader程序的第二启动配置信息进行验证;其中,所述第二启动配置信息表征的程序启动模式为abm模式;
8.在所述第二启动配置信息验证通过的情况下,从所述第二启动配置信息中解析获得第二bootloader程序的启动地址,运行所述第二bootloader程序的启动地址指向的引导信息;其中,所述第二bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
9.可选地,还包括:
10.在所述第一启动配置信息验证通过的情况下,从所述第一启动配置信息中解析获得第一bootloader程序的启动地址,运行所述第一bootloader程序的启动地址指向的引导信息;其中,所述第一bootloader程序的启动地址指向的引导信息用于引导所述目标程序启动。
11.可选地,所述第一bootloader程序中携带有所述第二bootloader程序的启动地址,在所述运行所述第一bootloader程序的启动地址指向的引导信息之后,所述方法还包括:
12.响应于第一bootloader程序更新指令,从所述第一bootloader程序中解析得到所述第二bootloader程序的启动地址,运行所述第二bootloader程序的启动地址指向的引导信息,下载更新后的第一bootloader程序。
13.可选地,在所述下载更新后的第一bootloader程序之后,所述方法还包括:
14.在未成功下载所述更新后的第一bootloader程序的情况下,再次对所述第一启动配置信息进行验证,若所述第一启动配置信息本次验证通过,则从所述第一启动配置信息中解析获得所述第一bootloader程序的启动地址,运行所述第一bootloader程序的启动地址指向的引导信息;
15.在成功下载所述更新后的第一bootloader程序的情况下,使用所述更新后的第一bootloader程序对所述第一bootloader程序进行更新。
16.可选地,在所述使用所述更新后的第一bootloader程序对所述第一bootloader程序进行更新之后,所述方法还包括:
17.从所述更新后的第一bootloader程序中提取得到更新后的启动配置信息;
18.对所述更新后的启动配置信息进行验证;
19.在所述更新后的启动配置信息验证通过的情况下,从所述更新后的启动配置信息中解析获得更新后的启动地址,运行所述更新后的启动地址指向的引导信息;其中,所述更新后的启动地址指向的引导信息用于引导所述目标程序启动。
20.可选地,在所述运行所述第二bootloader程序的启动地址指向的引导信息之后,所述方法还包括:
21.在所述第一启动配置信息为空时,下载所述第一bootloader程序;
22.在所述第一bootloader程序未下载成功的情况下,将所述第一bootloader程序中已下载的数据删除,并在数据删除后重新下载所述第一bootloader程序;
23.在所述第一bootloader程序下载成功的情况下,从所述第一bootloader程序中提取得到所述第一启动配置信息,对所述第一启动配置信息进行验证,在所述第一启动配置信息验证通过的情况下,从所述第一启动配置信息中解析获得所述第一bootloader程序的启动地址,运行所述第一bootloader程序的启动地址指向的引导信息。
24.可选地,在所述运行所述第一bootloader程序的启动地址指向的引导信息之后,所述方法还包括:
25.在所述第一bootloader程序未正常运行的情况下,再次对所述第一启动配置信息进行验证;
26.在所述第一启动配置信息验证未通过的情况下,对所述第二启动配置信息进行验证;
27.在所述第二启动配置信息验证通过的情况下,从所述第二启动配置信息中解析获得第二bootloader程序的启动地址,运行所述第二bootloader程序的启动地址指向的引导信息。
28.本发明还提供一种程序启动系统,所述系统应用于处理器,所述处理器中设置有第一bootloader程序和第二bootloader程序,所述系统包括:
29.第一验证模块,用于对所述第一bootloader程序的第一启动配置信息进行验证;其中,所述第一启动配置信息表征的程序启动模式为abm模式;
30.第二验证模块,用于在所述第一启动配置信息验证未通过的情况下,对所述第二bootloader程序的第二启动配置信息进行验证;其中,所述第二启动配置信息表征的程序启动模式为abm模式;
31.程序启动模块,用于在所述第二启动配置信息验证通过的情况下,从所述第二启动配置信息中解析获得第二bootloader程序的启动地址,运行所述第二bootloader程序的启动地址指向的引导信息;其中,所述第二bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
32.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有程序,所述程序被处理器执行时实现上述的程序启动方法。
33.本发明还提供一种电子设备,包括:
34.至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;
35.所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述的程序启动方法。
36.本发明实施例提供的一种程序启动方法、系统、存储介质及电子设备,通过两个bootloader程序,在一个bootloader程序生成的启动配置信息验证不通过时,可以对另一个bootloader程序生成的启动配置信息进行解析从而获得启动地址,在程序启动模式为abm模式下运行启动地址指向的引导信息,进而引导目标程序启动。本发明解决了bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题。
37.当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1为本发明实施例提供的程序启动方法流程图;
40.图2为本发明实施例提供的程序启动系统结构图;
41.图3为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
42.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.本发明提供一种程序启动方法,该方法应用于处理器,处理器中设置有第一bootloader程序和第二bootloader程序。
44.可选地,该处理器中可以有芯片,该芯片可以执行本发明提供的程序启动方法。在芯片中仅有一个bootloader程序的条件下,单bootloader程序既可以引导启动应用程序,
也可以下载应用程序。但是,单bootloader程序不能够更新bootloader程序,其原因在于,如果进行bootloader程序更新,需要首先删除芯片中已存储的bootloader程序,在删除bootloader程序后再重新下载更新的bootloader程序,然而,一旦将存储的bootloader程序删除,会导致芯片无法正常下载并运行bootloader程序。可见,在芯片中注入一个bootloader程序会存在当bootloader程序出现问题时无法引导芯片运行应用程序这一问题。
45.本发明为了解决上述问题,在芯片中设置了两个bootloader程序,以便解决单bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题,通过实现bootloader程序更新,在bootloader程序出现问题时可以通过升级bootloader程序的方式使芯片执行正常功能。可选地,在芯片中设置的两个程序可以为第一bootloader程序和第二bootloader程序;第一bootloader程序可以实现应用程序下载、引导启动应用程序并且第一bootloader程序可以升级更新。而第二bootloader程序可以实现应用程序下载、引导启动应用程序,但是第二bootloader程序不可升级更新。
46.可选地,芯片出厂前可以烧录有第一bootloader程序和第二bootloader程序;当然,芯片出厂前也可以仅烧录有第二bootloader程序,在芯片启动后再通过第二bootloader程序下载第一bootloader程序。而应用程序可以在芯片出厂前烧录在芯片中,也可以在芯片运行后通过第一bootloader程序或第二bootloader程序将应用程序下载至芯片中。
47.如图1所示,本发明提供的程序启动方法,包括如下步骤:
48.步骤101:对第一bootloader程序的第一启动配置信息进行验证;其中,第一启动配置信息表征的程序启动模式为abm模式。
49.本发明为了解决bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题,在芯片中设置第一bootloader程序和第二bootloader程序。并且该芯片具有bmi(boot mode index,启动模式索引)功能。bmi是用于选择启动模式的一段信息,bmi可以存储在芯片的flash中,当然bmi还可以存储在芯片的pflash中。
50.bootloader程序的header值(bootloader程序的头部信息)中携带有启动配置信息,芯片在存储有bootloader程序时会将启动配置信息存储在bmi中。可选地,bmi包括四个信息段,分别为bmhd0、bmhd1、bmhd2、bmhd3。设置多个bmhd的目的是为了防止在芯片启动阶段部分bmhd损坏的情况出现时芯片不可用的情况。上述各个信息段都有一个firmware(框架),该框架被称为abm(备用引导模式),在abm模式下,允许程序从用户自定义地址开始执行。对于具有abm启动模式的芯片可以采用本发明提供的程序启动方法,可以解决bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题,并且可以实现bootloader程序更新操作。可选地,具有abm启动模式的芯片可以为英飞凌tc22x芯片。
51.对应于每个bmi信息段都有一个abm,每个abm的地址如表1所示。
52.表1 abm地址
53.bmi起始地址终止地址bmhd0a000 0000ha000 001fhbmhd1a002 0000ha002 001fhbmhd2a000 ffe0ha000 ffffhbmhd3a001 ffe0ha001 ffffh54.表1中,bmhd0、bmhd1、bmhd2、bmhd3的地址长度均为32字节,由于本发明在芯片中设置有第一bootloader程序和第二bootloader程序,因此,利用两个bmhd信息段对bootloader程序的header值中携带的启动配置信息进行存储。在芯片上电后,芯片会按照从bmhd0至bmhd3的顺序执行,由于本发明可以先执行第一bootloader程序后执行第二bootloader程序,因此,可以使第一启动配置信息存储的bmhd信息段处于第二启动配置信息存储的bmhd信息段之前。具体地,可以将第一bootloader程序的启动配置信息存储在bmhd0中,将第二bootloader程序的header值存储在bmhd1或bmhd2或bmhd3中;当然,也可以将第一bootloader程序的启动配置信息存储在bmhd1中,将第二bootloader程序的header值存储在bmhd2或bmhd3中;此外,还可以将第一bootloader程序的启动配置信息存储在bmhd2中,将第二bootloader程序的header值存储在bmhd3中。
55.abm的框架结构如表2所示。
56.表2 abm的框架结构
[0057][0058]
表2中,stadabm为用户程序起始地址,即bootloader程序的启动地址,从该启动地址开始执行第一段程序代码,从而引导应用程序启动。从表2可以看出,bootloader程序启动地址stadabm占用4个字节,启动模式索引bmi占用2个字节,从地址00h到地址1ch,存储的内容总共占用32个字节。将bootloader程序的header值存储在表2的abm框架结构中,通过表2的abm框架结构可以反映出程序启动模式为abm模式。芯片的启动模式为abm模式,为了正常运行bootloader程序,需要在运行bootloader程序之前检查芯片的abm模式是否有效。
[0059]
其中,abm的框架结构中的启动模式索引(bmi)结构如表3所示。
[0060]
表3 bmi结构
[0061][0062]
在处理器为英飞凌tc22x芯片的条件下,根据英飞凌tc22x系列芯片手册规定,检查abm模式是否有效的步骤如下:
[0063]
步骤1:检查bmhdid是否有效;
[0064]
(a)若bmhdid=b359h,则执行步骤2;
[0065]
(b)若bmhdid≠b359h,则执行步骤7。
[0066]
步骤2:计算bmhd前24个字节的crc(cyclic redundancy check,循环冗余校验)值,结果与crchead(18h)进行比较;
[0067]
(a)若crc值与crchead相同,则将crc取反值与crchead的反值进行比较;
[0068]
(aa)若crc取反值与相同,则执行步骤3;
[0069]
(bb)若crc取反值与不同,则执行步骤7。
[0070]
(b)若crc值与crchead不同,则执行步骤7。
[0071]
步骤3:检查前一次bmi是否使能了引脚配置,是否引脚已选择abm启动模式但代码
检查失败;可选的,该引脚可以为hwcfg引脚;
[0072]
(a)若引脚已选择abm启动模式且代码检查有效,则执行步骤4;
[0073]
(b)若引脚已选择abm启动模式且代码检查失败,则根据hwcfg[5:4]引脚状态执行generic或asc引导加载程序模式。
[0074]
步骤4:检查条件(otp保护模式禁用)是否为真;
[0075]
(a)若为真,则初始化所有与安全相关的ram,然后检查任一调试器是否已连接,并请求进行停机后复位(ostate.harr=1);
[0076]
(aa)若已连接,则执行内部启动模式,cpu0将在第一个用户指令之前停止;
[0077]
(bb)若未连接,则执行一般的引导加载模式(默认模式如果没有有效的bmi);
[0078]
(b)若为假,则检查并视情况允许使用一般的评估顺序进行调试访问,然后进入无限循环。外部调试器(如果授予访问权限)能够进一步处理设备启动。
[0079]
步骤5:计算从chkstart到chkend中数据的crc值,与crcrange(10h)进行比较;
[0080]
(a)若crc值与crcrange相同,则将crc取反值与crcrange的反值比较;
[0081]
(aa)若crc取反值与相同,则退出当前校验过程,当前bmi验证通过;
[0082]
(bb)若crc取反值与不同,则执行步骤6;
[0083]
(b)若crc值与crcrange不同,则执行步骤6。
[0084]
步骤6:检查abm选择方式;
[0085]
(a)若从bmi中选择,则执行步骤7;
[0086]
(b)若从hwcfg引脚中选择,在ststat.hwcfg中安装通用的引导加载程序abm,退出当前bmi验证过程。
[0087]
步骤7:检查flash配置参数;
[0088]
(a)若未发现错误,则退出验证过程,bmi验证失败;
[0089]
(b)若发现错误,则立即终止当前任务,并上报。
[0090]
上述步骤1至步骤7的判断abm模式是否有效的检查方式适用于与每个bmi信息段bmhd0、bmhd1、bmhd2、bmhd3对应的abm的框架结构。
[0091]
在本实施例中,第一bootloader程序可以实现应用程序下载、引导启动应用程序并且第一bootloader程序可以升级更新。第一bootloader程序的header值中携带有第一启动配置信息,该第一启动配置信息可以存储在bmi的bmhd0信息段中。其中,第一启动配置信息表征的程序启动模式为abm模式,在abm模式下,允许程序从用户自定义地址开始执行。采用上述步骤1至步骤7对第一bootloader程序的第一启动配置信息进行验证。可选地,自定义地址可以为表1中的bmhd0对应的起始地址a000 0000h,自定义地址还可以为表1中的bmhd1对应的起始地址a002 0000h。
[0092]
步骤102:在第一启动配置信息验证未通过的情况下,对第二bootloader程序的第二启动配置信息进行验证;其中,第二启动配置信息表征的程序启动模式为abm模式。
[0093]
在经过上述步骤1至步骤7检查abm模式是否有效,得到的检查结果为该abm模式无效时,无法通过第一bootloader程序引导启动应用程序。该abm模式无效的原因可能是第一bootloader程序的header值出现错误;该abm模式无效的原因还可能是芯片中并未存储有
第一bootloader程序,在没有存储第一bootloader程序时,步骤1检查bmhdid时得到的结果为bmhdid≠b359h,此时bmi验证失败,abm模式无效。
[0094]
由于本发明可以在芯片中设有两个bootloader程序,当第一bootloader程序的第一启动配置信息验证失败的条件下,可以对第二bootloader程序的第二启动配置信息进行验证,解决了bootloader程序出现问题时无法正常引导处理器运行应用程序这一问题。
[0095]
在本实施例中,第二bootloader程序可以实现应用程序下载、引导启动应用程序,但是第二bootloader程序不可升级更新。第二bootloader程序的header值中携带有第二启动配置信息,该第二启动配置信息可以存储在bmi的bmhd1信息段中。其中,第二启动配置信息表征的程序启动模式为abm模式,在abm模式下,允许程序从用户自定义地址开始执行。采用上述步骤1至步骤7对第二bootloader程序的第二启动配置信息进行验证。
[0096]
步骤103:在第二启动配置信息验证通过的情况下,从第二启动配置信息中解析获得第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息;其中,第二bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
[0097]
第二启动配置信息可以存储在bmi的bmhd1信息段中,bmhd1信息段中的内容如表2所示,从表2中可以看出,名称为stadabm对应的存储空间中可以存储用户程序起始地址,该用户程序起始地址可以为第二bootloader程序的启动地址,从该启动地址开始执行第一段程序代码,从而引导目标程序启动。
[0098]
作为一可选的实施方式,本发明提供的程序启动方法,还包括:在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息;其中,第一bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
[0099]
在该实施方式下,第一启动配置信息可以存储在bmi的bmhd0信息段中,bmhd0信息段中的内容如表2所示,从表2中可以看出,名称为stadabm对应的存储空间中可以存储用户程序起始地址,该用户程序起始地址可以为第一bootloader程序的启动地址,从该启动地址开始执行第一段程序代码,从而引导目标程序启动。
[0100]
需要说明的是,如表1所示,abm模式验证是否有效的先后顺序为先对bmhd0的信息进行检查,再对bmhd1的信息进行检查,当然,如果bmhd2和bmhd3中也存储有启动配置信息,那么,在对bmhd1的信息检查之后,再对bmhd2的信息进行检查,最后对bmhd3的信息进行检查。
[0101]
本发明将第一bootloader程序的第一启动配置信息存储在bmhd0中,将第二bootloader程序的第二启动配置信息存储在bmhd1中。当芯片上电运行时,会先验证bmhd0中的信息,当bmhd0中为空时,再验证bmhd1中的信息,如此,便可以对第一bootloader程序进行升级操作。由于第一bootloader程序升级时需要首先将存储在芯片中的第一bootloader程序的第一启动配置信息删除,此时bmhd0内容为空,在芯片上电运行时,验证bmhd0中的内容不通过,再验证bmhd1中的内容,由于bmhd1中存储有第二bootloader程序的第二启动配置信息,可以利用第二bootloader程序实现更新后的第一bootloader程序的下载。
[0102]
作为另一可选的实施方式,第一bootloader程序中携带有第二bootloader程序的启动地址,在运行第一bootloader程序的启动地址指向的引导信息之后,本发明的程序启
动方法,还可以包括:响应于第一bootloader程序更新指令,从第一bootloader程序中解析得到第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息,下载更新后的第一bootloader程序。
[0103]
在上述实施方式下,为了实现第一bootloader程序的升级,需要使芯片由执行第一bootloader程序转变为执行第二bootloader程序,这样才能保证删除第一bootloader程序后芯片正常工作,并且通过第二bootloader程序下载第一bootloader程序。为了使芯片由执行第一bootloader程序转变为执行第二bootloader程序,可以使第一bootloader程序中携带第二bootloader程序的启动地址,当接收到第一bootloader程序更新指令,从第一bootloader程序中解析得到第二bootloader程序的启动地址,这样便可运行第二bootloader程序的启动地址指向的引导信息,从而下载更新后的第一bootloader程序。可选地,该第一bootloader程序更新指令可以为自定义的31服务,该31服务符合英飞凌tc22x系列芯片手册的规定。
[0104]
本发明可以实现第一bootloader程序升级,当第一bootloader程序出现问题时,可以利用第二bootloader程序重新下载第一bootloader程序,以使得芯片可以正常工作,相对于单bootloader程序来说,大大提高了bootloader程序的安全性和可复用性。
[0105]
需要说明的是,本发明并未在第二bootloader程序中携带有第一bootloader程序的启动地址,也就是,芯片在执行第二bootloader程序时并不能直接跳转执行第一bootloader程序,不能实现第一bootloader程序的升级。这样做的目的是为了防止在第一bootloader程序出现问题时,若跳转执行第一bootloader程序则会导致芯片无法正常工作。而本发明可以使芯片在执行第一bootloader程序时跳转至第二bootloader程序,如果第二bootloader程序出现问题,而第一bootloader程序没有问题,通过重启芯片,会先验证bmhd0中的信息,而bmhd0中的信息是通过第一bootloader程序的第一启动配置信息进行存储的,由于第一bootloader程序没有问题,芯片可以通过第一bootloader程序引导启动应用程序,使芯片正常工作。
[0106]
在一种可选的实现方式中,通过第二bootloader程序可以成功下载更新后的第一bootloader程序。在该种情况下,可以使用更新后的第一bootloader程序对第一bootloader程序进行更新,当芯片重启后,则会通过更新后的第一bootloader程序引导启动应用程序。
[0107]
可选地,使用更新后的第一bootloader程序对第一bootloader程序进行更新可以是全量更新,也可以是增量更新。在全量更新时,删除全部第一bootloader程序,在更新后的第一bootloader程序下载成功后,存储更新后的第一bootloader程序。在增量更新时,替换掉部分第一bootloader程序,存储更新后的第一bootloader程序。
[0108]
在另一种可能的实现方式中,通过第二bootloader程序未成功下载更新后的第一bootloader程序。在该种情况下,可以再次对第一启动配置信息进行验证,若第一启动配置信息本次验证通过,则从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息。当然,如果再次对第一启动配置信息进行验证后,第一启动配置信息未通过验证,则可以继续对第二启动配置信息进行验证,若第二启动配置信息验证通过,则可以运行第二bootloader程序的启动地址指向的引导信息,从而引导启动目标程序。
[0109]
可选地,第二bootloader程序未成功下载更新后的第一bootloader程序的原因可能是并没有接收到与第一bootloader程序相关的报文信息,这种可能是出现了已经接收到31服务,响应了第一bootloader程序更新指令,并且已经从第一bootloader程序跳转到第二bootloader程序运行的情况下,不再继续更新第一bootloader程序的情况。此时,第二bootloader程序可以在第一bootloader程序跳转到第二bootloader程序时开始计时,当超出预设时长后,重启芯片。可选的,预设时长可以为10s。本发明可以解决当第一bootloader程序接收到31服务,又不想更新第一bootloader程序,如何进入第一bootloader程序运行的问题。
[0110]
可选地,在使用更新后的第一bootloader程序对第一bootloader程序进行更新之后,还可以从更新后的第一bootloader程序中提取得到更新后的启动配置信息;对更新后的启动配置信息进行验证;在更新后的启动配置信息验证通过的情况下,从更新后的启动配置信息中解析获得更新后的启动地址,运行更新后的启动地址指向的引导信息;其中,更新后的启动地址指向的引导信息用于引导目标程序启动。
[0111]
作为一可选的实施方式,在对第一bootloader程序进行升级的条件下,需要使芯片运行第二bootloader程序,在运行第二bootloader程序的启动地址指向的引导信息之后,第二bootloader程序可以将第一bootloader程序删除,在第一启动配置信息为空时,下载第一bootloader程序。可选地,可以根据14229诊断规范,通过诊断服务34、35、36以及crc校验服务等下载第一bootloader程序。该14229诊断规范、诊断服务34、35、36以及crc校验服务可以符合英飞凌tc22x系列芯片手册的规定。
[0112]
可选地,在第一bootloader程序未下载成功的情况下,将第一bootloader程序中已下载的数据删除,并在数据删除后重新下载第一bootloader程序。
[0113]
在第一bootloader程序未下载成功时可以将第一bootloader程序中已下载的数据删除,这样做的原因在于,对abm模式进行校验只是诊断第一bootloader程序的头部信息(header)进行校验,当出现下载过程中断电的情况,第一bootloader程序的头部信息若存储在bmhd0中,即便重启芯片也会直接运行第一bootloader程序,此时的第一bootloader程序为未下载完的程序,第一bootloader程序并不完整,这样会使芯片无法正常工作。基于此,在下载第一bootloader程序时,可以先将第一bootloader程序存储在芯片的可断电丢失区域,当第一bootloader程序下载成功后,再将第一bootloader程序的第一启动配置信息存储在bmhd0中。这样,在第一bootloader程序不完整的情况下,通过重启芯片,执行第二bootloader程序,再由第二bootloader程序重新下载第一bootloader程序,保证第一bootloader程序的完整性,防止芯片因第一bootloader程序不完整而无法正常工作的问题出现。
[0114]
当然,若第一bootloader程序未下载成功,也可以使芯片继续运行第二bootloader程序。
[0115]
可选地,在第一bootloader程序下载成功的情况下,从第一bootloader程序中提取得到第一启动配置信息,可以在重启芯片后,对第一启动配置信息进行验证,在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息。
[0116]
作为一可选的实施方式,在运行第一bootloader程序的启动地址指向的引导信息
之后,可能出现芯片在运行第一bootloader程序时不能正常工作的情况,在该情况下,可以再次对第一启动配置信息进行验证;在第一启动配置信息验证未通过的情况下,对第二启动配置信息进行验证;在第二启动配置信息验证通过的情况下,从第二启动配置信息中解析获得第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息。这样可以保证一个bootloader程序正常运行,从而引导应用程序启动,保证芯片可以正常工作。
[0117]
当然,本发明还可以在芯片中设置3个或4个bootloader程序,bootloader程序越多,芯片的可靠性越高。例如,在芯片设置3个bootloader程序时,可以将第一bootloader程序的启动配置信息存储在bmhd0中,将第二bootloader程序的启动配置信息存储在bmhd1中,第三bootloader程序的启动配置信息存储在bmhd2中。第一bootloader程序和/或第二bootloader程序可以实现应用程序下载、引导启动应用程序并且第一bootloader程序可以升级更新,第三bootloader程序可以实现应用程序下载、引导启动应用程序,但是第三bootloader程序不可升级更新。
[0118]
在一可选的实施方式中,芯片可以从第一bootloader程序切换到第二bootloader程序运行。具体的,在运行第一bootloader程序的启动地址指向的引导信息之后,响应于运行切换指令,从第一bootloader程序中解析得到第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息。然而,若第二bootloader程序未正常运行,则重启芯片,再次对第一启动配置信息进行验证;在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息。可选地,重启芯片可以是在芯片接收到1101服务后执行的操作,该1101服务可以符合英飞凌tc22x系列芯片手册的规定。
[0119]
本发明提供的程序启动方法,具有如下优点:
[0120]
(1)本发明在芯片上电后检查bmhd,将第一bootloader程序的第一启动配置存储在bmhd0中,将第二bootloader程序的第二启动配置存储在bmhd1中,通过不同的bmhd标志,如bmhd0、bmhd1,可以区别第一bootloader程序和第二bootloader程序。
[0121]
如果处理器里同时有第一bootloader程序和第二bootloader程序,那么上电首先检查第一bootloader程序的标志(bmhd0),如果是有效的,不再继续检查第二bootloader程序的标志(bmhd1),处理器将直接执行第一bootloader程序。
[0122]
如果处理器里只有第二bootloader程序,那么芯片上电首先检查第一bootloader程序的标志(bmhd0)是无效的,然后继续检查第二bootloader程序的标志(bmhd1)是有效的,处理器将直接执行第二bootloader程序。
[0123]
如果处理器里只有第一bootloader程序,那么芯片上电首先检查第一bootloader程序的标志(bmhd0)是有效的,不再继续检查第二bootloader程序的标志(bmhd1),处理器将直接执行第一bootloader程序。
[0124]
也就是无论有没有第二bootloader程序,只要处理器里有第一bootloader程序,第一bootloader程序就可以执行,保证第一bootloader程序的独立性。
[0125]
(2)本发明的第二bootloader程序可以同时下载第一bootloader程序、应用程序、标定数据;也可以单独分别下载第一bootloader程序、应用程序,标定数据。这样保证即使没有第一bootloader程序,只有第二bootloader程序,同样可以执行引导和下载应用程序
的功能,保证第二bootloader程序的独立性。
[0126]
(3)本发明的第一bootloader程序和第二bootloader程序跳转方式如下:处理器上电直接进第一bootloader程序,如果要更新第一bootloader程序,需要给第一bootloader程序发送一个服务请求,比如31服务,第一bootloader程序收到该服务之后,通过第二bootloader程序的启动地址会跳转到第二bootloader程序执行,从而通过第二bootloader程序更新第一bootloader程序。可以实现启动和引导应用程序下载过程中参数和操作的灵活配置,具有提高了bootloader程序的灵活性、安全性和可复用性,并且可以避免第一bootloader程序出现问题,导致芯片无法工作的问题。
[0127]
本发明还提供一种程序启动系统,该系统应用于处理器,处理器中设置有第一bootloader程序和第二bootloader程序,如图2所示,该系统包括:
[0128]
第一验证模块201,用于对第一bootloader程序的第一启动配置信息进行验证;其中,第一启动配置信息表征的程序启动模式为abm模式。
[0129]
第二验证模块202,用于在第一启动配置信息验证未通过的情况下,对第二bootloader程序的第二启动配置信息进行验证;其中,第二启动配置信息表征的程序启动模式为abm模式。
[0130]
程序启动模块203,用于在第二启动配置信息验证通过的情况下,从第二启动配置信息中解析获得第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息;其中,第二bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
[0131]
该程序启动系统,还包括:
[0132]
运行模块,用于在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息;其中,第一bootloader程序的启动地址指向的引导信息用于引导目标程序启动。
[0133]
更新模块,用于运行第一bootloader程序的启动地址指向的引导信息之后,响应于第一bootloader程序更新指令,从第一bootloader程序中解析得到第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息,下载更新后的第一bootloader程序。其中,第一bootloader程序中携带有第二bootloader程序的启动地址。
[0134]
下载模块,用于在下载更新后的第一bootloader程序之后,在未成功下载更新后的第一bootloader程序的情况下,再次对第一启动配置信息进行验证,若第一启动配置信息本次验证通过,则从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息;还用于在成功下载更新后的第一bootloader程序的情况下,使用更新后的第一bootloader程序对第一bootloader程序进行更新。
[0135]
第三验证模块,用于在使用更新后的第一bootloader程序对第一bootloader程序进行更新之后,从更新后的第一bootloader程序中提取得到更新后的启动配置信息;对更新后的启动配置信息进行验证;在更新后的启动配置信息验证通过的情况下,从更新后的启动配置信息中解析获得更新后的启动地址,运行更新后的启动地址指向的引导信息;其中,更新后的启动地址指向的引导信息用于引导目标程序启动。
[0136]
删除模块,用于在运行第二bootloader程序的启动地址指向的引导信息之后,在
第一启动配置信息为空时,下载第一bootloader程序;在第一bootloader程序未下载成功的情况下,将第一bootloader程序中已下载的数据删除,并在数据删除后重新下载第一bootloader程序;在第一bootloader程序下载成功的情况下,从第一bootloader程序中提取得到第一启动配置信息,对第一启动配置信息进行验证,在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息。
[0137]
第四验证模块,用于在第一bootloader程序未正常运行的情况下,再次对第一启动配置信息进行验证;在第一启动配置信息验证未通过的情况下,对第二启动配置信息进行验证;在第二启动配置信息验证通过的情况下,从第二启动配置信息中解析获得第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息。
[0138]
运行切换模块,用于在运行第一bootloader程序的启动地址指向的引导信息之后,响应于运行切换指令,从第一bootloader程序中解析得到第二bootloader程序的启动地址,运行第二bootloader程序的启动地址指向的引导信息。然而,若第二bootloader程序未正常运行,则重启芯片,再次对第一启动配置信息进行验证;在第一启动配置信息验证通过的情况下,从第一启动配置信息中解析获得第一bootloader程序的启动地址,运行第一bootloader程序的启动地址指向的引导信息。
[0139]
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述程序启动方法。
[0140]
本发明实施例提供了一种电子设备,如图3所示,电子设备30包括至少一个处理器301、以及与处理器301连接的至少一个存储器302、总线303;其中,处理器301、存储器302通过总线303完成相互间的通信;处理器301用于调用存储器302中的程序指令,以执行上述的程序启动方法。本文中的电子设备可以是服务器、pc、pad、手机等。
[0141]
本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有上述的程序启动方法包括的步骤的程序。
[0142]
本技术是参照根据本技术实施例的方法、系统和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0143]
在一个典型的配置中,设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
[0144]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
[0145]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除
可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0146]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0147]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0148]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0149]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献