一种BootLoader程序升级方法及装置与流程

文档序号:33149006发布日期:2023-02-03 22:25阅读:37来源:国知局
一种BootLoader程序升级方法及装置与流程
一种bootloader程序升级方法及装置
技术领域
1.本技术涉及车辆控制技术领域,具体涉及一种bootloader程序升级方法及装置。


背景技术:

2.目前,汽车上的微控制单元(microcontroller unit,mcu)大多数都存储启动加载(bootloader)程序,该bootloader程序主要用于对mcu中的应用程序进行在线升级,以通过升级可以增加产品的新功能或修复潜在bug。随着汽车产品功能越来越复杂,促使bootloader程序支持一些新的特性或功能,需要对bootloader程序自身进行升级。
3.通常情况下,bootloader程序比较可靠、不会发生改变,因此会在mcu出厂前,通过烧录方式将bootloader程序写入mcu中。若出现问题,需要将车辆召回,从车辆上取下mcu,以在mcu上重新烧录bootloader程序。
4.然而,当mcu封装在器件内部且该器件无预留升级接口时,拆卸mcu将导致器件受到破坏,增加升级成本。例如,电池管理系统中的mcu封装在电池包内,bootloader程序出现问题时必须将电池包拆除才能重新烧录bootloader程序。因此,如何降低bootloader程序升级成本是急需解决的技术问题。


技术实现要素:

5.有鉴于此,本技术实施例提供一种bootloader程序升级方法和装置,以实现在不拆除mcu的情况下,对bootloader程序进行自动升级,降低升级成本。
6.为实现上述目的,本技术实施例提供的技术方案如下:
7.在本技术实施例第一方面,提供了一种bootloader程序升级方法,在微控制单元mcu上电或复位后,所述方法包括:
8.判断第一存储空间中是否存在bootloader程序,所述第一存储空间用于存储最新版本的bootloader程序;
9.在所述第一存储空间存在所述bootloader程序时,将所述bootloader程序复制到第二存储空间;
10.擦除所述第一存储空间中的所述bootloader程序。
11.在一种具体的实现方式中,所述方法还包括:
12.在所述第一存储空间不存在所述bootloader程序时,判断当前接收的升级请求是否为bootloader程序升级请求;
13.如果是,则运行所述第二存储空间中的bootloader程序,以触发最新版本的bootloader程序的下载;
14.将下载的所述最新版本的bootloader程序存储在所述第一存储空间。
15.在一种具体的实现方式中,所述方法还包括:
16.在将所述bootloader程序复制到第二存储空间过程中出现断电或复位时,将不执行擦除所述第一存储空间中的所述bootloader程序的操作。
17.在一种具体的实现方式中,所述判断第一存储空间中是否存在bootloader程序,包括:
18.从所述第一存储空间读取升级标志字段;
19.在所述升级标志字段为第一预设阈值时,确定所述第一存储空间存在所述bootloader程序。
20.在一种具体的实现方式中,所述方法还包括:
21.在擦除所述第一存储空间中的所述bootloader程序后,将所述升级标志字段置为第二预设阈值。
22.在本技术实施例第二方面,提供了一种bootloader程序升级装置,所述装置包括:引导模块、bootloader模块以及预留的第一存储空间,所述第一存储空间用于存储最新版本的bootloader程序;
23.所述引导模块,用于在所述mcu上电或复位后,判断所述第一存储空间是否存在bootloader程序;
24.所述引导模块,还用于在所述第一存储空间存在所述bootloader程序时,将所述bootloader程序复制到第二存储空间;
25.所述引导模块,还用于在将所述第一存储空间中的所述bootloader程序复制到所述第二存储空间后,擦除所述第一存储空间中的所述bootloader程序;
26.所述bootloader模块,用于执行所述第二存储空间中的bootloader程序。
27.在一种具体的实现方式中,所述引导模块,还用于在所述第一存储空间不存在所述bootloader程序时,判断当前接收的升级请求是否为bootloader程序升级请求;在当前接收的升级请求为所述bootloader程序升级请求时,控制所述bootloader模块执行所述第二存储空间中的bootloader程序,以触发最新版本的bootloader程序的下载;
28.所述引导模块,还用于将下载的所述最新版本的bootloader程序存储在所述第一存储空间。
29.在一种具体的实现方式中,所述引导模块,具体用于从所述第一存储空间读取升级标志字段;在所述升级标志字段为第一预设阈值时,确定所述第一存储空间存在所述bootloader程序。
30.在一种具体的实现方式中,所述引导模块,还用于在擦除所述第一存储空间中的所述bootloader程序后,将所述升级标志字段置为第二预设阈值。
31.在本技术实施例第三方面,提供了一种微控制单元,包括:处理器,存储器;
32.所述存储器,用于存储计算机可读指令或者计算机程序;
33.所述处理器,用于读取所述计算机可读指令或所述计算机程序,以使得所述设备实现第一方面所述的bootloader程序升级方法。
34.在本技术实施例第四方面,提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上第一方面所述的bootloader程序升级方法。
35.由此可见,本技术实施例具有如下有益效果:
36.本技术实施例预留了额外的存储空间,即第一存储空间,用于存储最新版本的bootloader程序。当mcu上电或复位后,首先判断第一存储空间中是否存在bootloader程
序,如果第一存储空间存在,表明原存储空间(第二存储空间)中的bootloader程序需要进行升级,则将第一存储空间中的bootloader程序复制到第二存储空间,在复制完成后,擦除第一存储空间中的bootloader程序。可见,通过本技术实施例提供的方案可以对mcu中的bootloader程序进行升级,提高工作效率,降低升级成本。
附图说明
37.图1为本技术实施例提供的一种bootloader程序升级装置结构图;
38.图2为本技术实施例提供的一种bootloader程序升级方法流程图。
具体实施方式
39.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术实施例作进一步详细的说明。
40.为便于理解本技术实施例的技术方案,下面将先对本技术实施例涉及的技术名词进行说明。
41.bootloader是嵌入式系统在加电后执行的第一段代码,在它完成cpu和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境,进而启动操作系统运行。
42.为便于理解,下面将结合附图对本技术实施例提供的bootloader程序升级装置进行说明。
43.参见图1,该图为本技术实施例提供的一种bootloader程序升级装置结构图,如图1所示,该装置100可以包括:引导模块101、bootloader模块102、第一存储空间103以及第二存储空间104。其中,引导模块101和第一存储空间103为额外增加的模块。
44.其中,第一存储空间103,仅用于存储最新版本的bootloader程序。
45.引导模块101,用于在mcu上电或复位后,判断第一存储空间是否存在bootloader程序。如果第一存储空间103存在bootloader程序,说明需要对第二存储空间104中的bootloader程序进行更新。具体地,引导模块101,从第一存储空间103中读取升级标志字段,通过该升级标志字段来确定第一存储空间103是否存在最新版本的bootloader程序。当升级标志字段为第一预设阈值时,确定第一存储空间存在bootloader程序;当升级标志字段为第二预设阈值时,确定第一存储空间不存在bootloader程序。其中,第一预设阈值和第二预设阈值可以根据实际需求进行设备。例如,第一预设阈值为1,第二预设阈值为0。
46.引导模块还101,还用于在确定第一存储空间103存在bootloader程序时,将bootloader程序复制到第二存储空间104。为避免下次mcu重新上电或复位后,由于第一存储空间中的bootloader程序的版本为发生变化,而重新对第二存储空间的bootloader程序进行更新,而影响bootloader模块的工作,在将第一存储空间103中的bootloader程序复制到第二存储空间104后,将第一存储空间103中的bootloader程序进行擦除。同时,将第一存储空间103中的升级标志字段设置为第二预设阈值。其中,引号模块101,还可以用于对mcu中的应用程序app进行完整性校验。
47.另外,在将第一存储空间中的bootloader程序复制到第二存储空间之前,先将第
二存储空间中的bootloader程序删除。
48.在完成复制操作后,bootloader模块102,将执行第二存储空间中的bootloader程序,以完成相关应用的初始化。
49.需要说明的是,本实施例中第一存储空间103仅用于存储最新版本的bootloader程序,不许开发任何软件逻辑。也就是说,bootloader模块在运行bootloader程序时,仅执行第二存储空间中的bootloader程序。
50.在一种具体的实现方式中,当确定第一存储空间103不存在bootloader程序且引导模块101接收到升级请求时,引导模块101,还用于判断当前接收的升级请求是否为bootloader程序升级请求。如果是,则控制bootloader模块执行第二存储空间中的bootloader程序,以触发最新版本的bootloader程序的下载;引导模块101,还用于将下载的最新版本的bootloader程序存储在第一存储空间103。
51.需要说明的是,mcu中任何类型的程序升级,均需要运行bootloader程序,因此在对自身进行升级时,也需要bootloader模块运行第二存储空间中的bootloader程序。在将最新版本的bootloader程序存在第一存储空间后,还需要修改升级标志字段的值,已将该升级标志字段修改为第一预设阈值,以便在mcu重新上电或复位时,对第二存储空间的bootloader程序进行升级。
52.其中,当引导模块所接收的升级请求非bootloader程序升级请求时,表明该升级请求为应用程序升级请求,则引导模块101,还用于控制bootloader模块运行第二存储空间中的bootloader程序,以对最新版本的应用程序进行下载,进而完成应用程序的升级。其中,mcu中的应用程序用于实现mcu的正常功能。
53.需要说明的是,在bootloader模块中下载升级软件时,出现断电、复位或者下载中断等情况,由于第二存储空间中的bootloader程序不受影响,当mcu重新启动时,bootloader模块将继续执行下载操作。不会影响重新下载。另外,在引导模块将第一存储空间中的bootloader程序拷贝到第二存储空间过程中,出现断电或者复位,由于未完成拷贝操作不会执行擦除操作,从而不会影响第一存储空间中bootloader程序的完整性,mcu再次启动引导模块会继续升级bootloader程序,直到第一存储空间中的bootloader程序成功拷贝到第二存储空间,才会擦除第一存储空间中的bootloader程序,从而保证bootloader程序升级成功。
54.基于上述装置,下面将结合附图对本技术实施例提供的bootloader程序升级方法进行说明。
55.参见图2,该图为本技术实施例提供的一种bootloader程序升级方法流程图,如图2所示,该方法可以包括:
56.s201:判断第一存储空间中是否存在bootloader程序,如果存在,则执行s202;如果不存在,则执行s204。
57.本实施例中,在mcu上电或复位后,引导模块判断第一存储空间是否存在bootloader程序。其中,第一存储空间仅用于存储最新版本的bootloader程序。也就是,在mcu上电或复位后,先执行引导模块,以由引导模块判断第一存储空间是否存在bootloader程序,如果存在,则执行s202;否则,执行s204。具体地,引导模块在执行时,可以从第一存储空间读取升级标志字段;在升级标志字段为第一预设阈值时,确定第一存储空间存在
bootloader程序,进而执行s202。
58.s202:将第一存储空间中的bootloader程序复制到第二存储空间。
59.在确定出第一存储空间存在bootloader程序时,表明需要对第二存储空间中的bootloader程序进行更新,则将第一存储空间的bootloader程序复制到第二存储空间。其中,第二存储空间的bootloader程序为实现bootloader功能所需执行的bootloader程序。
60.需要说明的是,在将第一存储空间中的bootloader程序复制到第二存储空间之前,需将第二存储空间中旧版本的bootloader程序删除,进而再将最新版本的bootloader程序复制到第二存储空间。
61.s203:擦除第一存储空间中的bootloader程序。
62.在将第一存储空间中的bootloader程序复制到第二存储空间后,将第一存储空间中的bootloader程序,避免mcu再次上电或复位时,重复执行复制操作。同时,还可以将第一存储空间中的升级标志字段由第一预设阈值修改为第二预设阈值。
63.s204:判断当前接收的升级请求是否为bootloader程序升级请求,如果是,则执行s205;否则,执行s207。
64.在第一存储空间不存在bootloader程序且当前接收到升级请求时,判断当前所接收的升级请求是否为bootloader程序升级请求,如果是,则执行s205,以通过运行第二存储空间中的bootloader程序来下载最新版本的bootloader程序。如果所接收的升级请求不是bootloader程序升级请求,则该升级请求为mcu中应用程序的升级,则执行s207,运行第二存储空间中的bootloader程序,以触发最新版本的应用程序下载。
65.s205:运行第二存储空间中的bootloader程序,以触发最新版本的bootloader程序下载。
66.需要说明的是,在执行最新版本的bootloader程序下载过程中,出现断电、复位或下载中断,由于第二存储空间仍存在bootloader程序,当mcu重新启动时,会继续执行下载操作。
67.s206:将下载的最新版本的bootloader程序存储在第一存储空间。
68.在下载最新版本的bootloader程序后,将该最新版本的bootloader程序存储在第一存储空间。同时,将第一存储空间中的升级标志字段设置为第一预设阈值。
69.s207:运行第二存储空间中的bootloader程序,以触发最新版本的应用程序下载。
70.在一种具体的实现方式中,在将第一存储空间中的bootloader程序复制到第二存储空间过程中出现断电或复位时,将不执行擦除第一存储空间的bootloader程序的操作,以便mcu再次启动时,继续执行升级操作,以将第一存储空间的bootloader程序复制到第二存储空间,保证升级成功。
71.可见,通过本技术实施例,预留了额外的存储空间,即第一存储空间,用于存储最新版本的bootloader程序。当mcu上电或复位后,首先判断第一存储空间中是否存在bootloader程序,如果第一存储空间存在,表明原存储空间(第二存储空间)中的bootloader程序需要进行升级,则将第一存储空间中的bootloader程序复制到第二存储空间,在复制完成后,擦除第一存储空间中的bootloader程序。可见,通过本技术实施例提供的方案可以对mcu中的bootloader程序进行升级,提高工作效率,降低升级成本。
72.另外,本技术实施例提供了一种微控制单元,包括:处理器,存储器;
73.所述存储器,用于存储计算机可读指令或者计算机程序;
74.所述处理器,用于读取所述计算机可读指令或所述计算机程序,以使得所述设备实现如所述的bootloader程序升级方法。
75.本技术实施例提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上所述的bootloader程序升级方法。
76.需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
77.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
78.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
79.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
80.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1