bootloader升级方法、装置、计算机设备及存储介质与流程

文档序号:30221753发布日期:2022-05-31 22:28阅读:303来源:国知局
bootloader升级方法、装置、计算机设备及存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种bootloader升级方法、装置、计算机设备及存储介质。


背景技术:

2.现有嵌入式设备中拥有闪存flash和随机存储器ram,但是两者的大小都是有限的。为了支持在线升级,一般都会配套bootloader程序。该bootloader程序能够进行硬件、软件初始化,引导执行应用程序,以及应用程序的升级等。片内flash是支持代码执行的,而且片内flash写入数据之前是需要对其按块进行擦除的,因此,bootloader一般只能用于对应用程序进行升级,不能对bootloader本身进行升级。相关技术中,通常是采用第三方设备上的应用程序来升级bootloader。基于此,如何简化bootloader的升级流程,实现bootloader的自我升级成为了亟待解决的技术问题。


技术实现要素:

3.为解决现有存在的技术问题,本发明实施例提供了bootloder升级方法、装置、计算机设备及存储介质。
4.为达到上述目的,本发明实施例的技术方案是这样实现的:
5.本发明实施例提供了一种bootloader升级方法,应用于嵌入式设备中,所述方法包括:
6.将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,其中,所述第一存储区域内的程序代码基于升级指令进行擦除;
7.获取待升级的bootloader程序;
8.调用所述第二存储区域内的所述指令代码,并执行所述指令代码;
9.基于所述指令代码的执行升级所述bootloader程序;
10.将升级后的bootloader程序存储到所述第一存储区域内。
11.可选的,所述对用于bootloader升级的指令代码存储到第二存储区域,包括:
12.对用于bootloader升级的指令代码添加所述第二存储区域的存储地址。
13.可选的,所述调用所述第二存储区域内的所述指令代码,包括:
14.编译以所述第二存储区域的存储地址为链接的所述指令代码。
15.可选的,所述方法还包括:
16.确定是否检测到bootloader升级指令;
17.所述将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,包括:
18.响应于检测到bootloader升级指令,将所述第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域。
19.可选的,所述方法还包括:
20.响应于未检测到bootloader升级指令,确定是否检测到应用程序的运行指令;响应于检测到应用程序的运行指令,则运行第一存储区域内的应用程序的启动指令,启动所述应用程序;
21.或者,
22.响应于未检测到bootloader升级指令,确定是否检测到应用程序的升级指令;响应于检测到应用程序升级指令,擦除所述第一存储区域内的程序代码,并将待升级的应用程序的代码存储到所述第一存储区域。
23.可选的,所述方法还包括:
24.响应于未检测到所述应用程序升级指令,且未检测到所述应用程序运行指令,则重启所述嵌入式设备的操作系统。
25.可选的,所述将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,包括:
26.将第一存储区域的用于bootloader升级的指令代码拷贝或剪切到所述第二存储区域。
27.本发明实施例还提供了一种bootloader升级装置,应用于嵌入式设备中,所述装置包括:
28.第一存储模块,用于将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,其中,所述第一存储区域内的程序代码基于升级指令进行擦除;
29.获取模块,用于获取待升级的bootloader程序;
30.调用模块,用于调用所述第二存储区域内的所述指令代码,并执行所述指令代码;
31.升级模块,用于基于所述指令代码的执行升级所述bootloader程序;
32.第二存储模块,用于将升级后的bootloader程序存储到所述第一存储区域内。
33.本发明实施例还提供一种计算机设备,包括:处理器和用于存储能够在处理器上运行的计算及程序的存储器,其中所述处理器用于运行所述计算机程序时,实现上述任意所述的bootloader升级方法。
34.本发明实施例还提供一种计算机存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述任意所述的bootloader升级方法。
35.上述实施例所提供的bootloader升级方法、装置、计算机设备以及存储介质,该方法由嵌入式设备执行,通过将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,其中,所述第一存储区域内的程序代码基于升级指令进行擦除;获取待升级的bootloader程序;调用所述第二存储区域的指令代码,并执行所述指令代码;基于所述指令代码的执行升级所述bootloader程序;将升级后的bootloader程序存储到所述第一存储区域内。相比相关技术中,需要利用第三方设备的应用程序来对bootloader进行升级而言,本公开实施例由于会将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域中,从而可以避免基于升级指令对第一存储区域内的针对用于bootloader升级的指令代码的擦除,并调用第二存储区域内的指令代码,完成bootloader的自我升级,从而省去了需要借助第三方设备对bootloader进行升级,简化了bootloader升级流程,提高了bootloader升级效率。
附图说明
36.图1为本发明一实施例所提供的bootloader升级方法的流程示意图;
37.图2为本发明一实施例所提供的bootloader升级方法的场景示意图;
38.图3为本发明一实施例所提供的bootloader升级方法的另一流程示意图;
39.图4为本发明具体实施例所提供的bootloader升级方法的流程示意图;
40.图5为本发明一实施例所提供的bootloader升级装置的结构示意图;
41.图6为本发明一实施例所提供的计算机设备的硬件结构示意图。
具体实施方式
42.以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
43.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
44.以下结合说明书附图及具体实施例对本发明技术方案做进一步的详细阐述。
45.需要说明的是,bootloader是引导加载程序,在嵌入式操作系统中,bootloader是在操作系统内核运行之前运行。在实际应用中,整个系统的加载启动任务是由bootloader来完成。bootloader是嵌入式系统在加电后执行的第一段代码,在它完成cpu和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的存储控件,启动操作系统运行。也就是说,bootloader能够用于包含硬件、软件的初始化、跳转运行应用程序、下载升级包、升级包烧录等。相关技术中,bootloader仅能用于为应用程序等进行升级或者系统的启动等,无法对bootloader自身进行升级。如需要升级bootloader则需要连接第三方设备在特定专用于升级bootloader的应用程序上对bootlloader进行升级。因此,现有的bootloader升级流程繁琐,无法实现bootloader的自我升级。
46.图1为本发明一实施例所提供的bootloader升级方法的流程示意图,该方法由嵌入式设备执行,所述方法包括:
47.步骤101:将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,其中,所述第一存储区域内的程序代码基于升级指令进行擦除;
48.步骤102:获取待升级的bootloader程序;
49.步骤103:调用所述第二存储区域内的所述指令代码,并执行所述指令代码;
50.步骤104:基于所述指令代码的执行升级所述bootloader程序;
51.步骤105:将升级后的bootloader程序存储到所述第一存储区域内。
52.这里,嵌入式设备,可以是安装有嵌入式系统的电子设备,例如,安装有嵌入式系统的遥控器、飞行器、电脑、智能手机、数字电视等。这里的第一存储区域,可以是嵌入式设备的闪存区域flash;这里的第二存储区域,可以是嵌入式设备的随机存储区域ram。
53.在一些实施例中,清参阅图2,图2为本发明一实施例所提供的bootloader升级方法的场景示意图,如图2所示,将第一存储区域内的用于bootloader升级的指令代码存储到
第二存储区域,包括:将第一存储区域内的boot区内的bootloader升级的指令代码存储到第二存储区域。
54.需要说明的是,第一存储区域可以为片内flash,第二存储区域可以为片ram。这里的第一存储区域包括:下载区、运行区以及boot区。boot区用于存放整个bootloader程序,下载区用于存放所下载的待升级应用程序或待升级bootloader,运行区用于存放运行应用程序所需要的相关代码。这里的第二存储区域包括:原ram区和闪存替换区flashreplace,其中原ram区用于存储原ram所存储的代码,闪存替换区则用于存储用于bootloader升级的指令代码。
55.这里,待升级的bootoader程序包括:bootoader升级包。
56.这里用于bootloader升级的指令代码包括但不限于:将bootloader升级包写入第一存储区域的指令代码,或者将bootloader升级包进行识别的指令代码等,所有能够配合bootloader升级包完成升级的一系列指令代码。
57.这里的升级指令包括:bootloader升级指令和/或应用程序升级指令。
58.请再结合图2,可以理解的是,第一存储区域的程序代码基于升级指令进行擦除,包括:第一存储区域中boot区的程序代码基于bootloader升级指令进行擦除,和/或,第一存储区域中运行区的程序代码基于应用程序升级指令进行擦除。
59.基于此,在需要对bootloader进行升级时,由于会擦除掉第一存储区域中boot区内的程序代码,从而使得bootloader无法正常运行。本实施例中,通过将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,并调用第二存储区域内的这些用于bootloader升级的指令代码升级bootloader程序,最后将升级后的bootloader程序存储到第一存储区域内,以便基于升级后的bootloader程序进行应用程序的启动等。如此一来,可以不需要借助连接第三方设备的应用程序对bootloader进行升级,简化了bootloader的升级流程,实现了嵌入式设备内部的对bootloader程序的自我升级。
60.在一些实施例中,所述将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,包括:
61.对用于bootloader升级的指令代码添加所述第二存储区域的存储地址。
62.这里,对用于bootloader升级的指令代码添加所述第二存储区域的存储地址,包括:监测各代码段;当监测到当前代码段为用于bootloader升级的指令代码的情况下,将用于bootloader升级的指令代码添加第二存储区域的存储地址,从而使得该用于bootloader升级的指令代码被存储到第二存储区域中。
63.需要补充的是,在一些实施例中,可以在检测到bootloader升级指令的情况下,启动监测各代码段的流程,从而能够在检测到bootloader升级指令后及时将用于bootloader升级的指令代码存储到第二存储区域中,避免基于bootloader升级指令的擦除。
64.在一些实施例中,所述监测到当前代码段为用于bootloader升级的指令代码,包括:通过监测到代码段的关键代码,确定监测到当前代码段为用于bootloader升级的指令代码。
65.当然,在其他实施例中,也可以定时对用于bootloader升级的指令代码进行第二存储区域的存储地址的添加,以定时将用于bootloader升级的指令代码进行存储。
66.在另一些实施例中,所述所述调用所述第二存储区域内的所述指令代码,包括:
67.编译以所述第二存储区域的存储地址为链接的所述指令代码。
68.如此,通过对用于bootloader升级的指令代码以例如ram首地址进行编译,从而可以在用于bootloader升级的指令代码被存储到第二存储区域内后能够正常执行。
69.请参阅图3,图3为本发明一实施例所提供的bootloader升级方法的另一流程示意图,如图3所示,所述方法还包括:
70.步骤301:确定是否检测到bootloader升级指令;
71.所述步骤101,即所述将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,包括:
72.步骤1011:响应于检测到bootloader升级指令,将所述第一存储区域内的用于bootloader升级的指令代码存储到所述第二存储区域。
73.这里,确定是否检测到bootloader升级指令,可以包括:通过检测到bootloader升级的标识,检测到bootloader升级指令;或者,通过检测到针对bootloader升级的输入操作,检测到bootloader升级指令。
74.本实施例中,通过限定出将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域的时机,从而对用于bootloader升级的指令代码进行有效存储,减少不必要时的存储对第二存储区域的内存消耗。
75.在一些实施例中,所述方法还包括:
76.响应于未检测到bootloader升级指令,确定是否检测到应用程序的运行指令;响应于检测到应用程序的运行指令,则运行第一存储区域内的应用程序的启动指令,启动所述应用程序;
77.或者,
78.响应于未检测到bootloader升级指令,确定是否检测到应用程序的升级指令;响应于检测到应用程序升级指令,擦除所述第一存储区域内的程序代码,并将待升级的应用程序的代码存储到所述第一存储区域。
79.这里,请再参见图2,所述响应于检测到应用程序升级指令,擦除第一存储区域内的程序代码,并将带待升级的应用程序代码存储到所述第一存储区域,包括:响应于检测到应用程序升级指令,擦除第一存储区域内的运行区内的程序代码,并将带待升级的应用程序代码存储到所述第一存储区域的运行区中。这里的待升级的应用程序的代码,包括:应用程序的升级包代码。
80.在另一些实施例中,所述方法还包括:
81.响应于未检测到所述应用程序升级指令,且未检测到所述应用程序运行指令,则重启所述嵌入式设备的操作系统。
82.需要说明的是,这里,如未检测到所述应用程序升级指令,则表明应用程序运行不正常,此时通过重启嵌入式设备的操作系统以修复设备的软件运行。
83.在另一些实施例中,所述步骤101,即所述将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,包括:
84.将第一存储区域的用于bootloader升级的指令代码拷贝或者剪切到所述第二存储区域。
85.如此,通过多种存储方式,可以有效实现对第一存储区域的用于bootloader升级
的代码指令的在第二存储区域的存储。
86.在一些实施例中,所述将升级后的bootloader程序存储到第一存储区域内,包括:将升级后的bootloader程序存储到第一存储区域内,且更新bootloader的升级包标识。其中,bootloader的升级包标识能够用于标识bootloader程序包的版本等,如此通过更新bootloader的升级包标识,能够有利于直观地得到当前使用的bootloader程序包版本。
87.本发明还提供一具体实施例,以进一步理解上述实施例所述的bootoader升级方法。
88.请参阅图4和图2,图4为本发明具体实施例所提供的bootloader升级方法的流程示意图,如图4所示,该方法,包括:
89.步骤41:初始化嵌入式设备的bootloader程序;
90.步骤42:确定是否检测到升级指令,若是,则执行步骤43,若否则执行步骤51;
91.步骤43:下载升级包到下载区;
92.步骤44:拷贝flashreplace代码到ram;
93.步骤45:跳转到ram执行flashreplace代码;
94.步骤46:确定是否检测到bootloader升级指令,若是,则执行47,若否则执行步骤48;
95.步骤47:拷贝bootloader到boot区;
96.步骤48:拷贝应用程序到运行区;
97.步骤49:更新bootloader的升级包标识并重启系统;
98.步骤50:确定应用程序是否运行正常,若是,则执行步骤51,若否,则执行步骤52;
99.步骤51:跳转到运行区执行应用程序;
100.步骤52:重启嵌入式设备的操作系统。
101.如此,本实施例中,让bootloader功能得到进一步的发挥,减少了因需要更新bootloader而进行开盖烧录的工序,提高了效率,同时也使得嵌入式设备后续功能升级更便利。
102.图5为本发明一实施例所提供的bootloader升级装置的结构示意图,如图5所示,由嵌入式设备执行,所述装置包括:
103.第一存储模块501,用于将第一存储区域内的用于bootloader升级的指令代码存储到第二存储区域,其中,所述第一存储区域内的程序代码基于升级指令进行擦除;
104.获取模块502,用于获取待升级的bootloader程序;
105.调用模块503,用于调用所述第二存储区域内的所述指令代码,并执行所述指令代码;
106.升级模块504,用于基于所述指令代码的执行升级所述bootloader程序;
107.第二存储模块505,用于将升级后的bootloader程序存储到所述第一存储区域内。
108.在一些可选的实施例中,所述第一存储模块501,还用于:
109.对用于bootloader升级的指令代码添加所述第二存储区域的存储地址。
110.在一些可选的实施例中,所述第一存储模块501,还用于:
111.编译以所述第二存储区域的存储地址为链接的所述指令代码。
112.在一些可选的实施例中,所述装置,还包括:
113.第一确定模块,用于确定是否检测到bootloader升级指令;
114.所述第一存储模块501,还用于:
115.响应于检测到bootloader升级指令,将所述第一存储区域内的用于bootloader升级的指令代码存储到所述第二存储区域。
116.在一些可选的实施例中,所述装置还包括:
117.第二确定模块,用于响应于未检测到bootloader升级指令,确定是否检测到应用程序的运行指令;响应于检测到应用程序的运行指令,则运行第一存储区域内的应用程序的启动指令,启动所述应用程序;
118.或者,
119.第三确定模块,用于响应于未检测到bootloader升级指令,确定是否检测到应用程序的升级指令;响应于检测到应用程序升级指令,擦除所述第一存储区域内的程序代码,并将待升级的应用程序的代码存储到所述第一存储区域。
120.在一些可选的实施例中,所述装置还包括:
121.重启模块,用于响应于未检测到所述应用程序升级指令,且未检测到所述应用程序运行指令,则重启所述嵌入式设备的操作系统。
122.在一些可选的实施例中,所述第一存储模块501,还用于:
123.将第一存储区域的用于bootloader升级的指令代码拷贝或者剪切到所述第二存储区域。
124.这里需要指出的是:以上bootloader升级装置项的描述,与上述bootloader升级方法项描述是类似的,同方法的有益效果描述,不做赘述。对于本发明轨道导航装置的实施例中未披露的技术细节,请参照本发明bootloader升级方法的实施例的描述。
125.如图6所示,本发明实施例还提供了一种计算机设备,所述计算机设备包括存储器62、处理器61及存储在存储器62上并可在处理器61上运行的计算机指令;所述处理器61执行所述指令时实现应用于所述bootloader升级方法的步骤。
126.在一些实施例中,本发明实施例中的存储器62可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本文描述的系统和方法的存储器62旨在包括但不限于这些和任意其它适合类型的存储器。
127.而处理器61可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器31中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器31可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用
集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器62,处理器61读取存储器62中的信息,结合其硬件完成上述方法的步骤。
128.在一些实施例中,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
129.对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
130.本发明又一实施例提供了一种计算机存储介质,该计算机可读存储介质存储有可执行程序,所述可执行程序被处理器61执行时,可实现应用于所述bootloader升级方法的步骤。例如,如图1至图3任意所示的方法中的一个或多个。
131.在一些实施例中,所述计算机存储介质可以包括:u盘、移动硬盘、只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
132.需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
133.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1