CN111459508A - 一种BootLoader自升级的方法及*** - Google Patents
一种BootLoader自升级的方法及*** Download PDFInfo
- Publication number
- CN111459508A CN111459508A CN202010231994.3A CN202010231994A CN111459508A CN 111459508 A CN111459508 A CN 111459508A CN 202010231994 A CN202010231994 A CN 202010231994A CN 111459508 A CN111459508 A CN 111459508A
- Authority
- CN
- China
- Prior art keywords
- area
- boot
- loader
- program
- flag
- 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 33
- 230000009191 jumping Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function 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
Images
Classifications
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
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
本发明公开了一种BootLoader自升级的方法及***,方法包括:运行开始启动程序区域中的程序,判断BT标志是否为0或1;当BT标志为1时,将备份BT程序区域中的代码拷贝至正常BT程序区域,将运行标志区域中的BT标志设置为0,运行正常BT程序区域中的程序;判断升级标志是否为0或1;当升级标志为1时,判断升级区域是否为BT的flash区域和/或应用程序的flash区域;当为BT的flash区域时,擦除备份BT程序区域的flash区域,并写入新的BT程序代码;将BT标志设置为1,将升级标志设置为0,返回再次运行开始启动程序区域中的程序。本发明能够简单快捷的实现BT的自升级。
Description
技术领域
本发明涉及电子产品软件升级技术领域,尤其涉及一种BootLoader自升级的方法及***。
背景技术
目前,传统汽车电子领域的ECU(Electronic Control Unit,电子控制单元)都是普通单片机,其BootLoader(BT,启动装载)跟嵌入式Linux***的BootLoader不一样,它并不负责***应用启动前的硬件初始化工作,而是独立的程序,仅仅负责应用程序升级。BootLoader和App都分别会做跟自己有关的初始化,是相互独立的。
目前,传统汽车电子领域的ECU的升级方式都是通过OBD(On Board Diagnostics,车载自动诊断***)接口,通过CAN总线通信的方式,将ECU的升级包传输给ECU的BootLoader,然后由BootLoader进行写flash操作,完成升级。
但是在智能网联汽车时代,ECU软件的升级方式变得多种多样,可以通过OTA(Overthe Air Technology,空中下载技术)远程升级,也可以通过车机对车内的ECU进行升级,也可以采用原始的OBD升级方式。智能网联时代,用户需求变化比较快,软件更新速度也在加快,以满足用户不断追求驾车体验的要求。
由此可以看出,负责ECU升级的BootLoader的重要性就不言而喻了。应用软件的快速迭代需要依赖BootLoader运行的稳定性与可靠性。而一个新的产品或者一个新的项目,有时候为了快速开发出新产品,抢占市场先机,BootLoader的稳定性并不太好,导致升级失败率很高,或者影响到了ECU的休眠电流等等,所以BootLoader也应该像应用软件那样具备升级的功能,俗称BootLoader自升级。然而,传统的ECU很多不具备BootLoader自升级的功能,一旦在整车联调中发现BootLoader的漏洞后,只能换件或者拆机,然后用烧写工具手动更新BootLoader程序,耗时耗力,效率比较低。
因此,如何简单快捷的实现BootLoader的自升级,是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种BootLoader自升级的方法及***,能够简单快捷的实现BootLoader的自升级,有效解决了现有技术手动更新BootLoader程序,带来的耗时耗力,效率低下的问题。
本发明提供了一种BootLoader自升级的方法,应用于电子控制单元,所述电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述方法包括:
运行开始启动程序区域中的程序;
判断运行标志区域中的BootLoader标志是否为0或1;
当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0;
运行所述正常BootLoader程序区域中的程序;
判断运行标志区域中的升级标志是否为0或1;
当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
将所述运行标志区域中的BootLoader标志设置为1;
将所述运行标志区域中的升级标志设置为0;
返回再次运行所述开始启动程序区域中的程序。
优选地,所述方法还包括:
当运行标志区域中的BootLoader标志为0时,跳转至运行所述正常BootLoader程序区域中的程序。
优选地,所述方法还包括:
当运行标志区域中的升级标志为0时,运行应用程序区域中的程序。
优选地,所述方法还包括:
判断是否接收到升级请求,若是,则:
将所述运行标志区域中的升级标志设置为1;
返回再次运行所述开始启动程序区域中的程序。
优选地,所述方法还包括:
当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码。
一种BootLoader自升级的***,应用于电子控制单元,所述电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述***包括:
第一运行模块,用于运行开始启动程序区域中的程序;
第一判断模块,用于判断运行标志区域中的BootLoader标志是否为0或1;
拷贝模块,用于当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
第一设置模块,用于在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0;
第二运行模块,用于运行所述正常BootLoader程序区域中的程序;
第二判断模块,用于判断运行标志区域中的升级标志是否为0或1;
第三判断模块,用于当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
第一更新模块,用于当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
第二设置模块,用于将所述运行标志区域中的BootLoader标志设置为1;
第三设置模块,用于将所述运行标志区域中的升级标志设置为0;
返回模块,用于返回再次运行所述开始启动程序区域中的程序。
优选地,所述***还包括:
跳转模块,用于当运行标志区域中的BootLoader标志为0时,跳转至运行所述正常BootLoader程序区域中的程序。
优选地,所述***还包括:
第三运行模块,用于当运行标志区域中的升级标志为0时,运行应用程序区域中的程序。
优选地,所述***还包括:
第四判断模块,用于判断是否接收到升级请求;
第四设置模块,用于当接收到升级请求时,将所述运行标志区域中的升级标志设置为1;
所述返回模块,还用于返回再次运行所述开始启动程序区域中的程序。
优选地,所述***还包括:
第二更新模块,用于当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码。
综上所述,本发明公开了一种BootLoader自升级的方法,当需要实现自动对BootLoader进行升级时,首先运行开始启动程序区域中的程序,然后判断运行标志区域中的BootLoader标志是否为0或1,当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0,运行所述正常BootLoader程序区域中的程序,判断运行标志区域中的升级标志是否为0或1,当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;将所述运行标志区域中的BootLoader标志设置为1,将所述运行标志区域中的升级标志设置为0,返回再次运行所述开始启动程序区域中的程序。本发明通过将需要更新的BootLoader程序代码写入备份BootLoader程序区域,当需要更新BootLoader时,将写入备份BootLoader程序区域的BootLoader程序代码拷贝至正常BootLoader程序区域,简单快捷的实现了BootLoader的自升级。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种BootLoader自升级的方法实施例1的方法流程图;
图2为本发明公开的一种BootLoader自升级的方法实施例2的方法流程图;
图3为本发明公开的一种BootLoader自升级的***实施例1的结构示意图;
图4为本发明公开的一种BootLoader自升级的***实施例2的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种BootLoader自升级的方法实施例1的方法流程图,所述方法应用于电子控制单元,电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述方法可以包括以下步骤:
S101、运行开始启动程序区域中的程序;
当需要实现BootLoader的自升级时,将电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域;在电子控制单元上电启动后,首先运行开始启动程序区域中的程序。
S102、判断运行标志区域中的BootLoader标志是否为0或1;
在运行开始启动程序区域中的程序时,对运行标志区域中的标志进行检查,判断运行标志区域中的BootLoader标志是否为0或1;其中,BootLoader标志为0时,表征无BootLoader需要更新;BootLoader标志为1时,表征有BootLoader需要更新。
S103、当运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
当运行标志区域中的BootLoader标志为1时,即有BootLoader需要更新时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域,其中,备份BootLoader程序区域中的代码即为需要更新的BootLoader程序代码。
S104、在代码拷贝完成后,将运行标志区域中的BootLoader标志设置为0;
在将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域完成后,将运行标志区域中的BootLoader标志由1设置为0,表征此时无BootLoader需要更新。
S105、运行正常BootLoader程序区域中的程序;
在将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域,以及将运行标志区域中的BootLoader标志设置为0后,跳转至正常BootLoader程序区域,运行正常BootLoader程序区域中的程序,此时更新的BootLoader程序代码已生效。
S106、判断运行标志区域中的升级标志是否为0或1;
在运行正常BootLoader程序区域中的程序时,进一步对运行标志区域中的标志进行检查,判断运行标志区域中的升级标志是否为0或1;其中,升级标志为0,表征电子控制单元无升级需求,升级标志为1,表征电子控制单元有升级需求。
S107、当运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
当运行标志区域中的升级标志为1时,即当电子控制单元有升级需求时,进一步判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域。当升级区域为BootLoader的flash区域时,表明BootLoader需要进行升级;当升级区域为应用程序的flash区域时,表明应用程序需要进行升级。
S108、当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
当升级区域为BootLoader的flash区域时,将备份BootLoader程序区域的flash区域进行擦除,然后将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域。
S109、将运行标志区域中的BootLoader标志设置为1;
将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域后,进一步将运行标志区域中的BootLoader标志设置为1,BootLoader标志为1表征有BootLoader需要更新。
S110、将运行标志区域中的升级标志设置为0,并返回再次执行步骤S101。
将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域后,进一步将运行标志区域中的升级标志设置为0,升级标志为0,表征电子控制单元无升级需求。
在将运行标志区域中的BootLoader标志设置为1以及将运行标志区域中的升级标志设置为0后,对电子控制单元软复位重启,再次运行开始启动程序区域中的程序,执行相应的BootLoader升级操作。
综上所述,在上述实施例中,当需要实现自动对BootLoader进行升级时,首先运行开始启动程序区域中的程序,然后判断运行标志区域中的BootLoader标志是否为0或1,当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0,运行所述正常BootLoader程序区域中的程序,判断运行标志区域中的升级标志是否为0或1,当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;将所述运行标志区域中的BootLoader标志设置为1,将所述运行标志区域中的升级标志设置为0,返回再次运行所述开始启动程序区域中的程序。本发明通过将需要更新的BootLoader程序代码写入备份BootLoader程序区域,当需要更新BootLoader时,将写入备份BootLoader程序区域的BootLoader程序代码拷贝至正常BootLoader程序区域,简单快捷的实现了BootLoader的自升级。
如图2所示,为本发明公开的一种BootLoader自升级的方法实施例2的方法流程图,所述方法应用于电子控制单元,电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述方法可以包括以下步骤:
S201、运行开始启动程序区域中的程序;
当需要实现BootLoader的自升级时,将电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域;在电子控制单元上电启动后,首先运行开始启动程序区域中的程序。
S202、判断运行标志区域中的BootLoader标志是否为0或1;
在运行开始启动程序区域中的程序时,对运行标志区域中的标志进行检查,判断运行标志区域中的BootLoader标志是否为0或1;其中,BootLoader标志为0时,表征无BootLoader需要更新;BootLoader标志为1时,表征有BootLoader需要更新。
S203、当运行标志区域中的BootLoader标志为0时,跳转至步骤S206;
当运行标志区域中的BootLoader标志为0时,即无BootLoader需要更新时,直接跳转至正常BootLoader程序区域,运行正常BootLoader程序区域中的程序。
S204、当运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
当运行标志区域中的BootLoader标志为1时,即有BootLoader需要更新时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域,其中,备份BootLoader程序区域中的代码即为需要更新的BootLoader程序代码。
S205、在代码拷贝完成后,将运行标志区域中的BootLoader标志设置为0;
在将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域完成后,将运行标志区域中的BootLoader标志由1设置为0,表征此时无BootLoader需要更新。
S206、运行正常BootLoader程序区域中的程序;
需要说明的是,在运行正常BootLoader程序区域中的程序时,包括两种情形。其中一种是,在判断运行标志区域中的BootLoader标志为0时,此时直接对当前正常BootLoader程序区域中的程序进行运行;另一种是,在判断运行标志区域中的BootLoader标志为1,在将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域,以及将运行标志区域中的BootLoader标志设置为0后,跳转至正常BootLoader程序区域,运行正常BootLoader程序区域中的程序,此时由于已将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域,因此更新的BootLoader程序代码已生效。即,此时正常BootLoader程序区域中运行的程序为备份BootLoader程序区域中的代码。
S207、判断运行标志区域中的升级标志是否为0或1;
在运行正常BootLoader程序区域中的程序时,进一步对运行标志区域中的标志进行检查,判断运行标志区域中的升级标志是否为0或1;其中,升级标志为0,表征电子控制单元无升级需求,升级标志为1,表征电子控制单元有升级需求。
S208、当运行标志区域中的升级标志为0时,运行应用程序区域中的程序;
当运行标志区域中的升级标志为0时,即当电子控制单元无升级需求时,直接运行应用程序区域中的程序。
S209、判断是否接收到升级请求,若是,则进入S210:
在运行应用程序区域中的程序时,进一步判断是否接收升级请求。
S210、将运行标志区域中的升级标志设置为1,并返回再次执行步骤S201;
在接收到升级请求时,将运行标志区域中的升级标志设置为1,对电子控制单元软复位重启,再次运行开始启动程序区域中的程序,执行相应的升级操作。
S211、当运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
当运行标志区域中的升级标志为1时,即当电子控制单元有升级需求时,进一步判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域。当升级区域为BootLoader的flash区域时,表明BootLoader需要进行升级;当升级区域为应用程序的flash区域时,表明应用程序需要进行升级。
S212、当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
当升级区域为BootLoader的flash区域时,将备份BootLoader程序区域的flash区域进行擦除,然后将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域。
S213、将运行标志区域中的BootLoader标志设置为1;
将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域后,进一步将运行标志区域中的BootLoader标志设置为1,BootLoader标志为1表征有BootLoader需要更新。
S214、当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码;
当升级区域为应用程序的flash区域时,将应用程序的flash区域进行擦除,然后将新的应用程序代码写入应用程序擦除后的flash区域,进一步实现应用程序的更新。
S215、将运行标志区域中的升级标志设置为0,并返回再次执行步骤S201。
在将新的BootLoader程序代码写入备份BootLoader程序区域擦除后的flash区域后,或者在将新的应用程序代码写入应用程序区域擦除后的flash区域后,进一步将运行标志区域中的升级标志设置为0,升级标志为0,表征电子控制单元无升级需求。
在将运行标志区域中的升级标志设置为0后,对电子控制单元软复位重启,再次运行开始启动程序区域中的程序,执行相应的升级操作。
综上所述,本实施例在上述实施例的基础上,进一步实现了当运行标志区域中的BootLoader标志为0时,跳转至运行正常BootLoader程序区域中的程序,当运行标志区域中的升级标志为0时,运行应用程序区域中的程序,判断是否接收到升级请求,若是,则:将运行标志区域中的升级标志设置为1,返回再次运行开始启动程序区域中的程序;以及当升级区域为应用程序的flash区域时,能够擦除应用程序的flash区域,并写入新的应用程序代码,即实现对应用程序的更新。
如图3所示,为本发明公开的一种BootLoader自升级的***实施例1的结构示意图,所述***应用于电子控制单元,电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述***可以包括:
第一运行模块301,用于运行开始启动程序区域中的程序;
第一判断模块302,用于判断运行标志区域中的BootLoader标志是否为0或1;
拷贝模块303,用于当运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
第一设置模块304,用于在代码拷贝完成后,将运行标志区域中的BootLoader标志设置为0;
第二运行模块305,用于运行正常BootLoader程序区域中的程序;
第二判断模块306,用于判断运行标志区域中的升级标志是否为0或1;
第三判断模块307,用于当运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
第一更新模块308,用于当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
第二设置模块309,用于将运行标志区域中的BootLoader标志设置为1;
第三设置模块310,用于将运行标志区域中的升级标志设置为0,并通过返回模块311返回再次运行开始启动程序区域中的程序。
本实施例公开的BootLoader自升级的***的工作原理与上述BootLoader自升级的方法实施例1的工作原理相同,在此不再赘述。
如图4所示,为本发明公开的一种BootLoader自升级的***实施例2的结构示意图,所述***应用于电子控制单元,电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述***可以包括:
第一运行模块401,用于运行开始启动程序区域中的程序
第一判断模块402,用于判断运行标志区域中的BootLoader标志是否为0或1;
跳转模块403,用于当运行标志区域中的BootLoader标志为0时,跳转至第二运行模块406;
拷贝模块404,用于当运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
第一设置模块405,用于在代码拷贝完成后,将运行标志区域中的BootLoader标志设置为0;
第二运行模块406,用于运行正常BootLoader程序区域中的程序;
第二判断模块407,用于判断运行标志区域中的升级标志是否为0或1;
第三运行模块408,用于当运行标志区域中的升级标志为0时,运行应用程序区域中的程序;
第四判断模块409,用于判断是否接收到升级请求;
第四设置模块410,用于当接收到升级请求时,将运行标志区域中的升级标志设置为1,并通过返回模块416返回第一运行模块401;
第三判断模块411,用于当运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
第一更新模块412,用于当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
第二设置模块413,用于将运行标志区域中的BootLoader标志设置为1;
第二更新模块414,用于当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码;
第三设置模块415,用于将运行标志区域中的升级标志设置为0,并通过返回模块416返回第一运行模块401。
本实施例公开的BootLoader自升级的***的工作原理与上述BootLoader自升级的方法实施例1的工作原理相同,在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种BootLoader自升级的方法,其特征在于,应用于电子控制单元,所述电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述方法包括:
运行所述开始启动程序区域中的程序;
判断所述运行标志区域中的BootLoader标志是否为0或1;
当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0;
运行所述正常BootLoader程序区域中的程序;
判断运行标志区域中的升级标志是否为0或1;
当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
将所述运行标志区域中的BootLoader标志设置为1;
将所述运行标志区域中的升级标志设置为0;
返回再次运行所述开始启动程序区域中的程序。
2.根据权利要求1所述的方法,其特征在于,还包括:
当运行标志区域中的BootLoader标志为0时,跳转至运行所述正常BootLoader程序区域中的程序。
3.根据权利要求2所述的方法,其特征在于,还包括:
当运行标志区域中的升级标志为0时,运行应用程序区域中的程序。
4.根据权利要求3所述的方法,其特征在于,还包括:
判断是否接收到升级请求,若是,则:
将所述运行标志区域中的升级标志设置为1;
返回再次运行所述开始启动程序区域中的程序。
5.根据权利要求1所述的方法,其特征在于,还包括:
当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码。
6.一种BootLoader自升级的***,其特征在于,应用于电子控制单元,所述电子控制单元的可编程的存储区划分为:运行标志区域、开始启动程序区域、正常BootLoader程序区域、备份BootLoader程序区域和应用程序区域,所述***包括:
第一运行模块,用于运行开始启动程序区域中的程序;
第一判断模块,用于判断运行标志区域中的BootLoader标志是否为0或1;
拷贝模块,用于当所述运行标志区域中的BootLoader标志为1时,将备份BootLoader程序区域中的代码拷贝至正常BootLoader程序区域;
第一设置模块,用于在代码拷贝完成后,将所述运行标志区域中的BootLoader标志设置为0;
第二运行模块,用于运行所述正常BootLoader程序区域中的程序;
第二判断模块,用于判断运行标志区域中的升级标志是否为0或1;
第三判断模块,用于当所述运行标志区域中的升级标志为1时,判断升级区域是否为BootLoader的flash区域和/或应用程序的flash区域;
第一更新模块,用于当升级区域为BootLoader的flash区域时,擦除备份BootLoader程序区域的flash区域,并写入新的BootLoader程序代码;
第二设置模块,用于将所述运行标志区域中的BootLoader标志设置为1;
第三设置模块,用于将所述运行标志区域中的升级标志设置为0;
返回模块,用于返回再次运行所述开始启动程序区域中的程序。
7.根据权利要求6所述的***,其特征在于,还包括:
跳转模块,用于当运行标志区域中的BootLoader标志为0时,跳转至运行所述正常BootLoader程序区域中的程序。
8.根据权利要求7所述的***,其特征在于,还包括:
第三运行模块,用于当运行标志区域中的升级标志为0时,运行应用程序区域中的程序。
9.根据权利要求8所述的***,其特征在于,还包括:
第四判断模块,用于判断是否接收到升级请求;
第四设置模块,用于当接收到升级请求时,将所述运行标志区域中的升级标志设置为1;
所述返回模块,还用于返回再次运行所述开始启动程序区域中的程序。
10.根据权利要求6所述的***,其特征在于,还包括:
第二更新模块,用于当升级区域为应用程序的flash区域时,擦除应用程序的flash区域,并写入新的应用程序代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010231994.3A CN111459508B (zh) | 2020-03-27 | 2020-03-27 | 一种BootLoader自升级的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010231994.3A CN111459508B (zh) | 2020-03-27 | 2020-03-27 | 一种BootLoader自升级的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459508A true CN111459508A (zh) | 2020-07-28 |
CN111459508B CN111459508B (zh) | 2023-12-01 |
Family
ID=71685731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010231994.3A Active CN111459508B (zh) | 2020-03-27 | 2020-03-27 | 一种BootLoader自升级的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459508B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261089A (zh) * | 2020-09-28 | 2021-01-22 | 中国科学院沈阳自动化研究所 | 一种水下滑翔机远程程序升级的方法及设备 |
CN112631625A (zh) * | 2020-11-20 | 2021-04-09 | 展讯通信(上海)有限公司 | 嵌入式设备的***升级方法、装置及嵌入式设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360877A (zh) * | 2014-10-24 | 2015-02-18 | 同济大学 | 基于Bootloader自更新的ECU固件更新方法 |
CN105511929A (zh) * | 2015-12-31 | 2016-04-20 | 青岛高校信息产业股份有限公司 | 一种设备远程无线升级方法 |
CN106569847A (zh) * | 2016-10-14 | 2017-04-19 | 数源科技股份有限公司 | 一种用于车载***基于移动网络实现iap远程升级的方法 |
CN106933641A (zh) * | 2017-05-16 | 2017-07-07 | 江苏新安电器有限公司 | 一种单片机软件自升级方法和*** |
WO2018120213A1 (zh) * | 2016-12-30 | 2018-07-05 | 深圳配天智能技术研究院有限公司 | 一种固件更新方法及控制器 |
CN109582372A (zh) * | 2018-11-12 | 2019-04-05 | 青岛海信电器股份有限公司 | 一种***的启动方法及装置 |
CN109933348A (zh) * | 2019-01-21 | 2019-06-25 | 宁波普瑞均胜汽车电子有限公司 | 一种电子控制单元中Bootloader的更新方法和装置 |
CN109992280A (zh) * | 2017-12-29 | 2019-07-09 | 深圳市优必选科技有限公司 | 一种嵌入式软件升级的方法、终端装置及存储装置 |
CN110532014A (zh) * | 2019-08-20 | 2019-12-03 | 海信(广东)空调有限公司 | 程序升级方法、装置、终端设备及计算机可读存储介质 |
CN110618825A (zh) * | 2019-08-02 | 2019-12-27 | 惠州市德赛西威汽车电子股份有限公司 | 一种车机Boot Loader的自更新方法 |
-
2020
- 2020-03-27 CN CN202010231994.3A patent/CN111459508B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360877A (zh) * | 2014-10-24 | 2015-02-18 | 同济大学 | 基于Bootloader自更新的ECU固件更新方法 |
CN105511929A (zh) * | 2015-12-31 | 2016-04-20 | 青岛高校信息产业股份有限公司 | 一种设备远程无线升级方法 |
CN106569847A (zh) * | 2016-10-14 | 2017-04-19 | 数源科技股份有限公司 | 一种用于车载***基于移动网络实现iap远程升级的方法 |
WO2018120213A1 (zh) * | 2016-12-30 | 2018-07-05 | 深圳配天智能技术研究院有限公司 | 一种固件更新方法及控制器 |
CN106933641A (zh) * | 2017-05-16 | 2017-07-07 | 江苏新安电器有限公司 | 一种单片机软件自升级方法和*** |
CN109992280A (zh) * | 2017-12-29 | 2019-07-09 | 深圳市优必选科技有限公司 | 一种嵌入式软件升级的方法、终端装置及存储装置 |
CN109582372A (zh) * | 2018-11-12 | 2019-04-05 | 青岛海信电器股份有限公司 | 一种***的启动方法及装置 |
CN109933348A (zh) * | 2019-01-21 | 2019-06-25 | 宁波普瑞均胜汽车电子有限公司 | 一种电子控制单元中Bootloader的更新方法和装置 |
CN110618825A (zh) * | 2019-08-02 | 2019-12-27 | 惠州市德赛西威汽车电子股份有限公司 | 一种车机Boot Loader的自更新方法 |
CN110532014A (zh) * | 2019-08-20 | 2019-12-03 | 海信(广东)空调有限公司 | 程序升级方法、装置、终端设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
王毅: "BootLoader 跳转程序设计及CANBootLoader 实现", pages 63 - 65 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261089A (zh) * | 2020-09-28 | 2021-01-22 | 中国科学院沈阳自动化研究所 | 一种水下滑翔机远程程序升级的方法及设备 |
CN112631625A (zh) * | 2020-11-20 | 2021-04-09 | 展讯通信(上海)有限公司 | 嵌入式设备的***升级方法、装置及嵌入式设备 |
CN112631625B (zh) * | 2020-11-20 | 2022-10-21 | 展讯通信(上海)有限公司 | 嵌入式设备的***升级方法、装置及嵌入式设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111459508B (zh) | 2023-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100506203B1 (ko) | 부팅 및 부트 코드 업데이트 방법 및 시스템 | |
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
CN109933348B (zh) | 一种电子控制单元中Bootloader的更新方法和装置 | |
WO2022007656A1 (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
JP3838840B2 (ja) | コンピュータ | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及*** | |
CN111459508A (zh) | 一种BootLoader自升级的方法及*** | |
US20100058316A1 (en) | Updating Firmware with Multiple Processors | |
CN106020861A (zh) | 一种智能手表的fota升级方法及*** | |
CN109408122B (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN112015447B (zh) | 电子设备的***更新方法及装置、电子设备及存储介质 | |
CN115061713A (zh) | 升级电子设备的方法及装置 | |
CN110597532A (zh) | 一种数据采集模块及其固件升级方法和存储介质 | |
CN105677416A (zh) | 一种Uboot的升级控制***及方法 | |
CN115686554A (zh) | 一种BootLoader程序升级方法及装置 | |
CN114780114A (zh) | 固件升级方法、***、车辆及存储介质 | |
KR100762618B1 (ko) | 이동통신 단말기에서 펌웨어 업그레이드 엔진을업그레이드하는 방법 및 시스템 | |
CN107247642B (zh) | 用于***开机时确定可执行映像文件的方法及装置 | |
KR100876748B1 (ko) | 부트코드 업데이트 방법 | |
US7075518B2 (en) | Method for updating a keyboard controller in a notebook computer | |
JP2006252278A (ja) | マイクロコンピュータ | |
CN113064608A (zh) | 一种ota升级方法、装置、设备和介质 | |
KR100315776B1 (ko) | 구동프로그램내장형하드웨어및장착방법 | |
CN115480795A (zh) | 一种支持休眠功能的车载ecu控制单元的升级方法及*** |
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 | ||
CB02 | Change of applicant information |
Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020 Applicant after: Beijing Jingwei Hirain Technologies Co.,Inc. Address before: 8 / F, block B, No. 11, Anxiang Beili, Chaoyang District, Beijing 100101 Applicant before: Beijing Jingwei HiRain Technologies Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |